Ich versuche, meine FLV-Dateien mit ffmpeg 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 verwende:
ffmpeg -i input.flv -ar 22050 output.mp4
Ich wäre sehr dankbar, wenn mir jemand die besten Einstellungen für die Konvertierung von FLV in MP4 mitteilen könnte.
Antwort1
Abhängig von den Codecs, die in Ihrem FLV verwendet werden, können Sie es vielleicht einfach in einen MP4-Container umpacken. Sie benötigen H.264
Video MPEG4 simple profile
und AAC
Audio. Sie können einige Informationen zu Ihrer Quelldatei mitffmpeg -i input.flv
Ich bin mir nicht sicher, ob H.264/MPEG4 Simple + AAC ausreicht oder ob es spezielle Optionen für die unterstützten Codecs gibt. Das lässt sich ganz einfach testen:
Versuchen Sie es mit
ffmpeg -i input.flv -c copy -copyts output.mp4
-copyts
ist copy timestamps
. Es hilft bei der Audiosynchronisierung.
Wenn das nicht funktioniert, versuchen Sie, Audio- und Video-Codecs zu erzwingen. Dadurch wird die Datei neu kodiert:
ffmpeg -i input.flv -c:v libx264 -crf 23 -c:a aac -b:a 160k output.mp4
Wenn Sie nur den Audio- oder nur den Video-Codec ändern möchten, können Sie -c:a copy
oder verwenden -c:v copy
, um den Codec zu kopieren, den Sie behalten möchten.
Um die beim Transkodieren verwendete Videoqualität zu verbessern, können Sie einen niedrigeren CRF-Wert verwenden, z. B. einen Wert bis hinunter zu 18. Um eine kleinere Datei zu erhalten, verwenden Sie einen höheren CRF, beachten Sie jedoch, dass sich dadurch die Qualität verschlechtert.
Um die Audioqualität zu verbessern, wählen Sie eine höhere Bitrate (160 K im obigen Beispiel).
Sowohl bei der Audio- als auch bei der Videoqualität hängen Ihre Ergebnisse von der Qualität der Quelle ab. Bedenken Sie, dass Sie mit jeder Originalquelle nur begrenzte Möglichkeiten haben – im besten Fall erhalten Sie die gleiche Qualität wie die Quelle. Es lohnt sich auf jeden Fall, mit verschiedenen Qualitätsstufen und/oder Bitraten zu experimentieren.
Weitere Informationen zur FFMPEG-AAC-Kodierung(Ich habe mich auf den „nativen“ Encoder bezogen, der auf der ffmpeg-Site beschrieben wird).
Bezüglich des in der Frage vorgeschlagenen ffmpeg-Befehls ...
-ar
bezieht sich auf die Audio-Abtastrate. Ich empfehle, diesen Parameter überhaupt nicht zu verändern. Wenn Sie mit der Audiokodierung experimentieren möchten, passen Sie die Bitrate an ( -b:a 160k
siehe oben) und lassen Sie den Encoder basierend darauf entscheiden, was zu tun ist.
Für den Hintergrund beträgt die CD-Qualität allerdings 44.100 Hz Sampling; bei einem typischen Video werden 48.000 Hz verwendet.
Möglicherweise fällt Ihnen auf, dass 22050 im Beispiel der ursprünglichen Frage die Hälfte der Abtastrate in CD-Qualität ist. Wenn Sie CD-Material herunterkonvertieren, wäre dies eine gute Wahl. Wenn Sie mit einer 48-kHz-Quelle beginnen, würde ich stattdessen 24 kHz verwenden. (Aber auch hier würde ich empfehlen, einfach eine Zielbitrate auszuwählen und den Encoder die Abtastrate bei Bedarf ändern zu lassen.)
Informationen zu den Abtastraten des Originalmaterials sollten Sie über den ffmpeg -i
Befehl erhalten, den ich oben vorgeschlagen habe.