Asegúrese de que las pistas de audio y video tengan EXACTAMENTE la misma duración

Asegúrese de que las pistas de audio y video tengan EXACTAMENTE la misma duración

Genero 200 archivos de video basados ​​en archivos de audio generados usando sox, combinados con archivos de imagen. La mayoría de los clips duran menos de un segundo, ninguno dura más de 6. Luego concateno estos archivos y hay un retraso general de aproximadamente 2 segundos en el resultado final.

Creo que esto podría deberse a que las pistas de audio y vídeo se concatenan de forma independiente.

Puedo averiguar la duración exacta de la pista (transmisión) de video y audio usando ffprobe. Solo en uno de los archivos cortos puedo ver que las duraciones difieren:

ffprobe file001.webm
Input #0, matroska,webm, from 'file001.webm':
  Metadata:
    ENCODER         : Lavf58.20.100
  Duration: 00:00:00.92, start: 0.000000, bitrate: 211 kb/s
    Stream #0:0: Video: vp8, yuv420p, 1100x140, SAR 1:1 DAR 55:7, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
    Metadata:
      ENCODER         : Lavc58.35.100 libvpx
      DURATION        : 00:00:00.923000000
    Stream #0:1: Audio: vorbis, 48000 Hz, stereo, fltp (default)
    Metadata:
      ENCODER         : Lavc58.35.100 libvorbis
      DURATION        : 00:00:00.908000000

¿Cómo puedo lograr que las pistas de video y audio en un archivo de video tengan exactamente la misma duración?

Estoy usando vpx/vorbix/webm (después de no poder entender la causa de los problemas con mpeg2ts) pero usaré cualquier formato para hacerlo.

También puedo agregar un relleno de silencio al audio para que coincida con la duración.

Respuesta1

Básicamente no vale la pena el esfuerzo. Los fotogramas de audio tienen una duración fija, según el códec y la frecuencia de muestreo. Por ejemplo, aac es 1024/frecuencia de muestra. Por ejemplo, 1024/48000 ~ 21,333 ms. Entonces, si vuelves a muestrear tu video a un múltiplo perfecto de eso, en teoría sería exacto. Suponiendo que el contenedor no lo modifica en absoluto. De lo contrario, puede modificar el codificador de audio para controlar la cantidad de muestras de preparación utilizadas, lo que le permitiría obtener un primer cuadro de audio parcial. Pero nuevamente, cada códec es diferente. De lo contrario, puede utilizar VFR y establecer manualmente la duración del fotograma final si el contenedor lo admite. Finalmente, puedes cambiar la lista de edición en mp4 y usar un reproductor que pueda garantizar soporte.

No sé si hay herramientas disponibles que puedan hacer alguna de estas cosas.

información relacionada