Stream i vostri video XNUMX/XNUMX nant'à YouTube

Ricertamenti, cum'è un hobby, aghju filmatu lezioni da un amicu psicologu. Muntu u filmatu è u publicheghjanu nantu à u mo situ web. Un mese fà, aghju avutu l'idea d'urganizà una trasmissione 24 ore à ghjornu di queste lezioni in YouTube 7/XNUMX. Una spezia di "canale TV" tematicu dedicatu à a crescita persunale.

Sò cumu fà una trasmissione normale. Ma cumu fà cusì chì era una trasmissione di schedarii video? Cusì chì corre 24/7, hè flexible, cum'è autonomu pussibule, è à u stessu tempu ùn dipende micca da u mo computer di casa in ogni modu. Questu hè ciò chì aghju avutu per sapè.

Stream i vostri video XNUMX/XNUMX nant'à YouTube

Pigliò parechji ghjorni per truvà una suluzione. Aghju studiatu assai fori è diversi manuali, senza i quali a mo trasmissione ùn saria micca successu. È avà chì u scherzu hà travagliatu, sentu u bisognu di sparte a mo suluzione. Hè cusì chì stu articulu hè ghjuntu.

In breve, a suluzione finale hè a siguenti: VPS + ffmeg + bash script. Sottu u tagliu, discrivu i passi fatti è parlu di i "picchi" chì sò stati scuperti durante l'urganizazione di a trasmissione.

Passu 1 - Da induve anderà a trasmissione?

À u principiu, era necessariu di decisu da induve a trasmissione seria da, induve a so fonte. A prima cosa chì hè vinutu in mente - da l'urdinatore di casa. Cullate i video in una playlist è cuminciate à ghjucà in qualsiasi video player. Allora catturà l'imaghjini da u screnu è trasmette à YouTube. Ma guasi subitu abbandunò sta opzione. per implementà, avete bisognu di mantene u vostru urdinatore in casa constantemente, è questu hè u rumore da i coolers ancu di notte è u cunsumu d'electricità aumentatu (+ 100-150 kWh ogni mese). È risulta chì serà impussibile di utilizà l'urdinatore di casa durante a trasmissione. ogni muvimentu di u mouse serà visibile in a trasmissione.

Allora aghju cuminciatu à guardà luntanu servizii cloud. Cercava un serviziu prontu induve puderaghju cullà i mo video o, per esempiu, inserisce ligami à i video da YouTube è tuttu serà imballatu in una trasmissione senza stop. Ma ùn aghju trovu nunda adattatu. Forse ùn aghju micca cercatu bè. L'unicu ciò chì si adatta à a fattura hè restream.io, un serviziu chì vi aiuta à trasmette à parechje piattaforme à u stessu tempu. Pare ch'elli ponu carichi i so video. Ma stu serviziu hè statu creatu per un scopu completamente diversu, è aspettanu chì a trasmissione durà solu un paru d'ore. Pensu chì, se per mezu di stu serviziu, era pussibule urganizà una trasmissione round-the-clock, allora sparà in decine o ancu centinaie di dollari à u mese. Ma aghju vulsutu ancu urganizà a trasmissione sia per liberu sia cù un minimu investimentu finanziariu.

Hè diventatu chjaru chì sottu a trasmissione avete bisognu o dispusitivu separatu O ancu un urdinatore separatu. Pensu in a direzzione di qualcosa cum'è u Raspberry Pi. È chì ? Ùn hà micca un cooler. Aghju registratu u video nantu à una unità flash USB, cunnessu in un cable Ethernet è lasciate in un locu in un locu isolatu, trasmette. Opzione. Ma ùn aghju micca avutu u bordu stessu, nè l'esperienza di travaglià cun ellu, perchè ancu ricusatu sta opzione.

In u risultatu, aghju scontru una certa discussione induve discutanu a creazione propriu servitore trasmissioni. Ùn era micca esattamente ciò chì cercava, ma aghju avutu l'idea principale - pudete aduprà u servitore! In quella discussione, hè stata suggerita di utilizà un gruppu di VPS + nginx + OBS. Hè diventatu chjaru chì questu fasciu puderia cunvene à mè. L'unica cosa imbarazzante era chì ùn avia mai amministratu un servitore è mi paria chì u mo servitore dedicatu era cunfusu è caru. Aghju decisu di scopre quantu costava per allughjà un servitore in a cunfigurazione minima è era piacevule sorpresa.

Stream i vostri video XNUMX/XNUMX nant'à YouTube

I prezzi sò in rubli bielorussi è questi sò solu briciole. Per capiscenu, 8 rubles bielorussi sò circa 3.5 dollari o 240 rubles russi. Per un mesi di usu di un urdinatore cumpletu chì hè attivatu 24/7 è hà accessu à Internet veloce. Per una certa ragione, sta scuperta hè diventata assai gioia per mè, è per parechji ghjorni marchjò terribilmente cuntentu cum'è un zitellu chì hà scupertu razzi spaziali 🙂

A propositu, aghju apprufittatu di l'offerta di u primu situ chì Google m'hà datu per a dumanda "affittu un VPS". Forse ci sò ancu più suluzioni di bilanciu, ma stu prezzu mi cunvene è ùn aghju micca vistu più.

Quandu creanu un servitore, pudete sceglie u sistema operatore sottu u quale hà da eseguisce. Nantu à qualsiasi di i sistemi listati, pudete urganizà una trasmissione è fà una scelta basatu nantu à e vostre preferenze è capacità finanziarie (per un servitore cù Windows, dumandanu una tarifa supplementaria). Aghju sceltu CentOS. Solu perchè aghju avutu pocu sperienza cun ella prima.

Stream i vostri video XNUMX/XNUMX nant'à YouTube

Passu 2 - Setup Server

A prima cosa dopu à creà un servitore hè di cunnette vi via SSH. Prima aghju utilizatu PuTTy, ma dopu avè principiatu à utilizà l'App Secure Shell, chì funziona in Google Chrome. Chì m'hà fattu sentu più còmode.

Allora aghju cambiatu u nome d'ospitu, aghju stabilitu a sincronizazione di u tempu nantu à u servitore, aghjurnatu u sistema, fiddled with iptables ... è aghju fattu un saccu di altre cose, ma micca perchè era necessariu. Eru solu interessatu à stallà u servitore è aghju fattu. Mi piace quandu funziona 🙂

Eccu i passi da piglià:

  1. Cunnette u repository EPEL.
  2. Configurate un servitore FTP (aghju sceltu vsftp).
  3. Installa ffmpeg.

Ùn daraghju micca i cumandamenti in dettagliu, sta struzzione hè piuttostu cuncettuale per trasmette u pianu generale di azzione. Sì avete qualchì difficultà cù qualsiasi di i passi, sò rapidamente risolti da una quistione in u mutore di ricerca cum'è "CentOS connect EPEL" o "CentOS FTP server installation". È nantu à i primi ligami pudete truvà struzzioni dettagliate passu à passu.

Allora, cum'è aghju scrittu prima, avia bisognu di una mansa di VPS + nginx + OBS. VPS - fattu. Ma nantu à altri punti, e dumande cuminciaru à nasce. OBS hè un prugramma per a trasmissione, Open Broadcaster Software. È funziona solu cù i flussi i.e. per esempiu, piglia una maghjina da una webcam è trasmette. O arregistramentu di u screnu. O redirige una trasmissione digià in corso à un altru situ. È ùn aghju micca un flussu, aghju solu un inseme di fugliali video chì aghju bisognu di fà un flussu.

Aghju cuminciatu à scavà in questa direzzione è scontra ffmpeg. FFmpeg hè un inseme di librerie libere è open source chì vi permettenu di arregistrà, cunvertisce è trasmette in streaming audio è video digitale in diversi formati.

È eru assai surprised quantu ffmpeg pò fà. Se vulete - tira u sonu da u video. Se vulete, taglierà un fragmentu di u video senza transcodificà. Sè vo vulete, si cunvertisce da un furmatu à un altru. È assai, assai di più. Finu à u puntu ch'ellu pò specificà un schedariu, ellu hà da cunvertisce in un flussu è trasfiriri à YouTube stessu. Tuttu, a catena hè assemblata. Resta solu per affinà e sfumature.

Passu 3 - Setup Broadcast

Creemu una trasmissione in YouTube. À questu stadiu, avemu solu bisognu di un ligame è di una chjave di trasmissione. Sò evidenziati in rossu in a screenshot sottu.

Stream i vostri video XNUMX/XNUMX nant'à YouTube

listing Caricà i fugliali video à u servitore, chì avemu intenzione di trasmette. In fatti, FTP hè necessariu solu per questa tappa. Sè vo avete un altru modu còmuda di cullà i schedari à u servore, allura u servore FTP ùn pò esse risuscitatu.

Stream à YouTube. Per inizià a trasmissione, avete bisognu di eseguisce ffmpeg cù parechje attributi. Questu hè u cumandamentu più cortu ch'e aghju avutu:

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

