Diffusez vos vidéos sur YouTube 24h / 24

Récemment, comme passe-temps, je filme des vidéos d'un psychologue familier sur vidéo. Je monte et publie les images sur mon site Web. Il y a un mois, j'ai eu l'idée d'organiser une diffusion 24 heures sur 24 de ces conférences sur YouTube 24/7. Une sorte de «canal» thématique dédié à la croissance personnelle.

Comment faire une diffusion normale, je sais. Mais comment en faire une diffusion de fichiers vidéo? Elle marchait 24h / 24 et 7j / 7, était flexible, aussi autonome que possible et ne dépendait pas en même temps de mon ordinateur personnel. C'était ce que je devais découvrir.



Il a fallu plusieurs jours pour trouver une solution. J'ai étudié de nombreux forums et divers manuels sans lesquels ma diffusion n'aurait tout simplement pas abouti. Et maintenant, quand la farce est un succès, je ressens le besoin de partager ma décision. Cet article est donc apparu.

En bref, la solution finale était la suivante: VPS + ffmeg + script bash . Sous la coupe, je décris les étapes franchies et parle des «pièges» découverts lors de la diffusion.

Étape 1 - d'où ira la diffusion?


Au tout début, il fallait déterminer où se déroulera la diffusion, où se trouvera sa source. La toute première chose qui m'est venue à l'esprit est venue d'un ordinateur personnel . Collectez des vidéos dans une liste de lecture et lisez-les dans n'importe quel lecteur vidéo. Capturez ensuite l'image à l'écran et diffusez-la sur YouTube. Mais j'ai presque immédiatement rejeté cette option. pour le mettre en œuvre, vous devez garder votre ordinateur personnel allumé en permanence, et c'est le bruit des refroidisseurs même la nuit et la consommation d'énergie accrue (+ 100-150 kWh chaque mois). Et il s'avère que vous ne pourrez pas utiliser votre ordinateur personnel pendant la durée de la diffusion. tout mouvement de la souris sera visible dans la diffusion.

Puis j'ai commencé à regarder vers les services cloud. Je cherchais un service prêt à l'emploi où vous pourriez télécharger vos vidéos ou, par exemple, insérer des liens vers des vidéos de YouTube et tout serait regroupé en une seule diffusion non-stop. Mais je n'ai rien trouvé de convenable. Peut-être que je regardais mal. La seule chose qui convient à la fonctionnalité est restream.io, un service qui permet de diffuser simultanément sur plusieurs plates-formes. Ils semblent pouvoir télécharger leurs vidéos. Mais ce service a été créé à des fins complètement différentes et ils s'attendent à ce que la diffusion ne dure que quelques heures. Je pense que si, grâce à ce service, il aurait été possible d'organiser une diffusion 24 heures sur 24, cela aurait atteint des dizaines, voire des centaines de dollars par mois. Mais je voulais quand même organiser la diffusion gratuitement ou avec un investissement financier minimal.

Il est devenu clair que vous devez diffuserun appareil séparé ou même un ordinateur séparé. Penser à quelque chose comme le Raspberri Pi. Et quoi? Il n'a pas de glacière. J'ai enregistré la vidéo sur une clé USB, collé un câble Ethernet et laissé reposer quelque part dans un endroit isolé, elle diffuse. Option. Mais je n'avais ni la planche elle-même ni l'expérience avec elle, j'ai donc également refusé cette option.

En fin de compte, je suis tombé sur une discussion où ils ont discuté de la création de votre propre serveurémissions. Ce n'était pas exactement ce que je cherchais, mais j'ai saisi l'idée principale - vous pouvez utiliser le serveur! Dans cette discussion, ils ont suggéré d'utiliser un tas de VPS + nginx + OBS. Il est devenu clair que ce groupe pouvait me convenir. La seule chose qui m'a dérouté, c'est que je n'ai jamais administré le serveur et il m'a semblé que mon serveur dédié était confus et cher. J'ai décidé de savoir combien cela coûterait de louer un serveur dans la configuration minimale et j'ai été agréablement surpris.

image

