конвертировать расшифрованные .vobs в .avi с помощью ffmpeg на ubuntu

конвертировать расшифрованные .vobs в .avi с помощью ffmpeg на ubuntu

У меня есть файл .vob, скопированный с DVD. Когда я смотрю файл .vob, то вижу видео очень хорошего качества и 5.1-канальный английский звук. Но когда я использую ffmpeg, то вижу ужасное видео и монофонический французский звук.

Это было с помощью этой команды:

ffmpeg -i /samba/ripping/vobs/12161840#2.vob -f avi /samba/ripping/avis/test.avi

Я пробовал несколько разных вариантов, но ничего хорошего не вышло, только большие файлы с плохим видео и неправильным звуком.

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

ffmpeg выдает данные .vob следующим образом:

Input #0, mpeg, from '/samba/ripping/vobs/12161840#2.vob':
   Duration: 00:42:05.56, start: 0.287267, bitrate: 5738 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 720x576 [PAR 64:45 DAR 16:9], 8436 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0.1[0x80]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
    Stream #0.2[0x81]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
    Stream #0.3[0x82]: Audio: ac3, 48000 Hz, mono, s16, 192 kb/s
Output #0, avi, to '/samba/ripping/avis/test.avi':
  Metadata:
    ISFT            : Lavf52.64.2
    Stream #0.0: Video: mpeg4, yuv420p, 720x576 [PAR 64:45 DAR 16:9], q=2-31, 200 kb/s, 25 tbn, 25 tbc
    Stream #0.1: Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
Stream mapping:
   Stream #0.0 -> #0.0
   Stream #0.3 -> #0.1

решение1

Параметры кодирования по умолчанию низкие, например, аудио битрейт 64k. Вы можете увеличить эти значения с помощью дополнительных параметров командной строки:

ffmpeg -i sourcefile.vob -ab 128kb -qscale 4 newfile.avi

-ab 128kbустанавливает средний битрейт звука на 128 кбит/с и -qscale 3задает шкалу квантизатора видео, где q — это 1 (наилучшее) или 31 (наихудшее) качество.

Для сравнения, для 5-минутного видео с разрешением 700x576 и звуком 128 Кб:

  • q 10 = ~40 МБ
  • д 4 = ~80 МБ

Сделав еще один шаг, вы можете пакетно преобразовать целую кучу vob-файлов в каталоге с помощью этой команды bash:

for f in *.vob; do ffmpeg -i "$f" -ab 128kb -qscale 4 "${f%%.vob}.avi"; done;

Мы заключаем $f в кавычки на случай, если в именах файлов есть пробелы, а ${f%%.vob} удаляет расширение vob, прежде чем мы добавим собственное расширение avi. (Это подстановка параметров в bash, очень полезно!http://tldp.org/LDP/abs/html/parameter-substitution.html)

Еще больше вариантов вы можете прочитать здесь:http://www.ffmpeg.org/ffmpeg-doc.html

Связанный контент