Vysielajte svoje videá na YouTube XNUMX/XNUMX

V poslednom čase ako hobby natáčam prednášky psychológa, ktorého poznám. Zábery upravím a zverejním na svojej stránke. Pred mesiacom som dostal nápad zorganizovať 24/7 vysielanie týchto prednášok na YouTube. Akýsi tematický „televízny kanál“ venovaný osobnému rastu.

Viem urobiť bežné vysielanie. Ako to však urobiť, aby išlo o vysielanie video súborov? Aby bežal 24/7, bol flexibilný, maximálne autonómny a zároveň nebol nijako závislý od môjho domáceho počítača. Toto som musel zistiť.

Vysielajte svoje videá na YouTube XNUMX/XNUMX

Nájsť riešenie trvalo niekoľko dní. Preštudoval som veľa fór a rôznych manuálov, bez ktorých by moje vysielanie jednoducho nefungovalo. A teraz, keď je žart úspešný, cítim potrebu podeliť sa o svoje riešenie. Takto sa objavil tento článok.

Stručne povedané, konečné riešenie bolo nasledovné: VPS + ffmeg + bash skript. Pod zostrihom popisujem uskutočnené kroky a hovorím o úskaliach, ktoré sa objavili pri organizovaní vysielania.

Krok 1 – odkiaľ bude vysielanie pochádzať?

Hneď na začiatku bolo potrebné rozhodnúť, odkiaľ bude vysielanie a kde bude jeho zdroj. Úplne prvé, čo ma napadlo, bolo z vášho domáceho počítača. Zhromažďujte videá do zoznamu videí a začnite ich prehrávať v ľubovoľnom prehrávači videí. Potom urobte snímku obrazovky a odošlite ju na YouTube. Túto možnosť som však takmer okamžite zavrhol, pretože... Na jeho realizáciu je potrebné mať neustále zapnutý domáci počítač, čo znamená hluk z chladičov aj v noci a zvýšenú spotrebu elektrickej energie (+100-150 kWh každý mesiac). A ukázalo sa, že počas vysielania nebudete môcť používať svoj domáci počítač. každý pohyb myši bude viditeľný vo vysielaní.

Potom som sa začal pozerať na stranu cloudové služby. Hľadal som hotovú službu, kde by som mohol nahrávať svoje videá alebo napríklad vkladať odkazy na videá z YouTube a všetko by sa to zbalilo do jedného nonstop vysielania. Ale nenašiel som nič vhodné. Možno som zle hľadal. Jediná vec, ktorá vyhovuje funkciám, je restream.io, služba, ktorá pomáha vysielať súčasne na niekoľko platforiem. Zdá sa, že vám umožňujú nahrávať vlastné videá. Táto služba však vznikla na úplne iné účely a očakávajú, že vysielanie bude trvať len pár hodín. Myslím si, že ak by sa cez túto službu dalo zorganizovať nepretržité vysielanie, tak by to vystrelilo do desiatok, ba až stoviek dolárov mesačne. Ale aj tak som chcel vysielanie organizovať buď zadarmo, alebo s minimálnymi finančnými investíciami.

Ukázalo sa, že pre vysielanie bolo potrebné resp samostatné zariadenie alebo dokonca samostatný počítač. Myslel som na niečo ako Raspberri Pi. A čo? Nemá chladič. Video som nahral na flash disk, zapojil ethernetový kábel a nechal ho ležať niekde v ústraní a vysielal. Možnosť. Ale nemal som ani samotnú dosku, ani skúsenosti s prácou s ňou, preto som aj túto možnosť odmietol.

V dôsledku toho som narazil na určitú diskusiu, kde diskutovali o tvorbe vlastný server vysielania. Nebolo to presne to, čo som hľadal, ale dostal som hlavnú myšlienku - môžete použiť server! V tejto diskusii bolo navrhnuté použiť kombináciu VPS + nginx + OBS. Ukázalo sa, že táto kombinácia by mohla vyhovovať aj mne. Jediné, čo ma zmiatlo, bolo, že som nikdy nespravoval server a zdalo sa mi, že mať vlastný dedikovaný server je mätúce a drahé. Rozhodol som sa zistiť, koľko by stál prenájom servera s minimálnou konfiguráciou a bol som príjemne prekvapený.

Vysielajte svoje videá na YouTube XNUMX/XNUMX

Ceny sú uvedené v bieloruských rubľoch a sú to len omrvinky. Aby ste pochopili, 8 bieloruských rubľov je asi 3.5 dolára alebo 240 ruských rubľov. Na mesiac používania plnohodnotného počítača, ktorý je zapnutý 24/7 a má rýchly prístup na internet. Z nejakého dôvodu sa pre mňa tento objav stal veľmi radostným a niekoľko dní som chodil strašne šťastný, ako dieťa, ktoré objavilo vesmírne rakety :)

Mimochodom, využil som ponuku prvej stránky, ktorú mi Google dal na dopyt “VPS prenájom”. Možno existuje ešte viac rozpočtových riešení, ale táto cena mi vyhovovala a nehľadal som ďalej.

Pri vytváraní servera si môžete vybrať operačný systém, pod ktorým bude bežať. Môžete zorganizovať vysielanie na ktoromkoľvek z uvedených systémov a vybrať si na základe svojich preferencií a finančných možností (za server s Windows si pýtajú dodatočný poplatok). Vybral som si CentOS. Jednoducho preto, že som s tým predtým nemal veľa skúseností.

Vysielajte svoje videá na YouTube XNUMX/XNUMX

Krok 2 – nastavenie servera

Prvá vec, ktorú potrebujete po vytvorení servera, je pripojiť sa k nemu cez SSH. Najprv som používal PuTTy, ale potom som začal používať aplikáciu Secure Shell, ktorá beží v Google Chrome. Ukázalo sa, že je to pre mňa pohodlnejšie.

Potom som zmenil názov hostiteľa, nastavil synchronizáciu času na serveri, aktualizoval systém, pohral sa s iptables... a urobil veľa iných vecí, ale nie preto, že by to bolo potrebné. Len som mal záujem o nastavenie servera a fungovalo to pre mňa. Milujem, keď sa darí :)

Tu sú kroky, ktoré musíte podniknúť:

  1. Pripojte úložisko EPEL.
  2. Nastavte FTP server (vybral som vsftp).
  3. Nainštalujte ffmpeg.

Nebudem uvádzať príkazy podrobne; tieto pokyny sú skôr koncepčné, aby vyjadrili všeobecný plán činnosti. Ak máte nejaké problémy s niektorým z krokov, možno ich rýchlo vyriešiť pomocou dopytu vyhľadávacieho nástroja, ako napríklad „CentOS connect EPEL“ alebo „CentOS install FTP server“. A na prvých odkazoch nájdete podrobné pokyny krok za krokom.

Takže, ako som už písal, potreboval som kombináciu VPS + nginx + OBS. VPS – pripravené. Ale začali sa vynárať otázky v iných bodoch. OBS je vysielací program, Open Broadcaster Software. A funguje to len so streammi t.j. napríklad zoberie obrázok z webovej kamery a odvysiela ho. Alebo nahrávanie obrazovky. Alebo je už prebiehajúce vysielanie presmerované na inú stránku. Ale nemám stream, mám iba súbor video súborov, ktoré je potrebné zmeniť na stream.

Začal som kopať týmto smerom a narazil som na ffmpeg. FFmpeg je súbor bezplatných a otvorených zdrojových knižníc, ktoré vám umožňujú nahrávať, konvertovať a streamovať digitálny zvuk a video v rôznych formátoch.

A bol som veľmi prekvapený, koľko toho ffmpeg dokáže. Ak chcete, vytiahne zvuk z videa. Ak chcete, vystrihne fragment videa bez prekódovania. Ak chcete, prevedie sa z jedného formátu do druhého. A oveľa, oveľa viac. Do tej miery, že mu môžete špecifikovať súbor, skonvertuje ho na stream a odošle ho samotnému YouTube. To je všetko, reťaz je zostavená. Zostáva len dokončiť nuansy.

Krok 3 – nastavenie vysielania

Vytvárame vysielanie na YouTube. V tejto fáze potrebujeme iba odkaz a vysielací kľúč. Na snímke obrazovky nižšie sú zvýraznené červenou farbou.

Vysielajte svoje videá na YouTube XNUMX/XNUMX

Ďalšie nahrať video súbory na server, ktoré plánujeme vysielať. V skutočnosti je FTP potrebný iba pre túto fázu. Ak máte iný pohodlný spôsob nahrávania súborov na server, nemusíte nastavovať server FTP.

Stream prenášame na YouTube. Ak chcete spustiť vysielanie, musíte spustiť ffmpeg s niekoľkými atribútmi. Takto vyzerá najkratší príkaz, ktorý som dostal:

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

Dekódovanie atribútov-re – označuje, že súbor musí byť skonvertovaný na stream.

-i – označuje, ktorý súbor sa má prehrať. Je dôležité, aby sa príkaz spúšťal z rovnakého adresára, kde sa nachádza samotný video súbor. V opačnom prípade by ste mali zadať absolútny odkaz na súbor, napr /usr/media/lecture1.mp4.

-f – nastavuje formát výstupného súboru. V mojom prípade sa ukázalo, že ffmpeg konvertuje môj súbor z mp4 na flv za behu.

A na konci uvádzame údaje, ktoré sme prevzali z YouTube na stránke nastavení vysielania, t.j. adresu, na ktorú potrebujete preniesť údaje, a kľúč vysielania, aby sa vysielanie zobrazovalo konkrétne na vašom kanáli.

Ak ste urobili všetko správne, po spustení tohto príkazu YouTube uvidí prenášaný stream. Ak chcete spustiť vysielanie, stačí kliknúť na tlačidlo „Spustiť vysielanie“ na samotnom YouTube.

Krok 4 – pridajte autonómiu

Gratulujem! Teraz viete, ako spustiť vysielanie z video súboru. Na XNUMX/XNUMX vysielanie to však nestačí. Je dôležité, aby sa po prehratí prvého videa okamžite spustilo ďalšie a keď sa zobrazia všetky videá, prehrávanie sa spustí znova.

Napadla ma nasledovná možnosť: vytvoriť .sh súbor, do ktorého som napísal príkaz pre každý video súbor a na samom konci som uviedol príkaz na opätovné spustenie toho istého skriptu. Výsledkom je takáto rekurzia:

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

A áno, fungovalo to. Spokojný sám so sebou som spustil skúšobné vysielanie a išiel som spať.

Ráno ma čakalo nemilé prekvapenie. Ukázalo sa, že vysielanie trvalo len pár minút a skončilo sa takmer okamžite, keď som vypol počítač. Vyšetrovanie ukázalo, že takto spustené príkazy sa vykonávajú, keď je používateľ prihlásený na server. Hneď ako som sa odpojil, príkazy, ktoré som spúšťal, boli prerušené. Aby sa to nestalo, stačí pred tímom bash pridajte príkaz nohup. To umožní bežiacemu procesu bežať bez ohľadu na vašu prítomnosť.

Konečná minimálna verzia skriptu vyzerá takto:

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 $

Kde start.sh je súbor, v ktorom je napísaný tento skript. A tento súbor musí byť umiestnený v rovnakom adresári ako video súbory.

Pridanie znaku dolára na koniec umožňuje procesu bežať na pozadí, takže môžete pokračovať v používaní konzoly bez prerušenia vysielania.

Bonusy zahŕňali tieto dobroty:

  • Prehrávanie súborov môžete manuálne prepnúť. Ak to chcete urobiť, musíte „zabiť“ práve spustený proces ffmpeg. Potom sa automaticky spustí prehrávanie nasledujúceho súboru zo zoznamu.
  • Do vysielania je možné pridávať nové videá bez zastavenia vysielania. Stačí nahrať video na server, pridať príkaz na spustenie tohto súboru do skriptu a uložiť ho. To je všetko. V ďalšom kole prehrávania bude nový súbor vysielaný spolu so starými súbormi.

Krok 5 – prispôsobte ffmpeg

V zásade sme sa tam mohli zastaviť. Ale chcel som urobiť vysielanie trochu priateľskejšie pre divákov.

Povedzme, že človek išiel na vysielanie, začal pozerať, páčilo sa mu to a chcel si pozrieť túto prednášku od začiatku, no vysielanie neumožňuje pretáčanie. Ak si chce niekto pozrieť prednášku od začiatku, bude musieť prejsť na moju webovú stránku a získať záznam prednášky, ktorá ho zaujíma. Ako zistíte, ktorá prednáška ho zaujíma? Na stránke je už 16 prednášok a len každý týždeň ich pribúda. Myslím si, že ani ja, ktorý som všetky tieto prednášky natočil a zostrihal, nebudem vedieť z náhodného fragmentu určiť, o akú prednášku ide. Preto je potrebné, aby každá prednáška bola nejako označená.

Možnosť pridať titulky k zdrojovým video súborom v editačnom programe mi nevyhovovala. Bolo potrebné zabezpečiť, aby boli použité pôvodné súbory. Aby podpora vysielania odo mňa vyžadovala čo najmenej pohybov tela.

Ukázalo sa, že ffmpeg mi môže pomôcť aj s týmto. Má špeciálnu vlastnosť -vf, ktorý umožňuje umiestniť text cez video. Ak chcete do videa pridať text, musíte do príkazu pridať nasledujúci fragment:

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

Vysvetlenie parametrovfontfile= – odkaz na súbor písma. Bez toho sa titulok k videu nepridá. Najjednoduchším spôsobom je vložiť súbor písma do rovnakého priečinka ako video. Alebo budete musieť zadať úplnú cestu k súboru.

text= – vlastne samotný text, ktorý je potrebné umiestniť na vrch videa.

fontsize= – veľkosť písma v pixeloch.

fontcolor= - farba písma.

borderw= – hrúbka obrysu okolo textu v pixeloch (mám biely text s čiernym obrysom s hrúbkou 1 pixel).

bordercolor= - farba obrysu.

x= и y= – textové súradnice. Bodka 0;0 sa nachádza v ľavom hornom rohu. Moje súradnice sú vybrané tak, že text je umiestnený v ľavom dolnom rohu s rozlíšením videa 1280x720 pixelov.

Vyzerá to takto:

Vysielajte svoje videá na YouTube XNUMX/XNUMX

Krok 6 – určite kvalitu vysielania

To je všetko, vysielanie je pripravené. FFmpeg vysiela, súbory sa prehrávajú, moja prítomnosť na vysielanie nie je potrebná. Dokonca každá prednáška je podpísaná. Vyzerá to tak.

Ale objavila sa ešte jedna nuansa - vybral som si minimálnu konfiguráciu servera a nevyvolalo to vysielanie. Konfigurácia servera: 1 jadro (napríklad 2.2 GHz), 1 gigabajt RAM, 25 GB SSD. RAM bolo dosť, ale procesor bol takmer úplne vyťažený na 100% (a miestami aj na 102-103% :) To viedlo k zamrznutiu vysielania každých pár sekúnd. Nie je to pekné.

Jednoducho by ste si mohli vziať drahšiu konfiguráciu s dvoma jadrami, našťastie s cloudovými technológiami sa konfigurácia servera zmení stlačením niekoľkých tlačidiel. Ale chcel som sa zmestiť do minimálnej kapacity konfigurácie. Začal som študovať dokumentáciu ffmpeg a áno, sú tam aj nastavenia, ktoré umožňujú regulovať záťaž systému.

Vysoká kvalita obrazu môže byť dosiahnutá dvoma spôsobmi: buď vysokým zaťažením procesora alebo vysokou odchádzajúcou prevádzkou. Ukazuje sa, že čím väčšie zaťaženie môže procesor prijať, tým menšia šírka pásma kanála bude potrebná. Alebo nemôžete zaťažiť procesor príliš veľa, ale potom budete potrebovať široký kanál s veľkou prevádzkovou výškou. Ak existujú obmedzenia týkajúce sa procesora aj veľkosti odchádzajúceho kanála/prenosu, budete musieť znížiť kvalitu obrazu, aby vysielanie prebehlo hladko.

Môj server má prístup ku kanálu s rýchlosťou 10 Mbit/s. Táto šírka je akurát. Existuje však obmedzenie prenosu - 1 TB mesačne. Preto, aby som splnil dopravné obmedzenia, môj odchádzajúce tok by nemal presiahnuť ~300 KB za sekundu, t.j. Bitová rýchlosť odchádzajúceho toku by nemala byť vyššia ako 2,5 Mbit/s. YouTube mimochodom odporúča vysielať pri tejto bitovej rýchlosti.

Na reguláciu zaťaženia systému používa ffmpeg rôzne prístupy. Dobre sa o tom píše tu. Nakoniec som použil dva atribúty: -crf и -preset.

Faktor konštantnej rýchlosti (CRF) – to je koeficient, vďaka ktorému môžete upraviť kvalitu obrazu. CRF môže mať hodnoty od 0 do 51, kde 0 je kvalita zdrojového súboru, 51 je najhoršia možná kvalita. Odporúča sa použiť hodnoty od 17 do 28, predvolená hodnota je 23. Pri koeficiente 17 bude video vizuálne identické s originálom, ale technicky nebude rovnaké. V dokumentácii sa tiež uvádza, že veľkosť výsledného videa sa v závislosti od zadaného CRF mení exponenciálne, t.j. zvýšenie koeficientu o 6 bodov zdvojnásobí bitovú rýchlosť odchádzajúceho videa.