Les prix sont en roubles biélorusses et ce ne sont que des miettes. Pour comprendre, 8 roubles biélorusses se situent autour de 3,5 dollars ou 240 roubles russes. Pendant un mois avec un ordinateur à part entière allumé 24h / 24 et 7j / 7 et disposant d'un accès Internet rapide. Pour une raison quelconque, cette découverte a été très joyeuse pour moi, et pendant plusieurs jours j'ai marché terriblement heureux comme un enfant qui a découvert des fusées spatiales :)

Au fait, j'ai profité de l'offre du tout premier site que Google m'a proposé sur demande «Location de VPS». Il y a peut-être encore plus de solutions budgétaires, mais ce prix me convenait et je n'ai pas cherché plus loin.

Lors de la création d'un serveur, vous pouvez sélectionner le système d'exploitation sous lequel il fonctionnera. Sur l'un des systèmes répertoriés, vous pouvez organiser la diffusion et faire un choix en fonction de vos préférences et de vos capacités financières (ils demandent des frais supplémentaires pour un serveur avec Windows). J'ai choisi CentOS. Tout simplement parce que j'avais une petite expérience avec elle.

image

Étape 2 - Configuration du serveur


La première chose dont vous avez besoin après avoir créé le serveur est de vous y connecter via SSH. Au début, j'ai utilisé PuTTy, mais j'ai ensuite commencé à utiliser l'application Secure Shell, qui fonctionne sur Google Chrome. Cela s'est donc avéré plus pratique pour moi.

Ensuite, j'ai changé le nom d'hôte, mis en place la synchronisation de l'heure sur le serveur, mis à jour le système, joué avec iptables ... et fait un tas de choses, mais pas parce que c'était nécessaire. C'était juste intéressant pour moi de configurer le serveur et cela a fonctionné pour moi. J'adore quand ça s'avère :)

