Las marcas de tiempo no están establecidas en un paquete para el flujo 0. Esto está en desuso y dejará de funcionar en el futuro. Corrija su código para establecer las marcas de tiempo correctamente

Estoy usando el siguiente comando para enviar el video al servidor Wowza, ya que estamos enviando video H.264 sin procesar, el paquete RTP no tiene la marca de tiempo y podríamos observar un problema de sincronización de audio y video mientras se reproduce el video con VLC Media Player. Al ejecutar el comando FFmpeg, aparece una advertencia como

[rtsp @ 0xb754bda0] Las marcas de tiempo no están establecidas en un paquete para el flujo 0. Esto está en desuso y dejará de funcionar en el futuro. Corrija su código para establecer las marcas de tiempo correctamente

¿HAY alguna opción disponible en FFmpeg para agregar una marca de tiempo en el paquete RTP y enviar el video y el audio?

$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

Respuestas (4)

La solución habitual para esta situación:-fflags +genpts

Debería eliminar la advertencia, pero no hay garantía de que se resuelvan los problemas de sincronización.

Esto funcionó mejor que -use_wallclock_as_timestamps 1al combinar un par de archivos avi. El archivo resultante se sincronizó perfectamente con los archivos de subtítulos ( .sub& .idx) que tenía.

esto funcionó para mí como una opción para ffmpeg:-use_wallclock_as_timestamps 1

Si su velocidad de lectura es diferente a la velocidad de fotogramas de la transmisión, la velocidad de reproducción de salida (y la sincronización de audio) será incorrecta. Agregue -reantes de la entrada de video y audio para evitar eso.

Este error también se puede eliminar en algunas situaciones (archivos fuente VFR con bases de tiempo inusuales) usando-vsync 0 -enc_time_base -1

Como opción de entrada, -r ignore [s] cualquier marca de tiempo [...] y, en su lugar, genere [s] marcas de tiempo asumiendo una velocidad de fotogramas constante en fps .

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

Fuente: ffmpeg Documentación: Video Opciones: -r

Esta fue la única opción que funcionó para mí.