ffmpeg ändert die Größe des Videos, behält aber die Audioqualität bei

0
ffmpeg -i input.mp4 -vf scale=640x360,setdar=16:9 -c:v libx264 -preset veryslow -profile:v main -crf 18 -b:a 189k output.mp4

Meine Eingangsvideodatei: Res: 720p und Audio-Bitrate: 189kbps. Ich habe gehört, dass die Auswahl der gleichen Audio-Bitrate wie bei der Quelle die Audioqualität der Ausgabedatei verschlechtert.

Meine Frage ist, wie man die Audioqualität der videodatei beibehält?

Meine Unterfrage ist, ob der voreingestellte Veryslow irgendetwas mit dem Audio zu tun hat.

user71169
quelle

Antworten:

2

Kopie streamen (Re-Mux)

Sie können eine Kopie statt einer Kodierung streamen . Stellen Sie es sich wie eine Kopie vor und fügen Sie es ein. Ihr Befehl würde dann so aussehen:

ffmpeg -i input.mp4 -vf scale=640x360,setdar=16:9 -c:v libx264 \
-preset veryslow -profile:v main -crf 18 -c:a copy output.mp4

Da das Audio gerade kopiert wird, tritt kein Qualitätsverlust auf, und es wird schnell, da keine Codierung stattfindet.


Kodieren

Manchmal können Sie keine Kopien streamen, da das Ausgabeformat das Format der Eingabe möglicherweise nicht unterstützt. Daher ist eine Codierung erforderlich.

Da Sie auf MP4 ausgeben, erwähne ich nur die AAC-Audiocodierung. ffmpegkann mehrere AAC-Audio-Encoder unterstützen, aber nur zwei sind erwähnenswert:

libfdk_aac

Dies ist der beste Encoder, der von unterstützt wird ffmpeg, aber seine Lizenz ist nicht mit der GPL kompatibel, was dazu führt, dass nur sehr wenige (wenn überhaupt) verteilte Builds diesen Encoder unterstützen. Sie können jedoch einer Anleitung zur Kompilierungffmpeg mit Unterstützung für diesen Encoder folgen .

ffmpeg -i input -c:a libfdk_aac -vbr 5 output.mp4

aac

Der native FFmpeg-AAC-Encoder ist in allen Builds verfügbar. Es wird als experimentell angesehen, aber mit genügend Bits sollte es in den meisten Fällen gut klingen.

ffmpeg -i input -c:a aac -strict experimental -b:a 192k output.mp4

Siehe auch

Logan
quelle