Streamujte svá videa XNUMX/XNUMX na YouTube

V poslední době jako koníčka natáčím přednášky kamaráda psychologa. Záznam namontuji a zveřejním na svém webu. Před měsícem mě napadla myšlenka uspořádat nepřetržité vysílání těchto přednášek na YouTube 24/7. Jakýsi tematický „televizní kanál“ věnovaný osobnímu růstu.

Vím, jak udělat normální vysílání. Ale jak to udělat, aby šlo o vysílání video souborů? Tak, aby běžel 24/7, byl flexibilní, maximálně autonomní a přitom nebyl nijak závislý na mém domácím počítači. Tohle jsem musel zjistit.

Streamujte svá videa XNUMX/XNUMX na YouTube

Trvalo několik dní, než se našlo řešení. Prostudoval jsem mnoho fór a různých příruček, bez kterých by se moje vysílání prostě neuskutečnilo. A teď, když žert zafungoval, cítím potřebu podělit se o své řešení. Tak vznikl tento článek.

Stručně řečeno, konečné řešení je následující: VPS + ffmeg + bash skript. Pod sestřihem popisuji podniknuté kroky a mluvím o „úskalích“, která byla objevena při organizaci vysílání.

Krok 1 – Odkud bude vysílání pocházet?

Na samém začátku bylo potřeba rozhodnout, odkud vysílání bude, kde bude jeho zdroj. Úplně první věc, která mě napadla - z domácího počítače. Shromážděte videa do seznamu videí a začněte je přehrávat v libovolném přehrávači videa. Poté zachyťte snímek z obrazovky a odešlete jej na YouTube. Tuto možnost jsem ale téměř okamžitě zavrhl. k jeho realizaci je potřeba mít neustále zapnutý domácí počítač, a to je hluk z chladičů i v noci a zvýšená spotřeba elektřiny (+ 100-150 kWh každý měsíc). A ukázalo se, že během vysílání nebude možné používat domácí počítač. jakýkoli pohyb myši bude ve vysílání viditelný.

Pak jsem se začal dívat jinam cloudové služby. Hledal jsem hotovou službu, kam bych mohl nahrávat svá videa nebo třeba vkládat odkazy na videa z YouTube a vše by se mi nacpalo do jednoho nonstop vysílání. Ale nic vhodného jsem nenašel. Možná jsem špatně hledal. Jediná věc, která odpovídá návrhu, je restream.io, služba, která vám pomáhá streamovat na více platforem současně. Zdá se, že jsou schopni nahrát svá videa. Tato služba ale vznikla za úplně jiným účelem a předpokládají, že vysílání bude trvat jen pár hodin. Myslím si, že kdyby se přes tuto službu podařilo zorganizovat nepřetržité vysílání, tak by to střílelo do desítek nebo i stovek dolarů měsíčně. Pořád jsem ale chtěl zorganizovat vysílání buď zdarma, nebo s minimální finanční investicí.

Ukázalo se, že pod vysíláním potřebujete popř samostatné zařízení Nebo dokonce samostatný počítač. Myslel jsem směrem k něčemu jako Raspberry Pi. a co? Nemá chladič. Video jsem nahrál na USB flash disk, zapojil ethernetový kabel a nechal někde ležet v ústraní, vysílá. Volba. Ale neměl jsem samotnou desku ani zkušenosti s prací s ní, takže jsem tuto možnost také odmítl.

V důsledku toho jsem narazil na určitou diskuzi, kde diskutovali o tvorbě vlastní server vysílání. Nebylo to přesně to, co jsem hledal, ale dostal jsem hlavní myšlenku - můžete použít server! V této diskusi bylo navrženo použít spoustu VPS + nginx + OBS. Bylo jasné, že tento balíček by mi mohl vyhovovat. Jedinou trapnou věcí bylo, že jsem nikdy nespravoval server a zdálo se mi, že můj vlastní dedikovaný server je matoucí a drahý. Rozhodl jsem se zjistit, kolik by stál pronájem serveru v minimální konfiguraci a byl jsem mile překvapen.

