Puedo unir exitosamente múltiples archivos usando el siguiente comando:
ffmpeg -f concat -i input.txt -codec copy output.mp4
El único problema con este comando es que necesita leer las rutas de archivo del archivo de texto llamado input.txt con el siguiente contenido:
file 'C:\Users\fabio\Downloads\Super\Sharks\01.mp4'
file 'C:\Users\fabio\Downloads\Super\Sharks\02.mp4'
file 'C:\Users\fabio\Downloads\Super\Sharks\03.mp4'
¿Hay alguna manera de lograr el mismo objetivo sin tener que leer las rutas de archivo desde un archivo? He intentado lo siguiente sin suerte:
ffmpeg -f concat -i file "C:\a\b\01.mp4" file "C:\a\b\02.mp4" -codec copy output.mp4
ffmpeg -f concat -i "C:\a\b\01.mp4" "C:\a\b\02.mp4" -codec copy output.mp4
¿Tengo que usar un comando diferente?
command-line
ffmpeg
Fabio Delarias
fuente
fuente
Respuestas:
Actualización 2019:
Como se menciona en los comentarios, Stack Overflow tiene una excelente descripción de las opciones disponibles para la concatenación, así como una discusión sobre qué método usar según los tipos de archivos que esté utilizando:
¿Cómo concatenar dos archivos MP4 usando FFmpeg?
Respuesta original de 2016:
Debería poder utilizar el método de protocolo concat para combinar los archivos:
Además, el manual de FFmpeg analiza un método específicamente para archivos MP4, a fin de concatenarlos sin pérdidas, pero requiere que cree archivos temporales (o canalizaciones con nombre):
fuente
output.mp4
.Puede reemplazar el archivo con la lista enviando la lista
stdout
y leyendo la lista desdestdin
ffmpeg:fuente
No, parece que no hay forma de usar el demuxer concat ffmpeg en una sola línea de comando sin algún truco. Debe crear el archivo de texto de entrada con la lista de archivos. Pensé que esto era extraño, tal vez alguien agregará esto a FFMpeg en una fecha posterior.
La respuesta aceptada a esta pregunta utiliza el protocolo concat, no el demuxer concat, que es lo que solicitó el OP.
fuente
Aún puede hacerlo en un script sin cambiar el comando. Algo como:
$$ se expande al pid del shell que ejecuta el comando, por lo que el nombre del archivo será diferente cada vez que lo ejecute. así que puedes usar $$. txt si lo prefieres. O algo mas...
Además, puede usar aquí los archivos para agregar un montón de datos al archivo:
bash La sustitución de variables funciona, por lo que puede determinar mediante programación el contenido del archivo, no tiene que ser reparado. Incrusto este tipo de cosas en bucles todo el tiempo. Finalmente, la redirección funciona igual que antes, por lo que> $$. Tmp se trunca y luego escribe, >> $$. Tmp se agrega.
fuente