Come convertire un MKV in AVI con una perdita minima


23

Per convertire un MKV in AVI, faccio due cose. La prima cosa che faccio è questa:

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

o questo:

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

Entrambi questi convertiranno l'MKV in un AVI, ma il problema è che il video non viene riprodotto correttamente per qualche motivo. Va bene però, perché se faccio un'altra cosa viene risolto:

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

Dopo averlo fatto, il file viene riprodotto senza problemi. Ho avuto successo nel farlo in questo modo per un file, ma poi l'ho provato su un altro file e c'è una leggera, ma evidente perdita di qualità video. Questo è l'output che ottengo quando eseguo il secondo passaggio:

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

Ho usato solo impostazioni arbitrariamente grandi sul secondo passaggio e ha funzionato bene prima ma non in questo caso. Quali impostazioni dovrei usare?


Questo è quello che mi ha dato ffmpeg per sameq: l'opzione 'sameq' è stata rimossa. Se stai cercando un'opzione per preservare la qualità (che non era lo scopo di -sameq), usa -qscale 0 o un'opzione di fattore di qualità equivalente.
DavidG

Risposte:


25

Per copiare semplicemente il bitstream video e audio, quindi senza perdita di qualità:

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

Se vuoi che FFmpeg converta automaticamente video e audio:

ffmpeg -i filename.mkv output.avi

7
Le impostazioni predefinite di FFmpeg tendono ad essere terribili. Ecco una guida generale alla codifica con vari codec; la wiki di FFmpeg ha guide più approfondite.
evilsoup,

il primo file creato da codice che era corrotto non veniva riprodotto in VLC.
codemirror,

18
 ffmpeg -i "input.mkv" -f avi -c:v mpeg4 -b:v 4000k -c:a libmp3lame -b:a 320k "converted.avi"

Il mio consiglio: usa mpeg4 + mp3 nel contenitore avi.


1

Prova a usare ffmulticonverter. Molto utile per me: è una sorta di GUI per ffmpeg e puoi impostare facilmente tutti i parametri. Inoltre puoi trovare un elenco di tutti i possibili formati video.

LP


-3

Posso raccomandare una scorciatoia che uso regolarmente?

ffmpeg -i filename.mkv -sameq output.avi

4
sameq non significa la stessa qualità e non dovrebbe essere usato. In realtà è stato rimosso del tutto da ffmpeg. Piuttosto imposta la qualità usando qualunque cosa il codec target fornisca.
slhck,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.