ffmpeg: So vermeiden Sie „start: 0.033333“ beim Extrahieren von Audio aus mp4

Beim separaten Extrahieren von Audio und Video aus einer mp4-Datei und erneutem Kombinieren

ffmpeg -accurate_seek -ss 30 -t 10 -i input.mp4 -vn output-audio.mp4
ffmpeg -accurate_seek -ss 30 -t 10 -i input.mp4 -an output-video.mp4
ffmpeg -i output-audio.mp4 -i output-video.mp4 output-combine.mp4

die drei mp4-s haben laut ffprobe unterschiedliche längen:

ffprobe output-video.mp4
Duration: 00:00:10.00, start: 0.000000, ...
ffprobe output-audio.mp4
Duration: 00:00:10.03, start: 0.033333, ...
ffprobe output-combine.mp4
Duration: 00:00:10.08, start: 0.033333, ...

beim Kombinieren von Audio und Video mit-shortest

ffmpeg -i output-audio.mp4 -i output-video.mp4 test-combine.mp4

die Länge ist

ffprobe output-combine.mp4
Duration: 00:00:10.04, start: 0.033333, ...

Wie kann der Start-Offset (0.033333) vermieden werden, damit alle Teile die gleiche Länge haben und der ursprüngliche Teil durch die Kombination von Audio und Video wiederhergestellt werden kann?

Teilen Sie das vollständige Protokoll vonffmpeg -i input.mp4

Antworten (1)

Korrektur: statt

ffmpeg -i output-audio.mp4 -i output-video.mp4 test-combine.mp4

es sollte sein

ffmpeg -i output-audio.mp4 -i output-video.mp4 -shortest output-combine.mp4

Art der Antwort:

ffmpeg -i output-video.mp4 -itsoffset 0.033333 -t 9.966666 -i output-audio.mp4  output-combine.mp4

scheint die Aufgabe zu erfüllen, obwohl sich das Ergebnis in der Dateigröße geringfügig von einer direkten Extraktion (direkt ist größer als kombinieren) unterscheidet

ffmpeg -accurate_seek -ss 30 -t 10 -i input.mp4 output-direct.mp4