FFMPEG Splitting MP4 mit gleicher Qualität

51

Ich habe eine große MP4-Datei. Ich versuche es in kleinere Dateien aufzuteilen.

ffmpeg -i largefile.mp4 -sameq -ss 00:00:00 -t 00:50:00 smallfile.mp4

Ich dachte, mit -sameq würden die gleichen Qualitätseinstellungen beibehalten. Ich muss jedoch nicht verstehen, was das tut.

Ich versuche, die gleiche Qualität (Audio / Video) und Komprimierung mit den geteilten Dateien beizubehalten. Diese Einstellung vergrößert jedoch die aufgeteilten Dateien erheblich.

Welche Flags muss ich setzen, um die gleiche Qualität und Attribute in den geteilten Dateien bei gleichem Verhältnis von Qualität zu Größe beizubehalten?

Wenn zum Beispiel meine Originaldatei ungefähr 12 GB groß und 1920 x 1080 mit einer Bitrate von 10617 kbit / s und einer Bildrate von 23 Bildern / s und 6-Kanal-Audio mit 317 kbit / s ist, möchte ich, dass die aufgeteilten Dateien nur ein Drittel dieser Größe betragen ( wenn ich es in drei teile teile).

Chris Weber
quelle
3
Für alle, die dies lesen: Verwenden -sameqSie es nicht, es bedeutet nicht "gleiche Qualität" .
Zaz

Antworten:

81

Wenn Sie das Video nur teilen möchten, ohne es erneut zu codieren, verwenden Sie den copyCodec für Audio und Video. Versuche dies:

ffmpeg -ss 00:00:00 -t 00:50:00 -i largefile.mp4 -acodec copy \
-vcodec copy smallfile.mp4

Beachten Sie, dass dadurch nur der erste Split erstellt wird. Das nächste kann mit einem Befehl erfolgen, der mit beginnt ffmpeg -ss 00:50:00.

Dies kann mit einem einzigen Befehl erfolgen:

ffmpeg -i largefile.mp4 -t 00:50:00 -c copy smallfile1.mp4 -ss 00:50:00 -c copy smallfile2.mp4

Dadurch wird smallfile1.mp4 erstellt, das nach 50 Minuten im Video von largefile.mp4 endet, und smallfile2.mp4, das nach 50 Minuten beginnt und nach dem Ende von largefile.mp4 endet.

Fideli
quelle
2
Mit dieser Methode für eine MP3-Datei erhalte ich die ersten zwei Sekunden jeder erstellten Datei als eingefrorenen Frame (der Ton wird normal wiedergegeben). Gibt es dafür einen bekannten Grund?
Ron Harlev
Klingt nach einem Bug. Update auf den neuesten ffmpeg.
Robert
@ Robert Ich habe seit 2010 viele Male aktualisiert. Danke.
Fideli
@RonHarlev Dies ist das aktuell erwartete Verhalten. Ohne Neukodierung können Sie Videos nur bei "Keyframes" schneiden. Bilder zwischen Schlüsselbildern enthalten nicht genügend Informationen, um ein vollständiges Bild zu erstellen. Siehe: trac.ffmpeg.org/wiki/Seeking#Seekingwhiledoingacodeccopy
Philip Thrasher
3

Eine alternative Möglichkeit ist:

// create a 2-min clip
ffmpeg -i input.mp4 -ss 00:10:00 -to 00:12:00 -c copy output.mp4

/**
* -i  input file
* -ss start time in seconds or in hh:mm:ss
* -to end time in seconds or in hh:mm:ss
* -c codec to use 
*/

Die Qualität der Datei bleibt gleich, da wir -c copydie ursprünglichen Audio- und Videostreams in die Ausgabe kopieren.

Referenz, Liste häufig verwendeter FFmpeg-Befehle: DigitalFortress

Niket Pathak
quelle