Ak používate CRF, môžete vybrať „hmotnosť“ odchádzajúceho obrázka a potom pomocou predvoľby (-predvoľba) môžete určiť, ako veľmi bude procesor zaťažený. Tento atribút má nasledujúce parametre:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium - predvolená hodnota
  • slow
  • slower
  • veryslow

Čím „rýchlejšie“ je parameter zadaný, tým vyššie bude zaťaženie procesora.

Najprv som vybral predvoľbu, ktorá bola v podstate príliš tvrdá pre môj procesor, a potom som presnejšie vybral záťaž pomocou CRF. V mojom prípade prednastavenie fungovalo fast, a pre crf som sa rozhodol pre hodnotu 24.

Záver

To je všetko. Posledný príkaz na spustenie vysielania bol tento:

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

Zostali tu len dva nepopísané body:

1) -c:v libx264 – určenie špecifického kodeku pre prácu so zdrojovým súborom.
2) -g 3 – explicitné označenie počtu kľúčových snímok. V tomto prípade je špecifikované, že každý tretí rámec by mal byť kľúčový. Štandardná hodnota je buď 5 alebo 8, ale YouTube prisahá a žiada aspoň 3.

Môžete vidieť, aká kvalita vysielania dopadla tu.

Zaťaženie servera bolo nasledovné:

Vysielajte svoje videá na YouTube XNUMX/XNUMX

Vysielajte svoje videá na YouTube XNUMX/XNUMX

Na základe údajov z monitorovania je zrejmé, že zaťaženie procesora sa pohybuje od 70 % do 95 % a počas týždňa vysielanie nikdy nedosiahlo 100 %. To znamená, že pri týchto nastaveniach procesor stačí.

Zaťažením disku môžem povedať, že sa takmer nezaťažuje a na vysielanie by mal stačiť obyčajný HDD.

Znepokojuje ma však množstvo odchádzajúcej premávky. Ukazuje sa, že môj odchádzajúce tok sa pohybuje od 450 do 650 KB za sekundu. Za mesiac to bude približne 1,8 terabajtu. Možno si budete musieť kúpiť ďalšiu prevádzku alebo prejsť na konfiguráciu s dvoma jadrami, pretože... Nerád by som znížil kvalitu obrazu.

***

V dôsledku toho poviem, že nastavenie takéhoto vysielania od začiatku trvá asi 1-2 hodiny. Navyše nahrávanie videa na server zaberie väčšinu času.

Spustenie takéhoto vysielania sa neospravedlňovalo ako marketingový nástroj. Možno, ak zvýšime počet zhliadnutí, aby algoritmy YouTube zachytili toto vysielanie a začali ho aktívne zobrazovať v odporúčaniach, potom by niečo fungovalo. V mojom prípade to bolo za 16 dní nepretržitého vysielania 58-krát.

To je v poriadku. Vysielanie harmonicky zapadá na hlavnú stránku môjho webu. To mi dalo možnosť rýchlo si urobiť vlastný názor na lektora a samotné prednášky.

A jeden moment. Je dôležité, aby vysielanie neporušovalo nikoho autorské práva, inak bude zablokované. O svojom vysielaní som pokojný, pretože... Konkrétne som si vybral hudobné vložky s voľným použitím a autorka obsahu sedí pri neďalekom počítači a vôbec sa nebráni tomu, aby som jej obsah použil :)

Ak vám ale niekde vo vysielaní hrá na pozadí rádio, alebo ste pri strihaní použili svoju obľúbenú skladbu alebo ste nasnímali videosekvenciu z obľúbeného hudobného videa, televízneho seriálu alebo filmu, potom je vaše vysielanie ohrozené. Je tiež dôležité, aby vysielanie prenášalo aspoň minimálnu sémantickú záťaž, inak môže byť zablokované ako spam.

***

To je všetko, čo mám. Dúfam, že tento návod niekomu dobre poslúži. No ak máte čo dodať, napíšte, rád si prečítam doplnenia a upresnenia k článku.

Zdroj: hab.com

Pridať komentár