Mais ces étapes qui doivent être faites:

  1. Connectez le référentiel EPEL.
  2. Relevez le serveur FTP (j'ai choisi vsftp).
  3. Installez ffmpeg.

Je ne donnerai pas de détails sur l'équipe, cette instruction est plutôt conceptuelle afin de véhiculer un plan d'action général. Si vous rencontrez des difficultés avec l'une des étapes, elles sont rapidement résolues par une requête dans un moteur de recherche comme «CentOS connect EPEL» ou «Installation du serveur FTP CentOS». Et aux premiers liens, vous pouvez trouver des instructions détaillées étape par étape.

Donc, comme je l'ai écrit plus tôt, j'avais besoin d'un tas de VPS + nginx + OBS. VPS - prêt. Mais ici, sur les points restants, des questions ont commencé à se poser. OBS est un programme de diffusion, Open Broadcaster Software. Et cela ne fonctionne qu'avec des threads, c'est-à-dire par exemple, il prend une image d'une webcam et la diffuse. Ou l'enregistrement d'écran. Ou une diffusion déjà en cours redirige vers un autre site. Et je n'ai pas de flux, je n'ai qu'un ensemble de fichiers vidéo dont j'ai besoin pour faire un flux.

Il a commencé à creuser dans cette direction et est tombé sur ffmpeg. FFmpeg est un ensemble de bibliothèques open source gratuites qui vous permettent d'enregistrer, de convertir et de transférer des enregistrements audio et vidéo numériques dans différents formats.

Et j'ai été très surpris de voir ce que ffmpeg peut faire. Si vous le souhaitez, il extraira le son de la vidéo. Si vous le souhaitez, il découpera un fragment de la vidéo sans transcodage. Si vous le souhaitez, il sera converti d'un format à un autre. Et bien plus encore. Jusqu'à ce que vous puissiez lui spécifier un fichier, il le convertira en flux et le transférera lui-même sur YouTube. Tout, la chaîne est assemblée. Il ne reste plus qu'à affiner les nuances.

Étape 3 - Configuration de la diffusion


Nous créons une diffusion sur YouTube. À ce stade, nous n'avons besoin que d'un lien et d'une clé de traduction. Dans la capture d'écran ci-dessous, ils sont surlignés en rouge.

image

Ensuite, téléchargez les fichiers vidéo sur le serveur que nous prévoyons de diffuser. En fait, FTP n'est nécessaire que pour cette étape. Si vous avez un autre moyen pratique de télécharger des fichiers sur le serveur, le serveur FTP peut être ignoré.

Nous diffusons sur YouTube. Pour démarrer la diffusion, vous devez exécuter ffmpeg avec plusieurs attributs. Voici la commande la plus courte que j'ai reçue:

ffmpeg -re -i lecture1.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%_%

Décryptage des attributs
-re – , .

-i – , . , , -. , /usr/media/lecture1.mp4.

-f – . , ffmpeg « » mp4 flv.

, YouTube .. , , , .

Si vous avez tout fait correctement, après avoir exécuté cette commande, YouTube verra le flux transmis. Pour démarrer la diffusion, il vous suffit de cliquer sur le bouton "Démarrer la diffusion" dans YouTube même.

Étape 4 - Ajoutez de l'autonomie


Toutes nos félicitations! Vous savez maintenant comment démarrer la diffusion à partir d'un fichier vidéo. Mais cela ne suffit pas pour une diffusion 24 heures sur 24. Il est important qu'après la fin de la lecture de la première vidéo, la suivante démarre immédiatement et lorsque toutes les vidéos sont affichées, la lecture recommence.

Je suis venu avec l'option suivante: créer un fichier .sh dans lequel j'ai enregistré une commande pour chaque fichier vidéo et à la fin indiqué une commande pour redémarrer le même script. Il s'est avéré une sorte de récursivité:

 1... (   lecture1.mp4)
 2... (   lecture2.mp4)
 3... (   lecture3.mp4)
bash start.sh

Et oui, ça a marché. Moi, satisfait de moi, j'ai commencé une émission test et je me suis endormi.

Une mauvaise surprise m'attendait le matin. Il s'est avéré que l'émission n'a duré que quelques minutes et s'est terminée presque immédiatement lorsque j'ai éteint mon ordinateur. L'enquête a montré que les commandes ainsi lancées sont exécutées alors que l'utilisateur est autorisé sur le serveur. Dès que je me suis déconnecté, l'exécution des commandes que j'ai lancées a été interrompue. Pour éviter que cela ne se produise, il suffit d' bashajouter l'équipe avant l' équipe nohup. Cela permettra au processus en cours de s'exécuter indépendamment de votre présence.

La version minimale finale du script ressemble à ceci:

ffmpeg -re -i lecture1.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%_%
ffmpeg -re -i lecture2.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%_%
ffmpeg -re -i lecture3.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%_%
nohup bash start.sh $

Où start.sh est le fichier dans lequel ce script est écrit. Et ce fichier doit être situé dans le même répertoire que les fichiers vidéo.

L'ajout d'un signe dollar à la fin vous permet de démarrer le processus en arrière-plan afin de pouvoir continuer à utiliser la console sans interrompre la diffusion.

Des bonus, les brioches suivantes se sont révélées:

  • Vous pouvez basculer manuellement la lecture des fichiers. Pour ce faire, vous devez "tuer" le processus ffmpeg en cours d'exécution. Après cela, la lecture du fichier suivant de la liste démarre automatiquement.
  • De nouvelles vidéos peuvent être ajoutées à la diffusion sans arrêter la diffusion. Téléchargez simplement la vidéo sur le serveur, ajoutez la commande pour exécuter ce fichier dans le script, enregistrez-la. Et c'est tout. Lors de la prochaine lecture, le nouveau fichier sera déjà diffusé avec les anciens fichiers.

Étape 5 - Configurer ffmpeg


Sur ce point, en principe, on pourrait s'arrêter. Mais je voulais rendre l'émission un peu plus conviviale pour le public.

Supposons qu'une personne se rende à l'émission, commence à la regarder, qu'elle l'aime et veuille regarder cette conférence depuis le début, et que l'émission n'inclut pas le rembobinage. Pour visualiser une conférence depuis le début, une personne devra se rendre sur mon site Web et obtenir un enregistrement de la conférence d'intérêt. Et comment comprendre quelle conférence l'intéresse? Le site compte 16 conférences et chaque semaine il n'y en a plus. Je pense que même moi, qui ai tourné et édité toutes ces conférences, ne pourra pas déterminer de quelle conférence il s'agit à partir d'un fragment aléatoire. Par conséquent, il est nécessaire que chaque conférence soit désignée d'une manière ou d'une autre.

L'option d'ajouter des sous-titres aux fichiers vidéo source dans le programme de montage ne me convenait pas. Il fallait s'assurer que les fichiers originaux étaient utilisés. Pour soutenir la diffusion exigée de moi le moins de mouvements corporels possible.

Il s'est avéré que ffmpeg peut également m'aider. Il a un attribut spécial -vfqui vous permet de mettre du texte au-dessus de la vidéo. Pour ajouter du texte à la vidéo, vous devez ajouter le fragment suivant à la commande:

-vf drawtext="fontfile=OpenSans.ttf:text=' 13\:  .   ?':fontsize=26:fontcolor=white:borderw=1:bordercolor=black:x=40:y=670"

Décodage des paramètres
fontfile= – . . . .

text= – , , .

fontsize= – .

fontcolor= – .

borderw= – ( 1 ).

bordercolor= – .

x= y= – . 0;0 . , 1280720 .


Cela ressemble à ceci:

image

Étape 6 - déterminer la qualité de diffusion


Tout, l'émission est prête. FFmpeg diffuse, joue des fichiers, ma présence n'est pas nécessaire pour la diffusion. Même chaque conférence est signée. Regardez comme ça.

Mais une autre nuance est apparue - j'ai choisi la configuration minimale du serveur et cela n'a pas entraîné la diffusion. Configuration du serveur: 1 cœur (comme 2,2 GHz), 1 gigaoctet de RAM, 25 Go SSD. Il y avait suffisamment de RAM, mais le processeur est presque complètement entré dans le chargement à 100% (et parfois même à 102-103% :) Cela a conduit au gel de la diffusion une fois toutes les quelques secondes. Laid.

Vous pouvez simplement prendre une configuration plus coûteuse avec deux cœurs, l'avantage est qu'avec les technologies cloud, la configuration du serveur est modifiée en appuyant sur quelques boutons. Mais je voulais m'adapter à la puissance de la configuration minimale. J'ai commencé à étudier la documentation de ffmpeg et oui, il y a aussi des paramètres qui vous permettent d'ajuster la charge sur le système.

Une qualité d'image élevée peut être obtenue de deux manières: soit une charge de processeur élevée, soit un trafic sortant important. Il s'avère que plus le processeur peut supporter la charge, moins le canal aura besoin de bande passante. Ou vous ne pouvez pas charger lourdement le processeur, mais vous aurez alors besoin d'un canal large avec une grande marge de trafic. S'il y a des restrictions à la fois sur le processeur et sur la taille du canal / trafic sortant, alors vous devrez réduire la qualité de l'image pour que la diffusion se passe sans problème.

Mon serveur dispose d'un canal 10 Mbps. Cette largeur est droite avec une marge. Mais il y a une limite de trafic - 1 To par mois. Par conséquent, afin de respecter les restrictions de trafic, mon flux sortant ne doit pas dépasser ~ 300 Ko par seconde, c'est-à-dire le débit binaire du flux sortant ne doit pas dépasser 2,5 Mbps. Au fait, YouTube recommande simplement de diffuser avec un tel débit.

Ffmpeg utilise différentes approches pour réguler la charge sur le système. Bien écrit à ce sujet ici . J'ai fini par utiliser deux attributs: -crfet -preset.

Facteur de taux constant (CRF)- il s'agit d'un coefficient grâce auquel vous pouvez ajuster la qualité de l'image. Le CRF peut varier de 0 à 51, où 0 est la qualité du fichier source, 51 est la pire qualité possible. Il est recommandé d'utiliser des valeurs de 17 à 28, la valeur par défaut est de 23. Avec un ratio de 17, la vidéo sera visuellement identique à l'original, mais techniquement ce ne sera pas le cas. La documentation indique également que la taille de la vidéo finale, en fonction du CRF spécifié, change de façon exponentielle, c'est-à-dire l'augmentation du coefficient de 6 points doublera le débit binaire de la vidéo sortante.

Si vous utilisez CRF, vous pouvez choisir le "poids" de l'image sortante, puis en utilisant des préréglages (-preset), vous pouvez déterminer combien le processeur sera chargé. Les paramètres de cet attribut sont les suivants:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium - valeur par défaut
  • slow
  • slower
  • veryslow

Plus le paramètre est "rapide", plus la charge du processeur est élevée.

J'ai d'abord pris le préréglage, qui était fondamentalement «difficile» pour mon processeur, puis j'ai réglé plus finement la charge à l'aide de CRF. Dans mon cas, le préréglage est apparu fastet pour crf, j'ai opté pour une valeur de 24.

Conclusion


C'est tout. La commande finale pour démarrer la diffusion m'a donné ceci:

ffmpeg -re -i lecture1.mp4 -vf drawtext="fontfile=OpenSans.ttf:text=' 1\:   ':fontsize=26:fontcolor=white:borderw=1:bordercolor=black:x=40:y=670" -c:v libx264 -preset fast -crf 24 -g 3 -f flv rtmp://a.rtmp.youtube.com/live2/%_%

Ici, il n'y a que deux moments non décrits:

1) -c:v libx264- une indication d'un codec spécifique pour travailler avec le fichier source.
2) -g 3- une indication explicite du nombre d'images clés. Dans ce cas, il est indiqué que chaque troisième trame doit être clé. La valeur standard est de 5 ou 8, mais YouTube jure, demande au moins 3.

