Временные метки не установлены в пакете для потока 0. Это устарело и перестанет работать в будущем. Исправьте свой код, чтобы правильно установить метки времени

Я использую приведенную ниже команду для передачи видео на сервер Wowza, поскольку мы отправляем необработанное видео H.264, пакет RTP не имеет метки времени, и мы можем наблюдать проблему синхронизации аудио-видео при воспроизведении видео с помощью VLC Media Player. При выполнении команды FFmpeg появляется предупреждение, отображаемое как

[rtsp @ 0xb754bda0] Временные метки не установлены в пакете для потока 0. Это устарело и перестанет работать в будущем. Исправьте свой код, чтобы правильно установить метки времени

Есть ли в FFmpeg какая-либо опция для добавления метки времени в пакет RTP и передачи видео и аудио?

$ffmpeg -f h264 -i /tmp/enc_sd_stream.h264 -f aac -i /tmp/aud_rec_stream  -acodec copy -vcodec copy -r 23 -f rtsp 
 rtsp://shafi:shafi@192.168.1.135:1935/live/myStream

Input #0, h264, from '/tmp/enc_sd_stream.h264':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: h264 (Baseline), yuv420p, 720x576, 25 fps, 25 tbr, 1200k tbn, 50 tbc
Input #1, aac, from '/tmp/aud_rec_stream':
  Duration: N/A, bitrate: 57 kb/s
    Stream #1:0: Audio: aac (LC), 32000 Hz, mono, fltp, 57 kb/s
[udp @ 0xb7553290] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
[udp @ 0xb7553320] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
[udp @ 0xb754c520] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
[udp @ 0xb758d670] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
Output #0, rtsp, to 'rtsp://shafi:shafi@192.168.1.135:1935/live/myStream':
  Metadata:
    encoder         : Lavf57.25.100
    Stream #0:0: Video: h264, yuv420p, 720x576, q=2-31, 25 fps, 25 tbr, 90k tbn, 15 tbc
    Stream #0:1: Audio: aac (LC), 32000 Hz, mono, 57 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #1:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
[h264 @ 0xb752e2b0] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)

    [rtsp @ 0xb754bda0] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly

[aac @ 0xb75f7880] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)
frame=10213 fps= 14 q=-1.0 Lsize=N/A time=00:06:48.80 bitrate=N/A speed=0.574x

Ответы (4)

Обычное решение для этой ситуации:-fflags +genpts

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

Это сработало лучше, чем -use_wallclock_as_timestamps 1при объединении пары avi-файлов. Полученный файл идеально синхронизировался с файлами субтитров ( .sub& .idx), которые у меня были.

это сработало для меня как вариант для ffmpeg:-use_wallclock_as_timestamps 1

Если ваша скорость чтения отличается от частоты кадров потока, выходная скорость воспроизведения (и синхронизация звука) будет неправильной. Добавьте -reперед видео и аудио входом, чтобы избежать этого.

Эта ошибка также может быть устранена в некоторых ситуациях (исходные файлы VFR с необычной временной базой) с помощью-vsync 0 -enc_time_base -1

В качестве входной опции -r игнорируйте [s] любые временные метки [...] и вместо этого генерируйте [s] временные метки, предполагая постоянную частоту кадров fps .

ffmpeg -r 25 -i "udp://...

Источник: ffmpeg Документация: Параметры видео: -r

Это был единственный вариант, который мне подошел.