FFmpeg - synchronizace videa a zvuku z Raspberry Pi

Tomáš Pinkava

FFmpeg - synchronizace videa a zvuku z Raspberry Pi
« kdy: 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:

Kód: [Vybrat]
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.
« Poslední změna: 28. 02. 2017, 23:30:10 od Petr Krčmář »


JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:FFmpeg - synchronizace videa a zvuku z Raspberry Pi
« Odpověď #1 kdy: 01. 03. 2017, 11:24:23 »
Zkuste to streamovat bezhlavym VLC (vlc-nox), schvalne, co to udela.

Tomáš Pinkava

Re:FFmpeg - synchronizace videa a zvuku z Raspberry Pi
« Odpověď #2 kdy: 01. 03. 2017, 20:46:06 »
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á.

Kód: [Vybrat]
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/..............'

Tomáš Pinkava

Re:FFmpeg - synchronizace videa a zvuku z Raspberry Pi
« Odpověď #3 kdy: 01. 03. 2017, 20:48:01 »
Š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.

herrneiss

Re:FFmpeg - synchronizace videa a zvuku z Raspberry Pi
« Odpověď #4 kdy: 25. 04. 2017, 22:39:47 »
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).
Stream pak zapínáme těmito příkazy:
Kód: [Vybrat]
# 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


dustin

Re:FFmpeg - synchronizace videa a zvuku z Raspberry Pi
« Odpověď #5 kdy: 26. 04. 2017, 08:43:00 »
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.