Quelle qualité de la diffusion s'est révélée ici .

La charge du serveur était la suivante:

image

image

Sur la base des données de surveillance, il est clair que la charge du processeur varie de 70% à 95% et la diffusion n'a jamais atteint 100% en une semaine. Donc, avec ces paramètres, le processeur suffit.

Lors du chargement d'un disque, je peux dire qu'il n'est presque pas chargé et qu'un disque dur ordinaire devrait suffire pour la diffusion.

Mais la quantité de trafic sortant me dérange. Il s'avère que mon flux sortant varie de 450 à 650 Ko par seconde. Pendant un mois, ce sera environ 1,8 téraoctets. Vous devrez peut-être acheter du trafic ou toujours passer à une configuration double cœur car Je ne voudrais pas réduire la qualité de l'image.

***

En conséquence, je dirai que la configuration d'une telle diffusion à partir de zéro prend environ 1 à 2 heures. De plus, la plupart du temps, il faudra télécharger la vidéo sur le serveur.

En tant qu'outil de marketing, le lancement d'une telle émission n'a pas porté ses fruits. Peut-être que si vous finissez les vues de sorte que les algorithmes de YouTube captent cette diffusion et la montrent activement dans les recommandations, alors quelque chose fonctionnera. Dans mon cas, pendant 16 jours de diffusion continue, il a été regardé 58 fois.

Ça va. Diffusez harmonieusement sur la page principale de mon site. Cela s'est avéré une sorte d'opportunité pour se faire rapidement une idée du conférencier et des conférences elles-mêmes.

Et un instant. Il est important que la diffusion ne viole pas le droit d'auteur de quiconque, sinon elle sera bloquée. Je suis calme pour ma diffusion. J'ai spécialement sélectionné des insertions musicales à usage gratuit, et l'auteur du contenu est assis sur un ordinateur voisin et n'est pas du tout contre moi d'utiliser son contenu :)

Mais si vous avez une radio qui joue en arrière-plan quelque part en arrière-plan, ou si vous avez utilisé votre morceau préféré pendant le montage, ou si vous avez pris une vidéo d'un clip, d'une série ou d'un film de musique populaire, votre diffusion est menacée. Il est également important que la diffusion porte au moins une charge sémantique minimale, sinon elle peut être bloquée en tant que spam.

***

C'est tout pour moi. J'espère que ce manuel servira bien quelqu'un. Eh bien, si vous avez quelque chose à ajouter - écrivez, je me ferai un plaisir de lire les ajouts et les clarifications à l'article.

All Articles