Comment convertir un MKV en AVI avec une perte minimale

23

Pour convertir un MKV en AVI, je fais deux choses. La première chose que je fais est la suivante:

ffmpeg -i filename.mkv -vcodec copy -acodec copy output.avi

ou ca:

ffmpeg -i filename.mkv -sameq -acodec copy output.avi

L'un ou l'autre convertira le MKV en AVI, mais le problème est que la vidéo ne joue pas correctement pour une raison quelconque. C'est bien, car si je fais encore une chose, cela se corrige:

ffmpeg -i output.avi -vcodec mpeg4 -b 4000k -acodec mp2 -ab 320k converted.avi

Après cela, le fichier est lu sans problème. J'ai réussi à le faire de cette façon pour un fichier, mais je l'ai ensuite essayé sur un autre fichier, et il y a une légère, mais notable perte de qualité vidéo. Voici la sortie que j'obtiens lors de la deuxième étape:

FFmpeg version 0.6.1, Copyright (c) 2000-2010 the FFmpeg developers
  built on Dec 29 2010 18:02:10 with gcc 4.2.1 (Apple Inc. build 5664)
  configuration: 
  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0.11. 0 /  0.11. 0

Seems stream 0 codec frame rate differs from container frame rate: 359.00 (359/1) -> 29.92 (359/12)
Input #0, avi, from 'output.avi':
  Metadata:
    ISFT            : Lavf52.64.2
  Duration: 00:04:17.21, start: 0.000000, bitrate: 3074 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 704x480 [PAR 229:189 DAR 5038:2835], 29.92 fps, 29.92 tbr, 29.92 tbn, 359 tbc
    Stream #0.1: Audio: vorbis, 48000 Hz, stereo, s16
Output #0, avi, to 'converted.avi':
  Metadata:
    ISFT            : Lavf52.64.2
    Stream #0.0: Video: mpeg4, yuv420p, 704x480 [PAR 229:189 DAR 5038:2835], q=2-31, 4000 kb/s, 29.92 tbn, 29.92 tbc
    Stream #0.1: Audio: mp2, 48000 Hz, stereo, s16, 320 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1

J'ai juste utilisé des paramètres arbitrairement grands lors de la deuxième étape et cela fonctionnait bien avant mais pas dans ce cas. Quels paramètres dois-je utiliser?

tony_sid
la source
C'est ce que ffmpeg m'a donné pour sameq: l'option 'sameq' a été supprimée. Si vous recherchez une option pour préserver la qualité (ce qui n'est pas le cas de -sameq), utilisez -qscale 0 ou une option de facteur de qualité équivalent.
DavidG

Réponses:

25

Afin de copier simplement le flux binaire vidéo et audio, donc sans perte de qualité:

ffmpeg -i filename.mkv -c:v copy -c:a copy output.avi

Si vous souhaitez que FFmpeg convertisse automatiquement la vidéo et l'audio:

ffmpeg -i filename.mkv output.avi
RobotHumains
la source
7
Les paramètres par défaut de FFmpeg ont tendance à être horribles. Voici un guide général d'encodage avec différents codecs; le wiki FFmpeg contient des guides plus approfondis.
evilsoup
le premier fichier créé par le code qui était corrompu ne jouait pas dans VLC.
codemirror
18
 ffmpeg -i "input.mkv" -f avi -c:v mpeg4 -b:v 4000k -c:a libmp3lame -b:a 320k "converted.avi"

Ma suggestion: utilisez mpeg4 + mp3 dans le conteneur avi.

Ken
la source
1

Essayez d'utiliser ffmulticonverter. Très utile pour moi: c'est une sorte de GUI pour ffmpeg et vous pouvez régler facilement tous les paramètres. De plus, vous pouvez trouver une liste de tous les formats vidéo possibles.

LP

user155915
la source
-3

Puis-je recommander un raccourci que j'utilise régulièrement?

ffmpeg -i filename.mkv -sameq output.avi
CarlF
la source
4
sameq ne signifie pas la même qualité et ne doit pas être utilisé. En fait, il a été complètement supprimé de ffmpeg. Définissez plutôt la qualité en utilisant tout ce que le codec cible fournit.
slhck