Streamujte svá videa XNUMX/XNUMX na YouTube

Ceny jsou v běloruských rublech a to jsou jen drobky. Pro pochopení, 8 běloruských rublů je asi 3.5 dolaru nebo 240 ruských rublů. Na měsíc používání plnohodnotného počítače, který je zapnutý 24/7 a má rychlý přístup k internetu. Z nějakého důvodu se pro mě tento objev stal velmi radostným a několik dní jsem chodil strašně spokojený jako dítě, které objevilo vesmírné rakety 🙂

Mimochodem, využil jsem nabídky úplně prvního webu, který mi Google dal na dotaz „pronajmout VPS“. Snad existuje ještě více rozpočtových řešení, ale tato cena mi vyhovovala a dál jsem nehledal.

Při vytváření serveru si můžete vybrat operační systém, pod kterým bude spuštěn. Na kterémkoli z uvedených systémů můžete zorganizovat vysílání a vybrat si podle svých preferencí a finančních možností (za server s Windows si vyžádají příplatek). Vybral jsem si CentOS. Už jen proto, že jsem s ní předtím měl málo zkušeností.

Streamujte svá videa XNUMX/XNUMX na YouTube

Krok 2 – Nastavení serveru

První věcí po vytvoření serveru je připojit se k němu přes SSH. Nejprve jsem používal PuTTy, ale pak jsem začal používat Secure Shell App, která běží v Google Chrome. Díky tomu jsem se cítil pohodlněji.

Pak jsem změnil název hostitele, nastavil synchronizaci času na serveru, aktualizoval systém, pohrával si s iptables ... a dělal spoustu dalších věcí, ale ne proto, že by to bylo nutné. Jen mě zajímalo nastavení serveru a udělal jsem to. Miluju, když to funguje 🙂

Zde je postup:

  1. Připojte úložiště EPEL.
  2. Nastavte FTP server (vybral jsem vsftp).
  3. Nainstalujte ffmpeg.

Nebudu uvádět příkazy podrobně, tento pokyn je spíše koncepční, aby zprostředkoval obecný plán činnosti. Pokud máte s některým z kroků potíže, rychle je vyřešíte dotazem ve vyhledávači jako „CentOS connect EPEL“ nebo „Instalace serveru FTP CentOS“. A na prvních odkazech najdete podrobné pokyny krok za krokem.

Takže, jak jsem psal dříve, potřeboval jsem hromadu VPS + nginx + OBS. VPS - hotovo. Ale v jiných bodech se začaly objevovat otázky. OBS je program pro vysílání, Open Broadcaster Software. A funguje to jen se streamy tzn. například vezme snímek z webové kamery a odešle jej. Nebo nahrávání obrazovky. Nebo přesměruje již probíhající vysílání na jiný web. A nemám stream, mám pouze sadu video souborů, které potřebuji k vytvoření streamu.

Začal jsem kopat tímto směrem a narazil jsem na ffmpeg. FFmpeg je sada bezplatných a otevřených knihoven, které umožňují nahrávat, převádět a streamovat digitální audio a video nahrávky v různých formátech.

A byl jsem velmi překvapen, kolik toho ffmpeg umí. Pokud chcete - vytáhněte zvuk z videa. Pokud chcete, vystřihne fragment videa bez překódování. Pokud chcete, převede se z jednoho formátu do druhého. A mnoho, mnoho dalších. Do té míry, že může určit soubor, převede jej na stream a přenese jej na YouTube sám. Vše, řetěz je smontován. Zbývá pouze upřesnit nuance.

Krok 3 – Nastavení vysílání

Vytváříme vysílání na YouTube. V této fázi potřebujeme pouze odkaz a vysílací klíč. Na níže uvedeném snímku obrazovky jsou zvýrazněny červeně.

Streamujte svá videa XNUMX/XNUMX na YouTube

Další nahrávání video souborů na server, které plánujeme vysílat. Ve skutečnosti je FTP potřeba pouze pro tuto fázi. Pokud máte jiný pohodlný způsob, jak nahrávat soubory na server, nelze FTP server aktivovat.

