utiliser ffmpeg pour transformer mp4 en un même fichier avi de haute qualité?

28

Je voudrais utiliser ffmpeg pour transformer un fichier vidéo mp4 en avi mais avec la même qualité, même s'il prend plus de place. Si je fais simplement:

ffmpeg -i file.mp4 file.mp4.avi

Le fichier avi résultant est de très mauvaise qualité et pixellisé. Comment puis-je effectuer cette transformation tout en conservant la qualité vidéo et audio?

719016
la source
3
Vous pouvez utiliser le -sameqcommutateur, qui mettra le même codec vidéo (en supposant H264) dans le conteneur AVI. Si votre lecteur ne prend pas en charge H264 en AVI, vous devez transcoder le meilleur format vidéo possible (H264) en un format médiocre, ce qui n'est pas bon. Ensuite, vous attribuez un débit vidéo XVID plus élevé (disons 2000 Ko / s). L'audio n'a pas beaucoup d'importance à
mon humble avis

Réponses:

16

Vous perdez toujours un peu de qualité chaque fois que vous transcodez d'un codec à un autre, 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:copypeut ê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 -sameqcommutateur. Vous pouvez également utiliser l' qscaleoption pour définir la qualité manuellement. Plus le nombre est bas, meilleure est la qualité, mais plus votre fichier prendra de l'espace.

La dernière fois que j'ai transcodé une vidéo, j'ai utilisé qscale=8.0, mais je vous suggère d'expérimenter pour trouver l'optimum correspondant à la qualité de votre entrée.

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, ce qui est un bon moyen d'obtenir une meilleure compression sans sacrifier la qualité.

John S Gruber
la source
Merci pour les conseils, je vais essayer de -sameqvoir comment ça se passe.
719016
8
-sameq ne signifie PAS la même qualité; ffmpeg.org/trac/ffmpeg/wiki/…
3
Il semble recommandé d'utiliser l' -qscale 0option
user989762
Assez vieux, mais j'ai reçu cet avertissement en essayant de le faire aujourd'hui:Option 'sameq' was removed. If you are looking for an option to preserve the quality (which is not what -sameq was for), use -qscale 0 or an equivalent quality factor option.
Dave Lugg
10

Ma solution:

ffmpeg -i filename.mp4 -vcodec copy -acodec copy filename.avi

Prendre plaisir!!

kuba
la source
2
Sachez que l'incorporation de flux AVC dans des conteneurs AVI nécessite un piratage pris en charge par de nombreux lecteurs vidéo communautaires (par exemple VLC, MPlayer, quoi que ce soit FFmpeg / Libav ou GStreamer, Media Player Classic) mais pas par de nombreux joueurs commerciaux (par exemple, Windows Media Player et QuickTime / iTunes ne le prennent pas en charge).
David Foerster
4

Voici mon 2-pass (Advanced Simple Profile) que j'utilise de temps en temps.

réussite 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

réussite 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
duffydack
la source
C'est super, m'a produit un très petit avi de très bonne qualité!
jpo38