LINUX.ORG.RU

Синхронизация потоков аудио и видео, в файл, и в RTP

 , ,


0

2

Ну такое. Пишу значит стриминг, с возможностью записи в файл. Уже давно пишу, много где много чего понял про FFmpeg, несмотря на отсутствие документации, примеров, и постоянно меняющееся API.

Но такой все же вопрос. Вот допустим, мне приходят фреймы откуда-то, из проприетарного API, считай битмапы, я их конвертирую в YUV, создаю AVFrame, ставлю pts соответственно номеру кадра. Также, приходят семплы аудио из rtp демуксера. Надо это стримить, и временами, сохранять. Собственно, я это и делаю, но пока - особо без задней мысли просто складываю в контексты кодеков и муксеров.

Но внимание вопрос, как лучше синхронизировать потоки? И в файл, и в RTP стрим? Закладываться на количество сэмплов аудио? На количество фреймов видео? На системное время? Какие есть стратегии синхронизации, чтоб и в реалтайм стриме, и в файле у меня не было рассинхрона, особенно если потоки - долгоживущие? Что делать если соурсы битмапов и аудио - на время пропадают - например какие-то устройства, их генерирующие, падают? Итд.

Подскажите чо как

★★★

если источник находится у вас локально(железо) то таймстампы ставите вы, если приходят от куда то(к примеру по сети) тамйстампы должны уже там стоять, в том же ртп есть свои временные метки, по которым сторится тот же джиттер

anonymous
()

как лучше синхронизировать потоки?

по таймстампам. вопрос выходит за рамки программирования, вы сами должны создать систему так, чтобы вы могли по таймстампам правильно синхронизировать.

Что делать если соурсы битмапов и аудио - на время пропадают - например какие-то устройства, их генерирующие, падают?

есть в ффмпег фильтры для выравнивания частоты кадров (fps) и для вставки недостающих аудиосэмплов (не помню название, но было что-то). При сбое сетевого потока (AVFormatContext/AVIOContext) можно подставлять альтернативный поток или «бутафорские» кадры, предварительно приведя к характеристикам бывшего стрима.

Andrey_Utkin ★★
()

Закладываться на количество сэмплов аудио? На количество фреймов видео?

или так, или так

Harald ★★★★★
()

мне попадался такой туториал (немного устаревший), там вопрос синхронизации аудио и видео плеером рассматривался

http://dranger.com/ffmpeg/tutorial06.html

Harald ★★★★★
()

Без уважения ты на район заходишь.

несмотря на отсутствие документации, примеров, и постоянно меняющееся API

4.2. все в порядке с документаций, примерами и api не меняется постоянно, а спокойно эволюционирует

Про синхронизацию плюсану http://dranger.com/ffmpeg/tutorial06.html

hizel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.