Streamujte na YouTube. Chcete-li zahájit vysílání, musíte spustit ffmpeg s několika atributy. Takto vypadá nejkratší příkaz, který jsem dostal:

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

Výklad atributů-re - označuje, že soubor by měl být převeden na stream.

-i – označuje, který soubor se má přehrát. Je důležité, aby byl příkaz spuštěn ze stejného adresáře, kde je umístěn samotný video soubor. V opačném případě byste měli zadat absolutní odkaz na soubor, např /usr/media/lecture1.mp4.

-f – nastavuje formát výstupního souboru. V mém případě se ukázalo, že ffmpeg převádí můj soubor z mp4 na flv za běhu.

A na konci uvádíme data, která jsme převzali z YouTube na stránce nastavení vysílání, tzn. adresu, na kterou chcete odeslat data, a klíč vysílání, aby se vysílání zobrazilo na vašem kanálu.

Pokud jste vše udělali správně, po spuštění tohoto příkazu YouTube uvidí přenášený stream. Chcete-li zahájit vysílání, stačí kliknout na tlačítko „Spustit vysílání“ na samotném YouTube.

Krok 4 – Přidejte autonomii

Gratulujeme! Nyní víte, jak zahájit vysílání z video souboru. Na nepřetržité vysílání to ale nestačí. Důležité je, že po skončení přehrávání prvního videa se hned spustilo další a po zobrazení všech videí se přehrávání rozběhlo znovu.

Napadla mě následující možnost: vytvořit .sh soubor, do kterého jsem pro každý video soubor napsal příkaz a na úplný konec označil příkaz restartovat stejný skript. To vedlo k takovéto rekurzi:

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

A ano, fungovalo to. Spokojen sám se sebou jsem spustil testovací vysílání a šel spát.

Ráno mě čekalo nemilé překvapení. Ukázalo se, že vysílání trvalo jen pár minut a skončilo téměř okamžitě poté, co jsem vypnul počítač. Šetření ukázalo, že takto spuštěné příkazy se provádějí, když je uživatel na serveru autorizován. Jakmile jsem se odpojil, provádění příkazů, které jsem spustil, bylo přerušeno. Aby se to nestalo, stačí před týmem bash přidat příkaz nohup. To umožní běžícímu procesu běžet bez ohledu na vaši přítomnost.

Finální minimální verze skriptu vypadá 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 soubor, ve kterém je napsán tento skript. A tento soubor musí být umístěn ve stejném adresáři jako video soubory.

Přidání znaku dolaru na konec umožňuje, aby proces běžel na pozadí, takže můžete pokračovat v používání konzole bez přerušení vysílání.

Z bonusů byly získány následující bonusy:

  • Přehrávání souborů můžete přepínat ručně. Chcete-li to provést, musíte "zabít" aktuálně běžící proces ffmpeg. Poté se automaticky spustí přehrávání dalšího souboru ze seznamu.
  • Do vysílání lze přidávat nová videa bez zastavení vysílání. Stačí nahrát video na server, přidat příkaz ke spuštění tohoto souboru do skriptu a uložit jej. A to je vše. V dalším kole přehrávání bude nový soubor již vysílán na stejné úrovni jako staré soubory.

Krok 5 - Přizpůsobte ffmpeg

Na tom se v zásadě dalo zastavit. Chtěl jsem ale přenos udělat trochu divácky přívětivější.

Řekněme, že člověk šel na vysílání, začal se dívat, líbilo se mu to a chtěl se na tuto přednášku podívat od začátku, ale vysílání neumožňuje přetáčení. Aby si někdo mohl prohlédnout přednášku od začátku, bude muset přejít na můj web a získat záznam přednášky, která ho zajímá. A jak pochopit, o jakou přednášku má zájem? Na stránce je již 16 přednášek a každý týden jich přibývá. Myslím, že ani já, který jsem všechny tyto přednášky natočil a sestříhal, nebudu schopen z náhodného fragmentu určit, o jakou přednášku se jedná. Proto je nutné, aby každá přednáška byla nějak označena.

