Quiero concatenar dos archivos que tengan los siguientes resultados de ffmpeg:
archivo1:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'file1.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.76.100
Duration: 00:00:02.01, start: 0.000000, bitrate: 172 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 158 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 2 kb/s (default)
Metadata:
handler_name : SoundHandler
archivo2:
Input #0, matroska,webm, from 'file2.mkv':
Metadata:
ENCODER : Lavf58.20.100
Duration: 00:01:13.10, start: 0.000000, bitrate: 418 kb/s
Stream #0:0: Video: h264 (High), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 30 fps, 30 tbr, 1k tbn, 60 tbc (default)
Metadata:
DURATION : 00:01:13.100000000
Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, fltp (default)
Metadata:
title : simple_aac_recording
DURATION : 00:01:13.002000000
Para concatenarlos, uso el siguiente comando:
ffmpeg -f concat -safe 0 -i concat.txt -c copy output.mp4
La concatenación se realiza pero el proceso genera muchas veces:
Non-monotonous DTS in output stream 0:1; previous: 99677, current: 76011; changing to 99678. This may result in incorrect timestamps in the output file.
Al mirar el archivo de salida, la salida de vídeo del primer archivo está bien, pero la renderización de la segunda parte (archivo2) se acelera considerablemente. Con respecto al audio, solo hay una pequeña parte del archivo2 durante el video que sale del archivo1.
Salida ffmpeg del archivo de concatenación:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.20.100
Duration: 00:00:05.94, start: 0.000000, bitrate: 5210 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 2787 kb/s, 377.45 fps, 50 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 6750 kb/s (default)
Metadata:
handler_name : SoundHandler
file1 no tiene audio, por lo que no necesito su salida de audio. Puedo codificar el archivo1 de manera diferente, pero prefiero mantener el archivo2 como está.
Respuesta1
No estoy seguro de tener la solución, pero como nadie más respondió (debería comentar en lugar de responder, pero mi puntaje no es lo suficientemente alto para eso)...
Una vez encontré un problema similar y pude resolverlo usando el formato MKV en lugar del formato MP4 para los archivos de entrada. Intente convertir file1.mp4 a file1.mkv con
ffmpeg -i file1.mp4 -c copy file1.mkv
y luego concatene los dos archivos MKV.
(Por cierto, el título es incorrecto: el problema no es "diferentes velocidades de bits" sino "diferentes velocidades de fotogramas")