Fórum Root.cz
Hlavní témata => Software => Téma založeno: Tomáš Pinkava 28. 02. 2017, 17:08:58
-
Ahoj,
mám Raspberry Pi 3 s oficiální kamerou V2 a externí USB zvukovku Behringer UCA202. Na stroji spouštím následující stream a odesílám na youbube:
raspivid -hf -vf -awb flash -pf high -t 0 -fps 25 -b 6000000 -o - -g 50 | \
/usr/bin/ffmpeg -f alsa -ac 2 -channel_layout stereo -i hw:1,0 -f h264 -i - \
-vcodec copy -flags +global_header -acodec libmp3lame -b:a 128k -ac 2 -ar 44100 -async 1 -f flv rtmp://a.trmp.youtube.com/live2/..........
Vše funguje v pořádku, až na posunutí zvuku dozadu a to 0 - 1.5 vteřiny. Řekl bych, že je ten čas pokaždé jiný, ale mohlo to být také měněním parametrů. Zkoušel jsem používat parametry -ss, -itsoffset, kokek aac, kde byl posun obráceně a ještě větší. Nemělo to ale většinou žádný vliv. Myslím si, že je problém ve zdrojích obrazu a zvuku, že tyto streamy v sobě nemají žádný timestamp, podle kterého by to ffmpeg mohl správně posunovat.
Napadá vás nějaké řešení, jak docílit synchronizace? Díky za odpovědi.
-
Zkuste to streamovat bezhlavym VLC (vlc-nox), schvalne, co to udela.
-
Zkuste to streamovat bezhlavym VLC (vlc-nox), schvalne, co to udela.
S vlc jsem zatím moc nelaboroval a nerad bych strávil stejné množství času, abych zjistil, že to stejně nefunguje. Zkoušel jsem tento zápis, ale youtube to vůbec nenabírá.
raspivid -hf -vf -awb flash -pf high -t 0 -fps 25 -b 6000000 -o - -g 50 | cvlc -vvv stream:///dev/stdin --sout '#transcode{vcodec=h264,acodec=mp3,samplerate=44100}:std{access=rtmp,mux=ffmpeg{mux=flv},dst=rtmp://a.rtmp.youtube.com/live2/..............'
-
Špatně jsem se vyjádřil. Problém je už s odesíláním. Občas traffic stoupkne kolem 6 Mbit, ale po chvíli to začne dělat zuby mezi 0 - 3 Mbit.
-
Ahoj,
Problém s posunem zvuku a videa jsme nakonec vyřešili pomocí programu picam (https://github.com/iizukanao/picam#using-a-binary-release (https://github.com/iizukanao/picam#using-a-binary-release)).
Stream pak zapínáme těmito příkazy:
# nejdřív musím zapnout na pozadí ffmpeg:
ffmpeg -i tcp://127.0.0.1:8181?listen -c:v copy -c:a aac -strict -2 -ar 44100 -f flv "rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx" &
# ... a pak mu pošlu stream:
/opt/picam/picam --wb flash --alsadev hw:1,0 --videobitrate 6000000 --rotation 180 --fps 25 --volume 2.0 --width 1920 --height 1080 --avclevel 4.1 --audiobitrate 128000 --tcpout tcp://127.0.0.1:8181
-
Ta první verze nemohla správně fungovat, protože se již nahrané video míchalo s aktuálně snímaným zvukem až za rourou, tudíž video bylo z úplně jiného času, než zvuk. U roury nelze řídit vzájemné časování obou procesů, tudíž byl časový posun pokaždé jiný.
Video a audio se musí nahrávat současně, nejlépe jedním procesem.