ffmpeg: concat Resultados en "Desbordamiento de cola de búfer" y Audio corto

Tengo este archivo de video que en un momento presenta una sincronización de ~ 1 segundo. Así que traté de hacer que funcionara duplicando un segmento corto en ese punto, ya que está en silencio allí:

$ ffmpeg -i DFW.mp4.mkv -filter_complex '
[0:a] aselect=n=3:e=lt(t\,18*60+42.100)+gt(t\,18*60+41)*2 [as] [ae] [am];
[am] asplit [am1] [am2];
[as]  asetpts=PTS-STARTPTS [as];
[am1] asetpts=PTS-STARTPTS [am1];
[am2] asetpts=PTS-STARTPTS [am2];
[ae]  asetpts=PTS-STARTPTS [ae];
[as] [am1] [am2] [ae] concat=n=4:a=1:v=0 [a]' -map 0:v -map '[a]' -c:v copy DFW-1.mp4

En otras palabras, tengo

  • asel inicio hasta las 18:41.000
  • aeel final de 18:42.100
  • amla sección central entre 18:41.000 y 18:42.100, que debe repetirse una vez

La segmentación funciona, la parte audible concatenada suena bien. Sin embargo, aeresulta ser solo ~ 5 segundos cortos y ffmpegcomienza a imprimir líneas de spam "Desbordamiento de cola de búfer, caída". El video completo dura 1h30 dejándome con mucho silencio hasta el final.

En otras palabras, el video y el audio están bien hasta alrededor de las 18:48.000 y la 1h11 restante del video no tiene audio.

¿Por qué está ffmpeghaciendo eso y cómo puedo solucionarlo?

También traté de incluir un segmento de audio de silencio como plan B, pero fallé.

Un desbordamiento de búfer ocurre cuando un filtro que tiene múltiples entradas está esperando una o más entradas, que están retrasadas. Las entradas que ya están en cola tienen un umbral de caída de tramas que se cruza si esas entradas llegan lo suficientemente tarde. ¿Qué tiene de malo solo agregar un segmento en blanco?
@Mulvya Bueno, fallé al crear/usar uno. Sin embargo, resolvería mi problema. -- Pero, de nuevo, no sé por qué ffmpeg se detiene después de cinco segundos. Yo diría que use todo el resto de la transmisión o nada en absoluto. Sin embargo, aetiene una duración de ~5 segundos, lo cual es extraño.

Respuestas (1)

Suponiendo que no haya discontinuidades de marca de tiempo en el audio, un atrim simple y un segmento nulo deberían funcionar.

ffmpeg -i DFW.mp4.mkv -filter_complex '
[0:a]asplit[a][b];
[a]atrim=0:1122.1[pre];
[b]atrim=1122.1,asetpts=PTS-STARTPTS[post];
anullsrc,atrim=0:1.1[seg];
[pre][seg][post]concat=n=3:a=1:v=0[a]' -map 0:v -map '[a]' -c:v copy DFW-1.mp4
Ah, entonces así es como se hace. Fresco.
Después de insertar cinco pausas como esta, ffmpeg comienza a quejarse de "Desbordamiento de cola de búfer, caída" nuevamente
¿Cuál es tu nuevo comando?
Lo uso exactamente de la misma manera que tú. Solo cambio las posiciones en el atrims.
¿Como en múltiples comandos? ¿O filtros adicionales en un solo comando?
Bueno, tomé su llamada y la ejecuté varias veces con diferentes valores para el atrims.
Todavía no está claro. ¿Comando múltiple o único?
Nuevamente, exactamente lo que publicaste en tu respuesta. De todos modos, nos dijeron que obtendremos una transmisión de audio completa de una fuente diferente y, con suerte, podremos aplicarla a todo el video.