Je voudrais utiliser ffmpeg pour transformer un fichier vidéo mp4 en avi mais avec la même qualité, même s’il occupe davantage d’espace. Si je fais simplement:
ffmpeg -i file.mp4 file.mp4.avi
Le fichier avi résultant est de très basse qualité et pixelisé. Comment puis-je effectuer cette transformation tout en conservant la qualité vidéo et audio?
Vous perdez toujours un peu de qualité lorsque vous convertissez d'un codec, vidéo ou audio, mais vous pouvez peut-être l'éviter si vous souhaitez uniquement passer du type de conteneur MP4 à un conteneur AVI. codec:copy
peut être utile si vous n'avez pas de raison de transcoder (et cela devrait être plus rapide).
Si vous devez transcoder parce que vous devez utiliser un codec vidéo particulier, j'espère que vous pourrez utiliser la suggestion de zetah ci-dessus dans son commentaire et utiliser le commutateur -sameq
. Vous pouvez également utiliser l’option qscale
pour définir la qualité manuellement. Plus le nombre est bas, meilleure est la qualité, mais plus votre fichier prendra de la place.
La dernière fois que j'ai transcodé une vidéo, j'ai utilisé qscale=8.0
, mais je vous conseillerais de faire des essais pour trouver l'optimum correspondant à la qualité de vos entrées.
Marty Jay mentionne utilement que sameq signifie le même quantificateur que dans l'entrée, ce qui peut ne pas donner la même qualité. L'article qu'il cite mentionne l'utilisation de la conversion multi-passes, qui est un bon moyen d'obtenir une meilleure compression sans sacrifier la qualité.
Ma solution:
ffmpeg -i filename.mp4 -vcodec copy -acodec copy filename.avi
Prendre plaisir!!
Voici mon 2 passes (Advanced Simple Profile) que j'utilise de temps en temps.
passe 1:
ffmpeg -i file.mp4 -vcodec mpeg4 -vtag XVID -b 990k -bf 2 -g 300 -s 640x360 -pass 1 -an -threads 0 -f rawvideo -y /dev/null
passe 2:
ffmpeg -i file.mp4 -vcodec mpeg4 -vtag XVID -b 990k -bf 2 -g 300 -s 640x360 -acodec libmp3lame -ab 128k -ar 48000 -ac 2 -pass 2 -threads 0 -f avi file.avi