Difuzați videoclipurile dvs. pe YouTube XNUMX/XNUMX

În ultimul timp, ca hobby, am filmat prelegeri ale unui psiholog pe care îl cunosc. Editez materialul și îl public pe site-ul meu. Acum o lună, mi-a venit ideea să organizez o difuzare 24/7 a acestor prelegeri pe YouTube. Un fel de „canal TV” tematic dedicat creșterii personale.

Știu să fac o emisiune obișnuită. Dar cum să faci astfel încât să fie o difuzare de fișiere video? Așa că funcționează 24/7, este flexibil, cât mai autonom și în același timp nu depinde în niciun fel de computerul meu de acasă. Asta a trebuit să aflu.

Difuzați videoclipurile dvs. pe YouTube XNUMX/XNUMX

A durat câteva zile pentru a găsi o soluție. Am studiat multe forumuri și diverse manuale fără de care emisiunea mea pur și simplu nu ar fi funcționat. Și acum că farsa este un succes, simt nevoia să-mi împărtășesc soluția. Așa a apărut acest articol.

Pe scurt, soluția finală a fost următoarea: VPS + ffmeg + script bash. Sub tăietură, descriu pașii făcuți și vorbesc despre capcanele care au fost descoperite la organizarea difuzării.

Pasul 1 – de unde va veni emisiunea?

La început, a fost necesar să se decidă de unde va fi emisiunea și unde va fi sursa ei. Primul lucru care mi-a venit în minte a fost de pe computerul de acasă. Colectați videoclipuri într-o listă de redare și începeți să le redați în orice player video. Apoi capturați imaginea de pe ecran și difuzați-o pe YouTube. Dar am respins aproape imediat această opțiune pentru că... Pentru a-l implementa, trebuie să ții computerul de acasă în permanență pornit, ceea ce înseamnă zgomot de la răcitoare chiar și pe timp de noapte și consum crescut de energie electrică (+100-150 kWh în fiecare lună). Și se dovedește că nu veți putea folosi computerul de acasă în timpul difuzării. orice mișcare a mouse-ului va fi vizibilă în difuzare.

Apoi am început să mă uit în lateral servicii cloud. Căutam un serviciu gata făcut în care să îmi încarc videoclipurile sau, de exemplu, să inserez link-uri către videoclipuri de pe YouTube și totul să fie împachetat într-o singură difuzare non-stop. Dar nu am găsit nimic potrivit. Poate nu am căutat bine. Singurul lucru care se potrivește cu funcționalitatea este restream.io, un serviciu care ajută la difuzarea simultană pe mai multe platforme. Se pare că vă permit să vă încărcați propriile videoclipuri. Dar acest serviciu a fost creat în scopuri complet diferite și se așteaptă ca difuzarea să dureze doar câteva ore. Cred că dacă prin acest serviciu s-ar putea organiza o emisiune non-stop, atunci s-ar trage în zeci, sau chiar sute de dolari pe lună. Dar tot am vrut să organizez emisiunea fie gratuit, fie cu investiții financiare minime.

A devenit clar că pentru difuzare era necesar sau dispozitiv separat sau chiar un computer separat. Mă gândeam la ceva de genul Raspberri Pi. Si ce? Nu are frigider. Am înregistrat videoclipul pe o unitate flash, am conectat cablul Ethernet și l-am lăsat undeva într-un loc retras și l-am difuzat. Opțiune. Dar nu aveam nici placa în sine și nici experiență de lucru cu ea, așa că am refuzat și această opțiune.

Drept urmare, am dat peste o anumită discuție în care au discutat despre creație propriul server emisiuni. Nu era exact ceea ce căutam, dar mi-a venit ideea principală - poți folosi un server! În acea discuție, s-a sugerat să folosiți o combinație de VPS + nginx + OBS. A devenit clar că această combinație mi se poate potrivi și mie. Singurul lucru care m-a derutat a fost că nu administrasem niciodată un server și mi s-a părut că a avea propriul meu server dedicat era confuz și costisitor. Am decis să aflu cât ar costa închirierea unui server cu o configurație minimă și am fost plăcut surprins.

Difuzați videoclipurile dvs. pe YouTube XNUMX/XNUMX