Interpretazione di l'attributi-re - indica chì u schedariu deve esse cunvertitu in un flussu.

-i - indica quale fugliale deve esse ghjucatu. Hè impurtante chì u cumandamentu hè eseguitu da u stessu cartulare induve u schedariu video stessu hè situatu. Altrimenti, duvete specificà un ligame assolutu à u schedariu, cum'è /usr/media/lecture1.mp4.

-f - stabilisce u furmatu di u schedariu di pruduzzioni. In u mo casu, risulta chì ffmpeg cunverte u mo schedariu da mp4 à flv nantu à a mosca.

È à a fine, indichemu i dati chì avemu pigliatu da YouTube nantu à a pagina di paràmetri di trasmissione, i.e. l'indirizzu à quale vulete mandà dati, è a chjave di trasmissione in modu chì a trasmissione hè visualizata nantu à u vostru canale.

Sè avete fattu tuttu bè, allora dopu avè esecutatu stu cumandamentu, YouTube vede u flussu trasmessu. Per inizià a trasmissione, tuttu ciò chì deve fà hè di cliccà u buttone "Start Broadcast" in YouTube stessu.

Passu 4 - Add Autonomy

Felicitazioni! Avà sapete cumu inizià a trasmissione da un schedariu video. Ma questu ùn hè micca abbastanza per una trasmissione in tuttu u ghjornu. Hè impurtante chì dopu à a fine di a riproduzione di u primu video, u prossimu principia immediatamente, è quandu tutti i video sò mostrati, a riproduzione principia di novu.

Aghju ghjuntu cù l'opzione seguente: creà un schedariu .sh, in quale aghju scrittu un cumandamentu per ogni schedariu di video è à a fine hà indicatu u cumandimu per riavvia u listessu script. Questu hà risultatu in una recursione cum'è questu:

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

È, iè, hà travagliatu. Eiu, cuntentu di mè stessu, lanciau una trasmissione di prova è andò in lettu.

A matina aghju avutu una brutta sorpresa. Risultava chì a trasmissione era solu un paru di minuti è finì quasi subitu dopu chì aghju spentu u mo urdinatore. L'investigazione hà dimustratu chì i cumandamenti lanciati in questu modu sò eseguiti mentre l'utilizatore hè autorizatu nantu à u servitore. Appena aghju disconnected, l'esekzione di i cumandamenti chì aghju cuminciatu hè stata interrotta. Per impediscenu questu, hè abbastanza davanti à a squadra bash aghjunghje cumandamentu nohup. Stu vi permetterà u prucessu di corsa à curriri a priscinniri di a vostra prisenza.

A versione minima finale di u script hè cusì:

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 $

Induve start.sh hè u schedariu induve stu script hè scrittu. È stu schedariu deve esse situatu in u stessu cartulare cum'è i schedarii video.

Aghjunghjendu un signu di dollaru à a fine permette à u prucessu di eseguisce in u sfondate per chì pudete cuntinuà aduprà a cunsola senza interrompe a trasmissione.

I bonus seguenti sò stati ottenuti da i bonus:

  • Pudete cambià manualmente a riproduzione di i schedari. Per fà questu, avete bisognu di "ammazzà" u prucessu ffmpeg attualmente in esecuzione. Dopu quì, a riproduzione di u prossimu schedariu da a lista hà da cumincià automaticamente.
  • I novi video ponu esse aghjuntu à a trasmissione senza piantà a trasmissione. Basta à carica u video à u servitore, aghjunghje u cumandamentu per eseguisce stu schedariu in u script, è salvà. È questu hè. Nant'à u prossimu circulu di ghjocu, u novu schedariu serà digià trasmessu à a parità di i vechji schedari.

Passu 5 - persunalizà ffmpeg

Nantu à questu, in principiu, era pussibule di piantà. Ma vulia fà a trasmissione un pocu più amichevule per i visori.

Diciamu chì una persona hè andata à a trasmissione, hà cuminciatu à fighjà, hà piaciutu è vulia vede sta lezzione da u principiu, ma l'emissione ùn furnisce micca un rewinding. Per vede a conferenza da u principiu, una persona duverà andà à u mo situ web è uttene una registrazione di a conferenza d'interessu. E cumu capisce chì lezzione hè interessatu? Ci sò digià 16 lezioni nant'à u situ è ​​ogni settimana ci sò solu più. Pensu chì ancu eiu, chì hà filmatu è editatu tutte queste lezioni, ùn puderà micca determinà da un frammentu aleatoriu chì tipu di cunferenza hè. Per quessa, hè necessariu chì ogni lezione sia in qualchì manera marcata.

