Как конвертировать MKV в AVI с минимальными потерями


23

Чтобы преобразовать MKV в AVI, я делаю две вещи. Первое, что я делаю, это:

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

или это:

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

Любой из них преобразует MKV в AVI, но проблема в том, что видео по какой-то причине не воспроизводится плавно. Это нормально, потому что, если я сделаю еще одну вещь, это будет исправлено:

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

После этого файл воспроизводится без проблем. Мне удалось сделать это таким образом для одного файла, но затем я попробовал его для другого файла, и есть небольшая, но заметная потеря качества видео. Это вывод, который я получаю при выполнении второго шага:

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

Я просто использовал произвольно большие настройки на втором шаге, и раньше он работал хорошо, но не в этом случае. Какие настройки я должен использовать?


Вот что ffmpeg дал мне для sameq: опция 'sameq' была удалена. Если вы ищете опцию для сохранения качества (а не для -sameq), используйте -qscale 0 или эквивалентную опцию показателя качества.
DavidG

Ответы:


25

Для того, чтобы просто скопировать видео и аудио поток битов, таким образом, без потери качества:

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

Если вы хотите, чтобы FFmpeg автоматически конвертировал видео и аудио:

ffmpeg -i filename.mkv output.avi

7
Настройки FFmpeg по умолчанию, как правило, ужасны. Вот общее руководство по кодированию с использованием различных кодеков; В FFmpeg есть более подробные руководства.
evilsoup

Первый созданный код поврежденный файл не воспроизводится в VLC.
codemirror

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

Мое предложение: используйте mpeg4 + mp3 в контейнере avi.


1

Попробуйте использовать ffmulticonverter. Очень полезно для меня: это своего рода графический интерфейс для ffmpeg, и вы можете легко установить все параметры. Кроме того, вы можете найти список всех возможных форматов видео.

LP


-3

Могу ли я порекомендовать ярлык, который я использую регулярно?

ffmpeg -i filename.mkv -sameq output.avi

4
sameq не означает то же качество и не должно использоваться. На самом деле он был полностью удален из ffmpeg. Скорее установите качество, используя то, что обеспечивает целевой кодек.
Slhck
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.