Prețurile sunt indicate în ruble belaruse și acestea sunt doar firimituri. Pentru a înțelege, 8 ruble belaruse înseamnă aproximativ 3.5 dolari sau 240 de ruble rusești. Pentru o lună de utilizare a unui computer cu drepturi depline, care este pornit 24/7 și are acces rapid la internet. Din anumite motive, această descoperire a devenit foarte fericită pentru mine și timp de câteva zile m-am plimbat teribil de fericit, ca un copil care a descoperit rachete spațiale :)

Apropo, am profitat de oferta primului site pe care mi-a dat-o Google pentru interogarea „Închiriere VPS”. Poate că există și mai multe soluții bugetare, dar acest preț mi s-a potrivit și nu am căutat mai departe.

Când creați un server, puteți selecta sistemul de operare sub care va rula. Puteți organiza o difuzare pe oricare dintre sistemele enumerate și puteți face o alegere în funcție de preferințele și capacitățile dvs. financiare (pentru un server cu Windows se solicită o taxă suplimentară). Am ales CentOS. Pur și simplu pentru că aveam puțină experiență cu el înainte.

Difuzați videoclipurile dvs. pe YouTube XNUMX/XNUMX

Pasul 2 – configurarea serverului

Primul lucru de care aveți nevoie după crearea unui server este să vă conectați la acesta prin SSH. La început am folosit PuTTy, dar apoi am început să folosesc Secure Shell App, care rulează în Google Chrome. S-a dovedit a fi mai convenabil pentru mine.

Apoi am schimbat numele de gazdă, am configurat sincronizarea timpului pe server, am actualizat sistemul, am schimbat cu iptables... și am făcut o grămadă de alte lucruri, dar nu pentru că era necesar. Eram doar interesat să configurez serverul și mi-a funcționat. Imi place cand merge :)

Iată pașii pe care trebuie să îi urmați:

  1. Conectați depozitul EPEL.
  2. Configurați un server FTP (eu am ales vsftp).
  3. Instalați ffmpeg.

Nu voi da comenzile în detaliu; aceste instrucțiuni sunt mai degrabă conceptuale pentru a transmite planul general de acțiune. Dacă aveți dificultăți cu oricare dintre pași, acestea pot fi rezolvate rapid utilizând o interogare a motorului de căutare, cum ar fi „CentOS connect EPEL” sau „CentOS instalează server FTP”. Și pe primele linkuri puteți găsi instrucțiuni detaliate pas cu pas.

Deci, așa cum am scris mai devreme, aveam nevoie de o combinație de VPS + nginx + OBS. VPS – gata. Dar au început să apară întrebări cu privire la alte puncte. OBS este un program de difuzare, Open Broadcaster Software. Și funcționează numai cu fluxuri, de ex. de exemplu, preia o imagine de pe o cameră web și o difuzează. Sau înregistrarea ecranului. Sau o difuzare deja în curs este redirecționată către un alt site. Dar nu am un flux, am doar un set de fișiere video care trebuie transformate într-un flux.

Am început să sap în această direcție și am dat peste ffmpeg. FFmpeg este un set de biblioteci gratuite și open source care vă permit să înregistrați, să convertiți și să transmiteți în flux audio și video digital într-o varietate de formate.

Și am fost foarte surprins cât de mult poate face ffmpeg. Dacă doriți, va extrage sunetul din videoclip. Dacă doriți, va tăia un fragment din videoclip fără recodare. Dacă doriți, se va converti dintr-un format în altul. Și mult, mult mai mult. Până la punctul în care îi puteți specifica un fișier, acesta îl va converti într-un flux și îl va transmite către YouTube însuși. Gata, lantul este asamblat. Mai rămâne doar să finalizezi nuanțele.

Pasul 3 – configurarea difuzării

Creăm o emisiune pe YouTube. În această etapă avem nevoie doar de link și de cheia de difuzare. În captura de ecran de mai jos, acestea sunt evidențiate cu roșu.

Difuzați videoclipurile dvs. pe YouTube XNUMX/XNUMX

Mai departe încărcați fișiere video pe server, pe care plănuim să-l difuzăm. De fapt, FTP este necesar doar pentru această etapă. Dacă aveți o altă modalitate convenabilă de a încărca fișiere pe server, atunci nu trebuie să configurați un server FTP.

Transmitem fluxul pe YouTube. Pentru a începe difuzarea, trebuie să rulați ffmpeg cu mai multe atribute. Iată cum arată cea mai scurtă comandă pe care am primit-o:

ffmpeg -re -i lecture1.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%КЛЮЧ_ТРАНСЛЯЦИИ%

Decodificarea atributelor-re – indică faptul că fișierul trebuie convertit într-un flux.

-i – indică ce fișier ar trebui redat. Este important ca comanda să fie lansată din același director în care se află fișierul video în sine. În caz contrar, ar trebui să specificați o legătură absolută către fișier, cum ar fi /usr/media/lecture1.mp4.

-f – setează formatul fișierului de ieșire. În cazul meu, se dovedește că ffmpeg îmi convertește fișierul din mp4 în flv din mers.

Și la final indicăm datele pe care le-am luat de pe YouTube pe pagina de setări de difuzare, adică. adresa la care trebuie să transferați datele și cheia de difuzare, astfel încât difuzarea să fie afișată special pe canalul dvs.

Dacă ați făcut totul corect, atunci după rularea acestei comenzi, YouTube va vedea fluxul transmis. Pentru a începe difuzarea, trebuie doar să faceți clic pe butonul „Start Broadcast” de pe YouTube.

Pasul 4 – adăugați autonomie

Felicitări! Acum știți cum să începeți să difuzați dintr-un fișier video. Dar acest lucru nu este suficient pentru difuzarea XNUMX/XNUMX. Este important ca, după ce primul videoclip s-a terminat de redat, următorul să înceapă imediat, iar când toate videoclipurile sunt afișate, redarea începe din nou.

Am venit cu următoarea opțiune: creați un fișier .sh în care am scris o comandă pentru fiecare fișier video și la sfârșit am indicat o comandă pentru a rula din nou același script. Rezultatul este o recursivitate ca aceasta:

Команда 1... (запуск трансляции файла lecture1.mp4)
Команда 2... (запуск трансляции файла lecture2.mp4)
Команда 3... (запуск трансляции файла lecture3.mp4)
bash start.sh

Și, da, a funcționat. Mulțumit de mine, am lansat o emisiune de probă și m-am culcat.

Dimineața mă aștepta o surpriză neplăcută. S-a dovedit că difuzarea a durat doar câteva minute și s-a încheiat aproape imediat când mi-am oprit computerul. Ancheta a arătat că comenzile lansate în acest fel sunt executate în timp ce utilizatorul este conectat la server. De îndată ce m-am deconectat, comenzile pe care le executam au fost întrerupte. Pentru a preveni acest lucru, este suficient în fața echipei bash adauga comanda nohup. Acest lucru va permite procesului de rulare să ruleze indiferent de prezența dumneavoastră.

Versiunea minimă finală a scriptului arată astfel:

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 $

Unde start.sh este fișierul în care este scris acest script. Și acest fișier trebuie să fie localizat în același director cu fișierele video.

Adăugarea unui semn dolar la sfârșit permite procesului să ruleze în fundal, astfel încât să puteți continua să utilizați consola fără a întrerupe difuzarea.

Bonusurile au inclus următoarele bunătăți:

  • Puteți comuta manual redarea fișierelor. Pentru a face acest lucru, trebuie să „omorâți” procesul ffmpeg care rulează în prezent. După aceasta, va începe automat redarea următorului fișier din listă.
  • Videoclipuri noi pot fi adăugate la difuzare fără a opri difuzarea. Doar încărcați videoclipul pe server, adăugați o comandă pentru a rula acest fișier în script și salvați-l. Asta e tot. În următoarea rundă de redare, noul fișier va fi difuzat împreună cu fișierele vechi.

Pasul 5 – personalizați ffmpeg

În principiu, ne-am fi putut opri acolo. Dar am vrut să fac emisiunea puțin mai prietenoasă pentru telespectatori.

Să presupunem că o persoană a mers la emisiune, a început să se uite, i-a plăcut și a vrut să urmărească această prelegere de la început, dar difuzarea nu permite derularea înapoi. Pentru a viziona o prelegere de la început, o persoană va trebui să meargă pe site-ul meu web și să obțină o înregistrare a prelegerii de interes. Cum poți spune ce prelegere îl interesează? Există deja 16 prelegeri pe site și sunt doar mai multe în fiecare săptămână. Cred că nici măcar eu, care am filmat și montat toate aceste prelegeri, nu voi putea determina dintr-un fragment aleatoriu despre ce prelegere este vorba. Prin urmare, este necesar ca fiecare prelegere să fie desemnată cumva.