L'opzione per aghjunghje didascalia à i fugliali video fonte in u prugramma di editazione ùn mi cunvene micca. Era necessariu di assicurà chì i schedari uriginale sò stati usati. Per sustene a trasmissione hà bisognu di u minimu muvimentu di u corpu pussibule da mè.

Hè risultatu chì ffmpeg pò aiutà ancu cun questu. Hà un attributu speciale -vf, chì permette di mette u testu nantu à u video. Per aghjunghje testu à u video, avete bisognu di aghjunghje u frammentu seguente à u cumandamentu:

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

Decryption di paràmetrifontfile= - ligame à u schedariu di font. Senza questu, l'inscription nantu à u video ùn hè micca aghjuntu. A manera più faciule hè di mette u schedariu di font in u stessu cartulare cù u video. O vi tuccherà à specificà u percorsu sanu à u schedariu.

text= - in fattu, u testu stessu, chì deve esse piazzatu nantu à u video.

fontsize= - dimensione di font in pixel.

fontcolor= - culore di font.

borderw= - u spessore di u contornu intornu à u testu in pixel (aghju testu biancu cù un contornu neru 1 pixel grossu).

bordercolor= - culore di cuntorni.

x= и y= - coordenate di testu. Dot 0;0 situatu in u cantonu superiore manca. I mo coordenate sò scelti in tale manera chì u testu hè piazzatu in u cantonu in basso à manca cù una risoluzione video di 1280x720 pixel.

Sembra cusì:

Stream i vostri video XNUMX/XNUMX nant'à YouTube

Passu 6 - determina a qualità di a trasmissione

Tuttu, a trasmissione hè pronta. Emissioni FFmpeg, i schedari sò ghjucati, a mo prisenza ùn hè micca necessariu per a trasmissione. Ancu ogni cunferenza hè firmata. Sembra chì hè questu.

Ma un'altra sfumatura apparsu - aghju sceltu a cunfigurazione minima di u servitore è ùn hà micca tiratu a trasmissione. Cunfigurazione di u servitore: 1 core (cum'è 2.2 GHz), 1 gigabyte di RAM, 25 GB SSD. Ci era abbastanza RAM, ma u processatore quasi cumpletamente andò in carica à 100% (è qualchì volta ancu à 102-103% 🙂 Questu hà purtatu à a broadcast freezing every few seconds. Ugly.

Puderete solu piglià una cunfigurazione più caru cù dui nuclei, per furtuna, cù tecnulugii di nuvola, cambià a cunfigurazione di u servitore hè pressu un paru di buttoni. Ma vulia mette in a capacità di a cunfigurazione minima. Aghju cuminciatu à studià a documentazione ffmpeg è iè, ci sò ancu paràmetri chì permettenu di aghjustà a carica nantu à u sistema.

L'alta qualità di l'imaghjini pò esse ottenuta in dui maneri: o da una alta carica di processore o da un altu trafficu in uscita. Ci hè chì a più carica chì u processatore pò piglià, u menu larghezza di banda serà necessariu. O ùn pudete micca caricate assai u processatore, ma allora avete bisognu di un canale largu cù un grande marghjenu di trafficu. Se ci sò restrizioni à u processatore è à a dimensione di u canali / trafficu in uscita, allora vi tuccherà à riduce a qualità di l'imaghjini in modu chì a trasmissione vada liscia.

U mo servitore hà un canale di 10 Mbps dispunibule. Questa larghezza hè dritta cù un margine. Ma ci hè un limitu di trafficu - 1 TB per mese. Dunque, per risponde à e restrizioni di u trafficu, u mo flussu in uscita ùn deve micca più di ~ 300 Kb per seconda, i.e. u bitrate di u flussu in uscita deve esse micca più di 2,5 Mbps. YouTube, per via, ricumanda solu di trasmette à questu bitrate.

Per regulà a carica nantu à u sistema, ffmpeg usa diversi approcci. Ben scrittu annantu à questu ccà. Aghju finitu cù dui attributi: -crf и -preset.

Fattore di Tariffa Custante (CRF) - Questu hè u coefficient da quale pudete aghjustà a qualità di l'imagine. CRF pò avè valori da 0 à 51, induve 0 hè a qualità di u schedariu fonte, 51 hè a peghju qualità pussibule. Hè ricumandemu d'utilizà valori da 17 à 28, u predeterminatu hè 23. À un fattore di 17, u video serà visualmente identicu à l'uriginale, ma tecnicamente ùn serà micca. A ducumentazione dichjara ancu chì a dimensione di u video finale, secondu a CRF specificata, cambia in modu esponenziale, i.e. aumentà a ratio di 6 punti duppià u bitrate di u video in uscita.

Sè aduprate CRF pudete piglià u "pesu" di l'imaghjini in uscita, dopu aduprà preset (-preset) pudete stabilisce quantu u processatore serà carricu. Stu attributu hà i seguenti parametri:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium - valore predeterminatu
  • slow
  • slower
  • veryslow

U paràmetru "più veloce" hè specificatu, u più altu serà a carica nantu à u processatore.

Prima aghju pigliatu un preset chì era, in principiu, "troppu duru" per u mo processatore, è poi più finamente hà pigliatu a carica cù CRF. In u mo casu, u preset hè ghjuntu fast, è per crf aghju stabilitu nantu à un valore di 24.

cunchiusioni

Eccu tuttu. U cumandamentu finali per inizià a trasmissione, aghju avutu questu:

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

Ci sò solu dui mumenti micca descritti quì:

1) -c:v libx264 - specificà un codec specificu per travaglià cù u schedariu fonte.
2) -g 3 - indicazione esplicita di u numeru di fotogrammi chjave. In questu casu, hè specificatu chì ogni terzu quadru deve esse un quadru chjave. U valore standard hè 5 o 8, ma YouTube ghjurà, dumandendu almenu 3.

