Ich möchte zwei Dateien mit den folgenden ffmpeg-Ausgaben verketten:
Datei1:
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
Datei2:
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
Um sie zu verketten, verwende ich den folgenden Befehl:
ffmpeg -f concat -safe 0 -i concat.txt -c copy output.mp4
Die Verkettung ist abgeschlossen, aber der Prozess gibt viele Male aus:
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.
Beim Betrachten der Ausgabedatei ist die Videoausgabe der ersten Datei in Ordnung, aber das Rendern des zweiten Teils (Datei2) ist erheblich beschleunigt. Was den Ton betrifft, gibt es nur einen kleinen Teil von Datei2, während das Video aus Datei1 kommt.
ffmpeg-Ausgabe aus der Verkettungsdatei:
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
Datei1 hat keinen Ton, daher brauche ich die Audioausgabe nicht. Ich kann Datei1 anders kodieren, aber ich würde Datei2 lieber so lassen, wie sie ist.
Antwort1
Ich bin nicht sicher, ob ich die Lösung habe, aber da niemand sonst geantwortet hat (ich sollte kommentieren, anstatt zu antworten, aber mein Score ist dafür nicht hoch genug) …
Ich hatte einmal ein ähnliches Problem und konnte es lösen, indem ich für die Eingabedateien das MKV-Format anstelle des MP4-Formats verwendete. Versuchen Sie also, file1.mp4 mit in file1.mkv zu konvertieren
ffmpeg -i file1.mp4 -c copy file1.mkv
und dann die beiden MKV-Dateien zu verknüpfen.
(Übrigens ist der Titel falsch: Das Problem sind nicht „unterschiedliche Bitraten“, sondern „unterschiedliche Bildraten“)