Opțiunea de a adăuga subtitrări la fișierele video sursă în programul de editare nu mi s-a potrivit. A fost necesar să se asigure că fișierele originale au fost utilizate. Așa că susținerea transmisiei necesită cât mai puține mișcări ale corpului din partea mea.

S-a dovedit că ffmpeg m-ar putea ajuta și cu asta. Are un atribut aparte -vf, care permite plasarea textului peste videoclip. Pentru a adăuga text la un videoclip, trebuie să adăugați următorul fragment la comandă:

-vf drawtext="fontfile=OpenSans.ttf:text='Лекция 13: Психология эмоций. Как создавать радость?':fontsize=26:fontcolor=white:borderw=1:bordercolor=black:x=40:y=670"

Explicarea parametrilorfontfile= – link la fișierul fontului. Fără aceasta, legenda nu va fi adăugată la videoclip. Cel mai simplu mod este să puneți fișierul cu fonturi în același folder cu videoclipul. Sau va trebui să specificați calea completă către fișier.

text= – de fapt, textul în sine care trebuie plasat deasupra videoclipului.

fontsize= – dimensiunea fontului în pixeli.

fontcolor= – culoarea fontului.

borderw= – grosimea conturului din jurul textului în pixeli (am text alb cu un contur negru gros de 1 pixel).

bordercolor= – culoarea conturului.

x= и y= – coordonatele textului. Punct 0;0 se află în colțul din stânga sus. Coordonatele mele sunt selectate în așa fel încât textul să fie plasat în colțul din stânga jos cu o rezoluție video de 1280x720 pixeli.

Arata cam asa:

Difuzați videoclipurile dvs. pe YouTube XNUMX/XNUMX

Pasul 6 – determinați calitatea difuzării

Gata, emisiunea este gata. Emisiuni FFmpeg, fișiere sunt redate, prezența mea nu este necesară pentru difuzare. Chiar și fiecare prelegere este semnată. Arata ca asta e.

Dar încă o nuanță a apărut - am ales configurația minimă a serverului și nu a tras emisiunea. Configurație server: 1 nucleu (cum ar fi 2.2 GHz), 1 gigabyte de RAM, 25 GB SSD. Era suficientă RAM, dar procesorul era aproape complet încărcat la 100% (și uneori chiar 102-103% :) Acest lucru a dus la înghețarea transmisiei la fiecare câteva secunde.Nu e frumos.

Ați putea pur și simplu să luați o configurație mai scumpă cu două nuclee, din fericire, cu tehnologiile cloud, schimbarea configurației serverului are loc prin apăsarea a câteva butoane. Dar am vrut să mă încadrez în capacitatea minimă de configurare. Am început să studiez documentația ffmpeg și da, există și setări acolo care vă permit să reglați încărcarea sistemului.

Calitatea ridicată a imaginii poate fi obținută în două moduri: fie încărcare mare a procesorului, fie trafic ridicat de ieșire. Se pare că cu cât procesorul poate prelua mai multă sarcină, cu atât va fi nevoie de mai puțină lățime de bandă a canalului. Sau nu puteți încărca prea mult procesorul, dar atunci veți avea nevoie de un canal larg cu un spațiu mare de trafic. Dacă există restricții atât la procesor, cât și la dimensiunea canalului/traficului de ieșire, atunci va trebui să reduceți calitatea imaginii, astfel încât difuzarea să se desfășoare fără probleme.

Serverul meu are acces la un canal lat de 10 Mbit/s. Această lățime este exactă. Dar există o limită de trafic - 1 TB pe lună. Prin urmare, pentru a îndeplini restricțiile de trafic, fluxul meu de ieșire nu ar trebui să depășească ~300 KB pe secundă, adică. Rata de biți a fluxului de ieșire nu trebuie să fie mai mare de 2,5 Mbit/s. YouTube, apropo, recomandă difuzarea la acest bitrate.

Pentru a regla sarcina sistemului, ffmpeg folosește abordări diferite. Bine scris despre asta aici. Am ajuns să folosesc două atribute: -crf и -preset.

Factor de rată constantă (CRF) – acesta este un coeficient datorită căruia puteți regla calitatea imaginii. CRF poate avea valori de la 0 la 51, unde 0 este calitatea fișierului sursă, 51 este cea mai proastă calitate posibilă. Se recomandă utilizarea valorilor de la 17 la 28, implicit este 23. Cu un coeficient de 17, videoclipul va fi vizual identic cu originalul, dar din punct de vedere tehnic nu va fi același. Documentația mai precizează că dimensiunea videoclipului final, în funcție de CRF-ul specificat, se modifică exponențial, adică. creșterea coeficientului cu 6 puncte va dubla rata de biți a videoclipului de ieșire.

