Conversion de FLV en MP4 à l'aide de FFMPEG et préservation de la qualité

26

J'essaie d'utiliser ffmpeg pour convertir mes fichiers flv en mp4 pour les lire sur des appareils iOS, mais la vidéo convertie est de bien pire qualité que celle d'origine.

Voici la commande que j'utilise:

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

J'apprécierais vraiment si quelqu'un pouvait me fournir les meilleurs paramètres pour la conversion flv en mp4.


la source

Réponses:

42

Selon les codecs utilisés dans votre FLV, vous pourrez peut-être vous en sortir en le reconditionnant simplement dans un conteneur mp4. Vous aurez besoin H.264ou MPEG4 simple profilevidéo et AACaudio. Vous pouvez trouver des informations sur votre fichier source avecffmpeg -i input.flv

Je ne sais pas si le simple fait d'avoir H.264 / MPEG4 Simple + AAC est suffisant ou s'il existe des options spécifiques aux codecs pris en charge. Il est assez facile de tester:

Essayez d'utiliser

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

-copytsest- copy timestampsce que cela aidera la synchronisation audio.

Si cela ne fonctionne pas, essayez de forcer les codecs audio et vidéo. Cela ré-encodera le fichier:

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

Pour améliorer la qualité vidéo, vous pouvez utiliser une valeur CRF inférieure, par exemple n'importe quoi jusqu'à 18. Pour obtenir un fichier plus petit, utilisez un CRF supérieur, mais notez que cela dégradera la qualité.

Pour améliorer la qualité audio, utilisez une valeur de qualité supérieure. Pour FAAC, 100c'est la valeur par défaut.


Voici quelques réflexions sur la commande ffmpeg suggérée dans la question.

-arfait référence à la fréquence d'échantillonnage audio. Je recommanderais de ne pas jouer avec ça jusqu'à ce que vous compreniez mieux. Si vous souhaitez jouer avec l'encodage audio, ajustez le débit binaire (par exemple, -b:a 128k) et laissez l'encodeur choisir quoi faire en fonction de cela.

Si vous finissez par emprunter cette voie ...

La qualité CD est un échantillonnage de 44100 Hz; la vidéo typique utilise 48000Hz.

Vous pouvez noter que 22050 dans l'exemple de la question d'origine est la moitié de la fréquence d'échantillonnage de qualité cd. si vous convertissez du matériel CD, c'est un bon choix. Si vous commencez avec une source 48KHz (ce que vous êtes probablement; encore une fois, c'est beaucoup plus courant que 44100 dans les fichiers vidéo), j'utiliserais 24Khz à la place. Cela n'aura probablement pas beaucoup d'importance, mais cela peut sembler un peu meilleur et utiliser un peu moins de CPU pour effectuer la conversion.

Dan Pritts
la source
relire ma réponse ... En plus de la ligne de commande que j'ai donnée ci-dessus, vous pouvez copier uniquement de la vidéo ou uniquement de l'audio, et réencoder l'autre. par exemple ... "ffmpeg -i input.foo -vcodec copy -acodec libfaac -ab 128k -copyts output.mp4" cela copiera le flux vidéo et réencodera l'audio en AAC. libfaac n'a pas une grande qualité mais ça marche.
Dan Pritts
En ce qui concerne la commande forçant les codecs audio / vidéo: à partir de septembre 2019, j'ai trouvé que la ffmpegprise en charge était interrompuelibaac . Cette question suggère d'utiliser soit ffmpegle codeur AAC natif de via, -c:a aac soit le codec Fraunhofer FDK AAC via -c:a libfdk_aac (qui nécessitent une compilation ffmpegavec prise en charge de libfdk_aac).
aresnick