@sstotenkopf

Как синхронизировать аудио и видео для стриминга через ffmpeg?

Здравствуйте у меня появилась задача застримить видео через ffmpeg, для данной задачи я использовал raspberry pi zero с ОС raspbian и программу, которая позволяет получить видео с родной камеры raspivid, вообщем получилось стримить видео таким образом:
sudo raspivid -n -vf -hf -ex auto -w 1024 -h 768 -fps 25 -t 0 -b 2000000 -o - | 
ffmpeg -y -f h264 -i - -vcodec copy -f flv rtmp://myip/myapp/mystream

Но нужно отправлять поток со звуком, попробовал использовать alsa в ffmpeg, но расходуется слишком много cpu и возникает предупреждение alsa buffer xrun. Решил проблему используя arecord:
raspivid -t 0 -w 1024 -h 768 -fps 25 -vf -hf -b 1000000 -v -o temp.v & 
arecord -f cd -D plughw:0 | 
ffmpeg -i temp.v -itsoffset 13.5 -i - -c:v copy -c:a libmp3lame -b:a 64k -f flv rtmp://myip/myapp/mystream
Методом научного тыка подобрал параметр itsoffset, звук и видео идут синхронно. Но если скорость интернета проседает (3g модем), стрим на некоторое время пропадает, затем звук и видео полностью рассинхронизируются и далее идут асинхронно. К сожалению я не имею опыта работы с ffmpeg и не знаю, как это исправить, пытался решить методом подбора параметров async и vsync, не помогло. Как можно решить данную задачу? Спасибо.
  • Вопрос задан
  • 765 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы