Como converter um MKV para AVI com perda mínima

23

Para converter um MKV para AVI, faço duas coisas. A primeira coisa que faço é esta:

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

ou isto:

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

Qualquer um deles converterá o MKV em um AVI, mas o problema é que o vídeo não é reproduzido sem problemas por algum motivo. Tudo bem, porém, porque se eu fizer mais uma coisa, isso será corrigido:

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

Depois de fazer isso, o arquivo é reproduzido sem problemas. Consegui fazê-lo dessa maneira em um arquivo, mas tentei em outro arquivo e há uma perda leve, mas perceptível, na qualidade do vídeo. Esta é a saída que recebo ao executar o segundo passo:

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

Eu apenas usei configurações arbitrariamente grandes na segunda etapa e funcionou bem antes, mas não neste caso. Quais configurações devo usar?

tony_sid
fonte
Isto é o que o ffmpeg me deu para sameq: a opção 'sameq' foi removida. Se você estiver procurando por uma opção para preservar a qualidade (o que não era o que -sameq era), use -qscale 0 ou uma opção de fator de qualidade equivalente.
DavidG

Respostas:

25

Para copiar apenas o fluxo de bits de vídeo e áudio, sem perda de qualidade:

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

Se você deseja que o FFmpeg converta vídeo e áudio automaticamente:

ffmpeg -i filename.mkv output.avi
RobotHumans
fonte
7
As configurações padrão do FFmpeg tendem a ser terríveis. Aqui está um guia geral para codificação com vários codecs; o wiki do FFmpeg tem guias mais detalhados.
evilsoup
O primeiro arquivo criado com código corrompido não foi reproduzido no VLC.
Codemirror
18
 ffmpeg -i "input.mkv" -f avi -c:v mpeg4 -b:v 4000k -c:a libmp3lame -b:a 320k "converted.avi"

Minha sugestão: use mpeg4 + mp3 no contêiner avi.

Ken
fonte
1

Tente usar o conversor ffmultic. Muito útil para mim: é uma espécie de interface gráfica para o ffmpeg e você pode definir facilmente todos os parâmetros. Além disso, você pode encontrar uma lista de todos os formatos de vídeo possíveis.

LP

user155915
fonte
-3

Posso recomendar um atalho que uso regularmente?

ffmpeg -i filename.mkv -sameq output.avi
CarlF
fonte
4
sameq não significa a mesma qualidade e não deve ser usado. De fato, foi completamente removido do ffmpeg. Em vez disso, defina a qualidade usando o que o codec de destino fornecer.
slhck