Konvertieren von FLV in MP4 mit FFMPEG und Erhalt der Qualität

26

Ich versuche, ffmpeg zu verwenden, um meine FLV-Dateien in MP4 zu konvertieren, um sie auf iOS-Geräten abzuspielen, aber das konvertierte Video hat eine viel schlechtere Qualität als das Original.

Hier ist der Befehl, den ich benutze:

ffmpeg -i input.flv -ar 22050 output.mp4

Ich würde mich sehr freuen, wenn mir jemand die besten Einstellungen für die Konvertierung von FLV in MP4 liefern könnte.


quelle

Antworten:

42

Abhängig von den in Ihrem FLV verwendeten Codecs können Sie möglicherweise davonkommen, indem Sie ihn einfach wieder in einen mp4-Container einwickeln. Du brauchst H.264oder MPEG4 simple profileVideo und AACAudio. Informationen zu Ihrer Quelldatei finden Sie unterffmpeg -i input.flv

Ich bin mir nicht sicher, ob es gut genug ist, H.264 / MPEG4 Simple + AAC zu haben oder ob es bestimmte Optionen für die unterstützten Codecs gibt. Es ist leicht genug zu testen:

Versuchen Sie es mit

ffmpeg -i input.flv -c copy -copyts output.mp4

-copytsist copy timestampses wird dazu beitragen, Audio-Synchronisation.

Wenn dies nicht funktioniert, versuchen Sie, Audio- und Video-Codecs zu erzwingen. Dies wird die Datei neu codieren:

ffmpeg -i input.flv -c:v libx264 -crf 23 -c:a libfaac -q:a 100 output.mp4

Um die Videoqualität zu verbessern, können Sie einen niedrigeren CRF-Wert verwenden, z. B. einen Wert bis 18. Um eine kleinere Datei zu erhalten, verwenden Sie einen höheren CRF-Wert. Beachten Sie jedoch, dass dies die Qualität beeinträchtigt.

Verwenden Sie einen höheren Qualitätswert, um die Audioqualität zu verbessern. Bei FAAC 100ist dies die Standardeinstellung.


Hier einige Gedanken zum Befehl ffmpeg, der in der Frage vorgeschlagen wurde.

-arbezieht sich auf die Audio-Abtastrate. Ich würde empfehlen, nicht damit herumzuspielen, bis Sie die Dinge besser verstanden haben. Wenn Sie mit Audiocodierung spielen möchten, passen Sie die Bitrate an (z. B. -b:a 128k) und lassen Sie den Encoder darauf basierend auswählen, was zu tun ist.

Wenn Sie am Ende diese Straße runter gehen ...

Die CD-Qualität beträgt 44100Hz Sampling; typisches Video verwendet 48000Hz.

Sie können feststellen, dass 22050 im Beispiel der ursprünglichen Frage 1/2 der CD-Qualitäts-Samplerate ist. Wenn Sie CD-Material herunterkonvertieren, ist dies eine gute Wahl. Wenn Sie mit einer 48-KHz-Quelle beginnen (was Sie wahrscheinlich sind; dies ist wiederum in Videodateien weitaus häufiger als 44100), würde ich stattdessen 24 KHz verwenden. Es wird wahrscheinlich nicht viel ausmachen, aber es könnte ein bisschen besser klingen und etwas weniger CPU für die Konvertierung benötigen.

Dan Pritts
quelle
Meine Antwort erneut lesen ... Zusätzlich zu der Befehlszeile, die ich oben angegeben habe, können Sie nur Video oder nur Audio kopieren und die andere neu codieren. Zum Beispiel ... "ffmpeg -i input.foo -vcodec copy -acodec libfaac -ab 128k -copyts output.mp4" kopiert den Videostream und kodiert das Audio neu in AAC. libfaac hat keine gute Qualität, aber es funktioniert.
Dan Pritts
Bezüglich des Befehls zum Erzwingen von Audio- / Video-Codecs: Ab September 2019 stellte ich fest, dass ffmpegdie Unterstützung fürlibaac . Diese Frage entweder schlägt mit ffmpeg‚nativen AAC - Codierer über -c:a aac oder das Fraunhofer FDK AAC - Codec über -c:a libfdk_aac (die erfordern Kompilieren ffmpegmit Unterstützung libfdk_aac).
Aresnick