Sus archivos no se unirán correctamente porque algo no coincide.
Al igual que muchos otros, tuve problemas con la sincronización de sonido en los videos combinados. y aunque MP4Box funciona bien si los clips tienen especificaciones idénticas, en algunos casos me sorprendería el "No se encontró una pista de destino adecuada, creando una nueva", en cuyo caso Totem (también conocido como Videos) no reproduciría ese segmento en el archivo unido Después de algunas pruebas y errores e investigaciones adicionales, he desarrollado el siguiente método para lidiar con la unión de videos que hasta ahora ha funcionado siempre con una calidad aceptable (para mí).
Si los tamaños de los cuadros no coinciden (errores de unión relacionados con las pistas de video):
Normalice el video sin interrumpir el audio (-c: una copia) estableciendo restricciones (divisibles entre 8 para obtener la máxima compatibilidad de códec) para segmentos incomparables
Comandos de ejemplo
width=856
height=480
avconv -i input.mp4 -filter:v "scale=iw*min($width/iw\,$height/ih):ih*min($width/iw\,$height/ih), pad=$width:$height:($width-iw*min($width/iw\,$height/ih))/2:($height-ih*min($width/iw\,$height/ih))/2" -c:a copy output.mp4
Si el audio no coincide (errores de unión relacionados con las pistas de audio):
Normalizar audio
Procese el audio sin interrumpir el video (copia c: v) para que todos los clips coincidan con el códec, la frecuencia y la velocidad de bits deseados con c: un códec -ar frecuencia como -ar 48000 y una velocidad de bits con b: a 128k para estéreo (64K por canal parece un buen objetivo) o lo que coincida
Ejemplo: avconv -i input.mp4 -c:v copy -c:a libmp3lame -ar 48000 b:a 128k output.mp4
(tenga en cuenta que libmp3lame es un códec para audio mp3) Puede obtener una lista de codificadores compatibles con avconv emitiendo el comando avconv -codecs
o restringiendo las cosas a un código específico, avconv -codecs|grep *codecname*
por ejemploavconv -codecs|grep mp3
Ahora que hemos normalizado los archivos, podemos unirnos a ellos. En este ejemplo, uniré los archivos con MP4Box. Si no lo tiene, puede obtenerlo emitiendo el comandosudo apt-get install gpac
Unir los archivos con el comando MP4Box file1.mp4 -cat file2.mp4 -cat file3.mp4 -cat file4.mp4 -out joinedfile.mp4
(tenga en cuenta que no hay cat antes del primer archivo y cada archivo adicional está precedido por -cat y el archivo de destino está precedido por -out)
Si usa MP4Box (recomendado para MP4) para unirse, puede encontrar que tiene que procesar todos los clips con avconv si las especificaciones parecen coincidir o no para evitar el error "No se encontró una pista de destino adecuada, creando una nueva (escriba vide)"
Nota: He descubierto que Avidemux tiene problemas con los videos codificados usando archivos H.264 / AVC (por tótem) debido a los cuadros B como referencia. Esto parece dar como resultado que el audio no esté sincronizado cuando se une, incluso cuando elige copiar audio y video sin remux. Se bloquea cuando no se elige el modo seguro y no está sincronizado cuando se usa el modo seguro
Fuentes:
/superuser/547296/resizing-videos-with-ffmpeg-avconv-to-fit-into-static-sized-player
/programming/20703160/problems-with-setting-constant-bitrate-by-using-avconv
https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_cbr
Nota: Hasta donde yo sé, otros formatos (contenedores) tienen restricciones similares para igualar el tamaño de cuadro y las velocidades de audio, por lo que esto también puede funcionar para avi si intenta unirse a través de cat o mencoder después de normalizar video y audio .
Opcional: use Handbrake para volver a codificar el archivo unido para un tamaño más pequeño si lo desea con una velocidad de fotogramas variable y una configuración de calidad constante de 25 (configuraciones sugeridas: ajuste según sea necesario para sus expectativas de material y calidad)