ffmpeg: concat los vídeos y las imágenes

Tengo 2 videos (misma resolución, misma codificación) de los archivos que quiero concat y quiero insertar un texto de 3 segundos entre ellos, como un divisor. Estoy haciendo esto con ffmpeg en Windows.

Opcional ideas que yo estaría interesado en:

  • evitar reencoding el video en el proceso de
  • tener un fade in /fade out en la intersección de cada parte

Por ahora, he hecho el texto como una imagen (pero estoy abierto a otras sugerencias). Digamos que tengo:

  • video1.mp4: 6:33
  • splitter.png (misma resolución que video1.mp4)
  • video2.mp4: 16:44

He intentado un par de cosas, pero siempre termino con el mismo problema: el video es a las 23:20 (video1 + 3 segundos + video2), pero a los 3 segundos brecha es sólo el último video1 fotograma congelado en lugar de mi imagen/texto…

Alguna Idea de lo que hice mal o cómo debería lograr esto?

Aquí es lo que he intentado hasta ahora:

Método 1: imagen de vídeo

Convertir la imagen en un 3 segundos mp4 película, concat (demuxer) con los otros:

ffmpeg -loop 1 -f image2 -i splitter.png -r 30 -t 3 splitter.mp4
ffmpeg -f concat -i input.txt -codec copy output.mp4

Donde el input.txt parece:

file 'E:\video1.mp4'
file 'E:\splitter.mp4'
file 'E:\video2.mp4'

El contenido de splitter.png es visible en la splitter.mp4, pero no en el output.mp4. También no estoy del todo seguro de que el divisor.mp4 respeta la exacta misma codificación que los 2 videos, y no sé cómo comprobar que.

Método 2: insertar cuadros de imagen

Ejecutar directamente la concat (demuxer) 90 veces (30fps -> 3 segundos) en la imagen

ffmpeg -f concat -i input.txt -codec copy output.mp4

Donde el input.txt parece:

file 'E:\video1.mp4'
file 'E:\splitter.png'
...
file 'E:\splitter.png'
file 'E:\video2.mp4'

Edición: posible solución?

Ya que todo lo que estoy haciendo es screencasting, que bien podría screencast mi divisor de imagen. De esta manera me gustaría estar seguro de que el audio & codificación de vídeo y no tienen ningún problema de la fusión, y no se necesita ningún reencoding… sé que puede sonar tonto, pero probablemente haría el truco…

Nota: yo no tenía a probarlo, ya que ya he trabajado a través de Openshot.

Voy a resolver esta forzando el formato de píxel: uso -pix_fmt=yuv420p para todos los archivos de entrada de la concatenación.

OriginalEl autor Yosko | 2013-08-26

1 respuesta

  1. 1

    Mi conjetura es que todo esto es un problema de códec — el PNG convertido a MP4 es probablemente no es el mismo codec como su verdadero MP4s.

    Probar este — la concatenación de los archivos de codecs diferentes.

    Suena como una buena idea. Pero en el ejemplo dado en su enlace, ffmpeg espera que el flujo de audio en cada vídeo. Mi splitter.mp4 sólo han secuencia de vídeo. No estoy seguro de cómo manejar eso…
    Es solo una idea, pero su imagen de los vídeos de todas las diferentes longitudes? De lo contrario siempre se puede simplemente incluir un wav (o de otros) archivo de silencio.
    No seguro lo que la “diferentes duraciones” se acerca, pero la adición de una silenciosa pero real de flujo para el divisor suena bien. Estoy tratando de. Parece que no funciona, pero tengo que buscar por mi cuenta por ahora. Voy a estar de vuelta mañana. Gracias 🙂
    La idea era buena, aunque no trabajo en el final: tengo otros problemas con el flujo de vídeo de mi splitter… de todos Modos, he terminado de instalar ubuntu+openshot (sí, yo estaba tan desesperado) y se hizo el truco… Aún así, gracias por su ayuda

    OriginalEl autor Jared

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *