Utilice ffmpeg para volver a codificar un archivo multimedia exactamente de forma idéntica a otro

Utilice ffmpeg para volver a codificar un archivo multimedia exactamente de forma idéntica a otro

Estoy escribiendo un programa que necesita poder colocar un archivo multimedia muy corto en medio de un archivo multimedia más largo. Quiero usar ffmpeg para esto. Soy consciente de que puedes dividir el archivo largo por la mitad y luego unir los 3 archivos (primera mitad del video largo > video corto > segunda mitad del video largo). Intenté hacer esto con el filtro concat, pero lleva mucho tiempo ya que nuestro proveedor de Kubernetes administrado no tiene una opción para los recursos de GPU.

Me di cuenta de que, dado que el primer y el último clip siempre tendrán exactamente el mismo formato (ya que se dividieron del mismo archivo fuente), podía convertir solo el clip muy corto del medio para que coincidiera con las 2 mitades. Entonces, los 3 clips estarían en el formato y simplemente podría usar el remuxer concat.

El clip corto también fue generado por ffmpeg al repetir el mismo fotograma una y otra vez sobre un clip de audio. Por lo tanto, si mi idea es posible, ffmpeg solo tendría que transcodificar el audio y el cuadro de bucle único. Es mucho mejor que transcodificar todo el clip largo y el clip corto desde cero.

¿Cómo puedo hacer que ffmpeg vuelva a codificar un video para que coincida con otro?exactamente¿Entonces puedo concat remux juntos?

Respuesta1

Como lo indicó @Rotem en los comentarios, puedes analizar las propiedades del video original con ffprobeun guión adecuado, pero esto (probablemente) no sea suficiente.

No es posible cortar correctamente una transmisión de video en marcas de tiempo arbitrarias sin transcodificar toda la transmisión (al menos con ffmpeg), solo puede hacerlo en los límites de los fotogramas clave. Por lo tanto, debe analizar también la posición de los fotogramas clave y seleccionar las marcas de tiempo de corte de acuerdo con eso (consulte este tema para eso:¿Cómo obtener la marca de tiempo del fotograma clave más cercano antes de una marca de tiempo determinada con FFmpeg?)

información relacionada