La concatenación ffmpeg introduce la intermitencia del video pero no afecta el audio

He pasado por varias variantes diferentes de este proceso y siempre me causa problemas. Lo he hecho funcionar a veces, pero no parece ser consistente.

Tengo una cámara de video que graba archivos AVCHD a MTS, divide archivos en 3.89GB. Dado que su micrófono es una mierda, también grabo audio por separado y tengo que sincronizarlos antes de editarlos. El problema que tengo es que la grabadora de audio no divide los archivos al mismo tiempo, por lo que generalmente termino con 3 archivos de video y 1 archivo de audio.

Así que me pregunto dónde van mal las cosas en este proceso:

  1. Convirtió todos los archivos MTS H264 a archivos MOV ProRes. El editor maneja ProRes mejor que los archivos comprimidos, así que convierto. ffmpeg -i 00000.MTS -vf "yadif=3:-1:1,mcdeint" -vcodec prores -vperfil 2 -ar 48000 1.mov
  2. Concatenó los 3 archivos .mov juntos. En este punto, tengo un archivo con tartamudeos de video cada ~32 minutos, pero el audio permanece sincronizado con el video. ffmpeg -f concat -i mylist.txt -c copia completa.mov
  3. Extrajo el audio a FLAC. Importado a audacity, alineado el audio externo con un aplauso y recortado a medida. En este punto, ambas pistas de audio se alinean, la pista externa todavía está sincronizada con el audio de la cámara al final. Exporte el nuevo audio externo que coincida con el inicio y la duración del audio original. ffmpeg -i completo.mov -aq 256k completo.flac
  4. Vuelva a combinar el archivo .mov grande con el nuevo audio. En este punto, el audio que estaba sincronizado con el audio original de los archivos de video ahora se desincroniza cuando el video se entrecorta. ffmpeg -i full.mov -i full-tascam.flac -map 0:0 -map 1 -vcodec copy -ar 48000 full-tascam.mov

¿Qué hacer? Tuve el mismo problema antes de presentar ProRes, solo concatenaba los archivos MTS en MP4, copiaba la transmisión de video y agregaba el audio nuevo. ¿Hay algo que pueda configurar durante la concatenación para eliminar los tartamudeos o para evitar que desincronicen el nuevo audio cuando estoy agregando esa pista?

Parece que la cámara le da un poco de control a cada archivo .MTS sucesivo, o está dejando caer un par de fotogramas entre segmentos. Haga un experimento: apunte la cámara a algún código de tiempo en ejecución en un televisor y deje que grabe algunos segmentos, y vea si hay una superposición en los códigos de tiempo, o si los números se pierden.

Respuestas (1)

Por alguna razón, creo que esto se evita cuando se usa el PROTOCOLO concat de ffmpeg ( ffmpeg -i "concat:..." ) en lugar de su concat DEMUXER ( ffmpeg -f concat -i mylist.txt ). Curiosamente, también es un poco más conveniente ya que usar el demuxer requiere que cree el archivo de texto con los nombres de los archivos mientras que con el protocolo puedo especificarlos en la línea de comando, por ejemplo: ffmpeg -i "concat: 00001.MTS | 00002.MTS|00003.MTS" -c copiar salida.mts

Tendré que confirmar esto más tarde, estoy en la computadora equivocada, pero algo me llamó la atención, así que decidí actualizarlo con nueva información.

Para concatenar mp4 sin pérdidas, utilice estos pasos : ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts´, then ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts middle2.ts` y finalmente: ffmpeg -i "concat:intermediate1.ts|intermediate2.ts" -c copy -bsf:a aac_adtstoasc output.mp4.