Dacă utilizați CRF puteți selecta „greutatea” imaginii de ieșire, apoi utilizați presetari (-preset) puteți determina cât de greu va fi încărcat procesorul. Acest atribut are următorii parametri:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium - valoare implicită
  • slow
  • slower
  • veryslow

Cu cât este specificat mai „rapid” parametrul, cu atât sarcina procesorului va fi mai mare.

Am selectat mai întâi o presetare care era practic prea dură pentru procesorul meu, apoi am selectat mai fin încărcarea folosind CRF. În cazul meu, presetarea a funcționat fast, iar pentru crf am stabilit valoarea 24.

Concluzie

Asta e tot. Comanda finală pentru pornirea difuzării a fost următoarea:

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/%КЛЮЧ_ТРАНСЛЯЦИИ%

Au mai rămas doar două puncte nedescrise aici:

1) -c:v libx264 – specificarea unui codec specific pentru lucrul cu fișierul sursă.
2) -g 3 – indicarea explicită a numărului de cadre cheie. În acest caz, se precizează că fiecare al treilea cadru ar trebui să fie un cadru cheie. Valoarea standard este fie 5, fie 8, dar YouTube înjură și cere cel puțin 3.

Puteți vedea ce calitate s-a dovedit a fi transmisia aici.

Încărcarea pe server a fost după cum urmează:

Difuzați videoclipurile dvs. pe YouTube XNUMX/XNUMX

Difuzați videoclipurile dvs. pe YouTube XNUMX/XNUMX

Pe baza datelor de monitorizare, este clar că sarcina procesorului variază de la 70% la 95% și în timpul săptămânii difuzarea nu a ajuns niciodată la 100%. Aceasta înseamnă că cu aceste setări procesorul este suficient.

Încărcând discul, pot spune că aproape că nu este încărcat și un HDD obișnuit ar trebui să fie suficient pentru difuzare.

Dar cantitatea de trafic de ieșire mă îngrijorează. Se pare că fluxul meu de ieșire variază de la 450 la 650 KB pe secundă. Într-o lună, aceasta va fi de aproximativ 1,8 terabytes. Poate fi necesar să cumpărați trafic suplimentar sau să treceți la o configurație cu două nuclee, deoarece... Nu aș dori să reduc calitatea imaginii.

***

Ca urmare, voi spune că configurarea unei astfel de emisiuni de la zero durează aproximativ 1-2 ore. Mai mult, încărcarea videoclipului pe server va dura cea mai mare parte a timpului.

Lansarea unei astfel de emisiuni nu s-a justificat ca instrument de marketing. Poate că, dacă creștem vizionările, astfel încât algoritmii YouTube să preia această transmisie și să înceapă să o arate în mod activ în recomandări, atunci ceva ar funcționa. În cazul meu, în 16 zile de difuzare continuă a fost vizionat de 58 de ori.

Asta este în ordine. Emisiunea se potrivește armonios pe pagina principală a site-ului meu. Acest lucru mi-a oferit oportunitatea de a-mi forma rapid propria opinie despre lector și despre prelegerile în sine.

Și un moment. Este important ca emisiunea să nu încalce drepturile de autor ale nimănui, altfel va fi blocată. Sunt calm în privința emisiunii mele pentru că... Am ales în mod special inserții muzicale cu utilizare gratuită, iar autorul conținutului stă la un computer din apropiere și nu se opune deloc să folosesc conținutul ei :)

Dar dacă aveți un radio care rulează în fundal undeva în emisiunea dvs. sau ați folosit melodia preferată în timpul editării sau ați luat o secvență video dintr-un videoclip muzical, serial TV sau film popular, atunci difuzarea dvs. este în pericol. De asemenea, este important ca difuzarea să poarte cel puțin o încărcare semantică minimă, altfel poate fi blocată ca spam.

***

Asta e tot ce am. Sper că acest manual va fi de folos cuiva. Ei bine, dacă ai ceva de adăugat, scrie, voi citi cu plăcere completările și precizările la articol.

Sursa: www.habr.com

Adauga un comentariu