Možnost přidat titulky ke zdrojovým videosouborům v editačním programu mi nevyhovovala. Bylo nutné se ujistit, že byly použity původní soubory. Podporovat vysílání ode mě vyžadovalo co nejméně pohybů těla.

Ukázalo se, že ffmpeg mi může pomoci i s tímto. Má speciální atribut -vf, která umožňuje umístit text na video. Chcete-li do videa přidat text, musíte do příkazu přidat následující fragment:

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

Dešifrování parametrůfontfile= – odkaz na soubor písma. Bez toho není nápis na videu přidán. Nejjednodušší způsob je umístit soubor písma do stejné složky s videem. Nebo budete muset zadat úplnou cestu k souboru.

text= - vlastně samotný text, který musí být umístěn nad videem.

fontsize= – velikost písma v pixelech.

fontcolor= - barva fontu.

borderw= - tloušťka obrysu kolem textu v pixelech (mám bílý text s černým obrysem o tloušťce 1 pixel).

bordercolor= - barva obrysu.

x= и y= – textové souřadnice. Tečka 0;0 umístěný v levém horním rohu. Moje souřadnice jsou voleny tak, že text je umístěn v levém dolním rohu v rozlišení videa 1280x720 pixelů.

Vypadá to takto:

Streamujte svá videa XNUMX/XNUMX na YouTube

Krok 6 - určete kvalitu vysílání

Vše, vysílání je připraveno. FFmpeg vysílá, soubory se přehrávají, moje přítomnost není pro vysílání potřeba. I každá přednáška je podepsaná. Vypadá to, že je to ono.

Ale objevila se další nuance - zvolil jsem minimální konfiguraci serveru a vysílání to nestáhlo. Konfigurace serveru: 1 jádro (jako 2.2 GHz), 1 gigabajt RAM, 25 GB SSD. RAM bylo dost, ale procesor se téměř úplně zatěžoval na 100% (a někdy i na 102-103% 🙂 To vedlo k zamrzání vysílání každých pár sekund. Ošklivé.

Mohli byste prostě vzít dražší konfiguraci se dvěma jádry, naštěstí s cloudovými technologiemi se konfigurace serveru změní stisknutím několika tlačítek. Chtěl jsem se ale vejít do kapacity minimální konfigurace. Začal jsem studovat dokumentaci ffmpeg a ano, existují také nastavení, která umožňují upravit zatížení systému.

Vysoké kvality obrazu lze dosáhnout dvěma způsoby: buď vysokou zátěží procesoru, nebo vysokým odchozím provozem. Ukazuje se, že čím větší zátěž může procesor přijmout, tím menší šířku pásma bude potřeba. Nebo nemůžete silně zatížit procesor, ale pak budete potřebovat široký kanál s velkou rezervou provozu. Pokud existují omezení jak na procesor, tak na velikost odchozího kanálu / provozu, budete muset snížit kvalitu obrazu, aby vysílání probíhalo hladce.

Můj server má k dispozici kanál 10 Mbps. Tato šířka je rovná s okrajem. Je tu ale omezení provozu – 1 TB za měsíc. Abych splnil omezení provozu, můj odchozí stream by neměl překročit ~ 300 Kb za sekundu, tzn. bitová rychlost odchozího streamu nesmí být vyšší než 2,5 Mbps. YouTube mimochodem jen doporučuje vysílat při tomto datovém toku.

K regulaci zatížení systému používá ffmpeg různé přístupy. Dobře se o tom píše zde. Nakonec jsem použil dva atributy: -crf и -preset.

Konstantní rychlostní faktor (CRF) - Toto je koeficient, kterým můžete upravit kvalitu obrazu. CRF může mít hodnoty od 0 do 51, kde 0 je kvalita zdrojového souboru, 51 je nejhorší možná kvalita. Doporučuje se používat hodnoty od 17 do 28, výchozí hodnota je 23. Při faktoru 17 bude video vizuálně identické s originálem, ale technicky tomu tak nebude. V dokumentaci je také uvedeno, že velikost výsledného videa se v závislosti na zadaném CRF mění exponenciálně, tzn. zvýšením poměru o 6 bodů se zdvojnásobí datový tok odchozího videa.

Pokud používáte CRF, můžete vyzvednout "váhu" odchozího obrázku, pak použijte předvolby (-předvolba) můžete určit, jak moc bude procesor zatěžován. Tento atribut má následující parametry:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium - výchozí hodnota
  • slow
  • slower
  • veryslow

Je zadán parametr "faster", tím vyšší bude zatížení procesoru.

Nejprve jsem vybral předvolbu, která byla z principu pro můj procesor „příliš tvrdý“, a poté jsem jemněji nabral zátěž pomocí CRF. V mém případě se objevila předvolba fast, a pro crf jsem se usadil na hodnotě 24.

Závěr

To je vše. Poslední příkaz ke spuštění vysílání jsem dostal toto:

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

Zbývají zde pouze dva nepopsané momenty:

1) -c:v libx264 – určení konkrétního kodeku pro práci se zdrojovým souborem.
2) -g 3 – explicitní údaj o počtu klíčových snímků. V tomto případě je specifikováno, že každý třetí snímek musí být klíčovým snímkem. Standardní hodnota je buď 5 nebo 8, ale YouTube přísahá, že požaduje alespoň 3.