Chì hè a qualità di a trasmissione chì pudete fighjà ccà.

A carica nantu à u servitore hè a siguenti:

Stream i vostri video XNUMX/XNUMX nant'à YouTube

Stream i vostri video XNUMX/XNUMX nant'à YouTube

Basatu nantu à i dati di surviglianza, pò esse vistu chì a carica nantu à u processatore varieghja da 70% à 95%, è per una settimana a trasmissione ùn hà mai righjuntu 100%. Cusì, cù tali paràmetri, u processatore hè abbastanza.

Caricà u discu, possu dì chì ùn hè quasi micca carricu, è un HDD regulare deve esse abbastanza per a trasmissione.

Ma a quantità di trafficu in uscita mi preoccupa. Risulta chì u mo flussu in uscita varieghja da 450 à 650 KB per seconda. Per un mesi serà di circa 1,8 terabytes. Pudete avè da cumprà più trafficu o ancu cambià à una cunfigurazione cù dui core. Ùn vogliu micca calà a qualità di stampa.

***

In u risultatu, diceraghju chì a creazione di una tale trasmissione da zero dura circa 1-2 ore. È a maiò parte di u tempu pigliarà a carica di u video à u servitore.

Cum'è un strumentu di marketing, u lanciamentu di una tale trasmissione ùn hè micca ghjustificatu. Forse, s'ellu aumentate e viste in modu chì l'algoritmi di YouTube piglianu sta trasmissione è cumincianu à mustrà attivamente in cunsiglii, allora qualcosa funziona. In u mo casu, in 16 ghjorni di trasmissione cuntinua, hè stata guardata 58 volte.

Hè bè. Broadcast harmoniously fit in a pagina principale di u mo situ. Aghju avutu una sorta di l'uppurtunità di furmà rapidamente a mo opinione nantu à u lettore è e lezioni stesse.

È un mumentu. Hè impurtante chì a trasmissione ùn viola micca i diritti d'autore di nimu, altrimenti serà bluccatu. Sò calmu per a mo trasmissione. Aghju sceltu specificamente inserti di musica cù usu gratuitu, è l'autore di u cuntenutu hè sedutu à un urdinatore vicinu è ùn mi importa micca di utilizà u so cuntenutu 🙂

Ma s'è vo avete una radiu chì riproduce in un locu in u fondu in a vostra trasmissione, o avete utilizatu a vostra pista preferita durante l'editing, o pigliate una sequenza video da un video musicale, serie o filmu populari, allora a vostra trasmissione hè in risicu. Hè impurtante ancu chì a trasmissione porta almenu una carica semantica minima, altrimenti pò esse bluccata cum'è spam.

***

Hè tuttu per mè. Spergu chì stu manuale serve à qualcunu bè. Ebbè, s'è vo avete qualcosa à aghjunghje - scrivite, seraghju cuntentu di leghje aghjunte è clarificazioni à l'articulu.

Source: www.habr.com

Add a comment