Streamování videa na FB, IG, Youtube současně pomocí OBS a ffmpeg

Autor: | 19. 9. 2021 | IT, Linux, Video

Štítky: ffmpeg | linux | obs | ubuntu

OBS je krásný nástroj na práci s livestreamy. Nastavení OBS, aby streamovalo video přes FB nebo Youtube je docela jednouché. Problém však nastává, když chci streamovat na oba zároveň nebo dokonce na další – jako je Instagram. V samotném OBS to možné není – musím si vybrat pouze jeden server.

Jedno z řešení je využít služby jako je například Restream.io. Je možné, že služba bude pro většinu uživatelů vyhovující. Z toho co jsem vyčetl by nastavení fungovalo tak, že streamuji z OBS na Restream.io a na službě si nastavím, aby tento stream rozkopírovala na FB, Youtube atp.

Mým cílem bylo však vytvořit si službu Restream.io na vlastním počítači a pomocí ffmpeg rozkopírovat stream na další servery.

K tomu mi pomohl návod z této diskuse.

Vytvoření vlastního RTMP serveru

Server, na který streamuju live stream z OBS jsem vytvořil pomocí nginx a modulu rtmp.  Nevím, jestli něco podobného lze zařídit i se serverem apache, ale to mě teď netrápí, protože nginx mi poskytuje funkční řešení. Instalace v Ubuntu byla jednoduchá.

sudo apt install nginx nginx-mod-rtmp

Po instalaci je potřeba server nakonfigurovat – konkrétní jsem pracoval se souborem: /etc/nginx/sites-available/default

Celý obsah souboru jsem zakomentoval, protože jsem nechtěl otevírat klasické porty HTTP a HTTPS. Navíc mám na těchto portech spuštěný Apache, takže se mi nginx s těmito porty bil. Co jsem však přidal byla konfigurace pro rtmp server, aby poslouchal na portu 1935.

rtmp {
        server {
                listen 1935;
                chunk_size 4096;

                application live {
                        live on;
                        record off;
                }
        }
}

Nakonec nezapomenout restartovat nginx a případně zkontrolovat logy a je nastaveno.

systemctl restart nginx

Jako poslední nastavím streamování z OBS na adresu: rtmp://localhost:1935/live/stream

Nalezení streamovacích URL jednotlivých služeb

Dalším krokem je nalezení streamovacích URL jednotlivých služeb. Na tyto URL bych klasicky streamoval z OBS. V mém případě posílám stream z rtmp://localhost:1935/live/stream na tyto jednotlivé služby.

U Youtube a Facebooku nebylo nalezení URL k mým účtům až takový problém. U Youtube jsem musel počkat 24 hodin, než mi živé vysílání aktivovali a mohl jsem se k URL dostat. U Instagramu to bylo kapánek složitější. Instagram je specifický tím, že je stavěn primárně k použití přes mobilní zařízení. Z toho plynou 2 specifika. Stream chce na výšku a za druhé streamaovací URL není jednoduše dostupná.

K získání URL jsem použil aplikaci Streamon. Pomocí aplikace je možné získat URL. Zároveň URL je platná pouze několik minut, takže je potřeba jednat rychle. Další věc, co jsem se vyškolil je, že nestačí jenom zkopírovat URL a začít na ni vysílat. Je potřeba v aplikaci nejdříve kliknout na tlačítko START STREAM a až poté začít stream odesílat. Jinak došlo ke zrušení streamu. Nějakou dobu jsem se s tím trápil, než jsem pochopil správné pořadí.

IG si obraz ořízne tak, aby byl jenom na výšku. Na to je nutné myslet při chystání videa, aby hlavní objekt byl na středu. Pravá a levá strana nebou vidět prostě celé oproti FB a Youtube.

Rozkopírování streamu pomocí ffmpeg na Youtube, Facebook, Instagram

Posledním krokem je spuštění programu ffmpeg tak, aby odesílal stream z mého RTMP serveru na jednotlivé služby. Vysílací URL serverů je zkrácena – každý nechť si dosadí dle svého účtu. Jako poslední ukládám stream na lokální disk.

ffmpeg -i rtmp://localhost:1935/live/stream -c:v copy -c:a copy -map 0 -f tee "[f=flv]rtmps://live-api-s.facebook.com:443/rtmp/..."
ffmpeg -i rtmp://localhost:1935/live/stream -c:v copy -c:a copy -map 0 -f tee "[f=flv]rtmps://live-upload.instagram.com:443/rtmp/..."
ffmpeg -i rtmp://localhost:1935/live/stream -c:v copy -c:a copy -map 0 -f tee "[f=flv]rtmp://a.rtmp.youtube.com/live2/..."
ffmpeg -i rtmp://localhost:1935/live/stream -c:v copy -c:a copy -f mp4 lokalni-zaznam.mp4

Užitečné zdroje

Další články