Jaká je kvalita vysílání, které můžete sledovat zde.

Zatížení serveru je následující:

Streamujte svá videa XNUMX/XNUMX na YouTube

Streamujte svá videa XNUMX/XNUMX na YouTube

Na základě dat z monitoringu je vidět, že zatížení procesoru se pohybuje od 70 % do 95 % a za týden vysílání nikdy nedosáhlo 100 %. Takže s takovým nastavením procesor stačí.

Zatížením disku mohu říci, že se téměř nezatěžuje a na vysílání by měl stačit běžný HDD.

Znepokojuje mě ale množství odchozího provozu. Ukazuje se, že můj odchozí stream se pohybuje od 450 do 650 KB za sekundu. Za měsíc to bude asi 1,8 terabajtu. Možná budete muset dokoupit provoz nebo přesto přejít na konfiguraci se dvěma jádry. Nechci snižovat kvalitu obrazu.

***

Ve výsledku řeknu, že nastavení takového vysílání od nuly trvá asi 1-2 hodiny. A většinu času zabere nahrání videa na server.

Spuštění takového vysílání se jako marketingový nástroj neospravedlňovalo. Možná, že pokud zvýšíte počet zhlédnutí, takže algoritmy YouTube zachytí toto vysílání a začnou ho aktivně zobrazovat v doporučeních, pak by se něco povedlo. V mém případě za 16 dní nepřetržitého vysílání bylo zhlédnuto 58krát.

To je v pořádku. Vysílání harmonicky zapadá na hlavní stránku mého webu. Dostal jsem jakousi příležitost rychle si udělat názor na lektora a přednášky samotné.

A jeden moment. Důležité je, aby vysílání neporušovalo něčí autorská práva, jinak bude zablokováno. Na své vysílání jsem klidný. Konkrétně jsem si vybral hudební vložky s volným použitím a autorka obsahu sedí u blízkého počítače a nevadí mi, že používám její obsah 🙂

Pokud vám ale někde na pozadí ve vašem vysílání hraje rádio, nebo jste při střihu použili svou oblíbenou skladbu nebo pořídili videosekvenci z oblíbeného hudebního videa, seriálu nebo filmu, pak je vaše vysílání ohroženo. Je také důležité, aby vysílání neslo alespoň minimální sémantickou zátěž, jinak může být zablokováno jako spam.

***

To je z mé strany vše. Doufám, že tento návod někomu dobře poslouží. No, pokud máte co dodat - napište, rád si přečtu doplnění a upřesnění k článku.

Zdroj: www.habr.com

Přidat komentář