tamaño reducir video avconv

reducir - Cómo combinar videos por avconv?



avconv windows (9)

Tengo varios trozos en la carpeta.

0001.mp4 0002.mp4 0003.mp4 ... 0112.mp4

Me gustaría fusionarlos en full.mp4

Intenté usar:

avconv -f concat -i <(printf "file ''%s''/n" /root/chunk/*.mp4) -y / -c copy /root/test/full.mp4

Formato de entrada desconocido: ''concat''

avconv -f concat -i <(printf "%s|" /root/chunk/*.mp4) -y / -c copy /root/test/full.mp4

Formato de entrada desconocido: ''concat''

avconv -i concat:`ls -ltr /root/chunk/*.mp4 | awk ''BEGIN {ORS="|"} { print $9 }''` / -c:v copy -c:a copy /root/test/full.mp4

En la última edición, solo un archivo de entrada fue atrapado en la salida.

¿Cómo combinar todos los fragmentos de la carpeta en un video completo?

No quiero usar ffmpeg u otro. Avconv solamente.


Encontré una herramienta llamada Avdshare Video Converter 7 que concatena con éxito mis videos. Incluso los transcodifica a casi cualquier formato que desee.

Probé todas las soluciones en esta página ... todas me dieron los mismos errores que probablemente encuentres si estás leyendo mi respuesta. ¿El "Protocolo no encontrado" te enoja? Tal vez este es el programa para ti también.

Lo estoy ejecutando en Windows.

Los pasos para concatenar dos videos en el programa son:

Arrastra y suelta tus videos en el programa

Haz clic en Combinar

Elija un "guardar perfil" que especifique todos los parámetros que pueda desear ajustar

Haga clic en el botón Guardar


Esta funciona para mí:

avconv -i "concat:001.mp4|002.mp4|003.mp4" -c copy full.mp4

Concatena todos los archivos en un mp4 sin volver a codificarlos.


Este método solo servirá para concatar archivos raw * .avi , supongo. Pero dado que mucha gente dispuesta a unirse a los archivos de avi terminará viendo esta pregunta, publicaré mi respuesta aquí de todos modos:

cat *.avi > out_tmp.avi avconv -i out_tmp.avi -c copy output.avi

Una vez más: funciona solo para archivos * .avi sin comprimir .


Estoy usando el comando ffmpeg para hacer esto. Aquí hay un ejemplo:

ffmpeg -i concat:/dev/null|file1.ts|file2.ts -c copy -bsf:a aac_adtstoasc -y output.mp4

Eche un vistazo a este proyecto github para la transcodificación de video paralelo distribuido


Lo hice con avidemux (herramienta gtk). Está disponible como un paquete en la mayoría de los linux, también para Windows y Mac. Simplemente abrí el primer archivo. Luego agregué los siguientes en orden. Finalmente, guardé el video concatenado usando audio y video y formato mp4.

¡Funcionó muy bien!


Para mp4, la única solución de trabajo que encontré fue con MP4Box del paquete gpac

#!/bin/bash filesList="" for file in $(ls *.mp4|sort -n);do filesList="$filesList -cat $file" done MP4Box $filesList -new merged_files_$(date +%Y%m%d_%H%M%S).mp4

o el comando es

MP4Box -cat file1.mp4 -cat file2.mp4 -new mergedFile.mp4

con mencoder y avconv no pude hacer que funcione :-(


esto funciona

avconv -i 1.mp4 1.mpeg avconv -i 2.mp4 2.mpeg avconv -i 3.mp4 3.mpeg cat 1.mpeg 2.mpeg 3.mpeg | avconv -f mpeg -i - -vcodec mpeg4 -strict experimental output.mp4

Arriba funciona si solo tienes avconv; sin embargo, ffmpeg tiene funciones añadidas ... para citar:

"Por encima de los pasos de avconv, pasos innecesarios de codificación con pérdida adicional que son lentos y reducen la calidad de la salida. Yo recomendaría usar el concat demuxer (información adicional) o el filtro concat en su lugar, pero avconv carece de las características disponibles en ffmpeg de FFmpeg" - @ Lord Barbaard

SEE https://trac.ffmpeg.org/wiki/Concatenate

Si está utilizando un sistema que admite canalizaciones con nombre, puede usarlas para evitar la creación de archivos intermedios; esto envía stderr (a quien ffmpeg envía todos los datos escritos) a / dev / null, para evitar saturar la línea de comandos:

mkfifo temp1 temp2 ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts temp1 2> /dev/null & / ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts temp2 2> /dev/null & / ffmpeg -f mpegts -i "concat:temp1|temp2" -c copy -bsf:a aac_adtstoasc output.mp4


mp4 archivos mp4 no pueden concatenarse simplemente, como sugiere la respuesta "aceptada".

Si ejecuta eso, y solo, terminará con output.mp4 teniendo solo el contenido de file1.mp4 .

Dicho eso, lo que estás buscando hacer en la pregunta original de hecho puede hacerse, siempre y cuando dividas el archivo original en flujos de MPEG correctamente.

Los siguientes comandos dividirán input.mp4 en segmentos de 3x 60 segundos, en el archivo [1-3] .ts:

avconv -ss 0 -i input.mp4 -t 60 -vcodec libx264 -acodec aac / -bsf:v h264_mp4toannexb -f mpegts -strict experimental -y file1.ts avconv -ss 0 -i input.mp4 -t 60 -vcodec libx264 -acodec aac / -bsf:v h264_mp4toannexb -f mpegts -strict experimental -y file2.ts avconv -ss 0 -i input.mp4 -t 60 -vcodec libx264 -acodec aac / -bsf:v h264_mp4toannexb -f mpegts -strict experimental -y file3.ts

Luego puede volver a unirlos como sugiere la otra respuesta:

avconv -i concat:"file1.ts|file2.ts|file3.ts" -c copy / -bsf:a aac_adtstoasc -y full.mp4

Usé este proceso para crear un transcodificador paralelo escalable como se describe en:


avconv -i concat:file1.mp4/|file2.mp4 -c copy output.mp4

No sé si funciona con el tipo de contenedor (funcionó para mí con AVI ).