Качество преобразования VOB в FFmpeg

16

Я пытаюсь преобразовать файл VOB в MPEG, как это:

./ffmpeg.exe -i VTS_01_2.VOB -r 24  out1.mpeg

Однако качество очень плохое.

Я старался ./ffmpeg.exe -i VTS_01_2.VOB -vcodec copy out1.mpeg

Но размер файла слишком велик (90% оригинала - 300 МБ для 4-минутного видео), и Windows Movie Maker зависает при попытке его импортировать.

Как я могу получить MPEG достойного качества из моего VOB?

slhck
источник

Ответы:

28
ffmpeg -i input.vob -c:v copy -c:a copy output.mpg  

Эта команда не уменьшает размер и не изменяет качество. Это просто демультиплексирует VOB и переупаковывает его как MPEG. Вы должны остаться с точно таким же качеством. Размер изменяется минимально из-за потери накладных расходов контейнера VOB.

Если вы хотите сохранить качество и уменьшить размер, вам придется преобразовать его с помощью другого кодировщика, такого как x264 или XviD, в контейнер MKV или MP4, например:

ffmpeg -i input.vob -c:v libx264 -c:a aac -strict experimental output.mp4

Это даст вам видео H.264 и аудио AAC. Установите -crf 23для качества видео, где меньше означает лучшее качество (значения от 18 до 28). Качество звука можно изменить с помощью -b:a 192kфиксированной скорости передачи данных, или, если вы хотите использовать другой кодер, например -c:a libfaac, вы можете выбрать VBR с -q:a 100(качество по умолчанию 100%).

Стэнли Уильямс
источник
Я вижу, это хорошая информация, чтобы знать. Все еще ищем какой-то разумный способ сжатия и поддержания качества (наверняка, возможно, потребуется 4 минуты при достойном качестве в 10-20 МБ ... возможно, даже 50 МБ - это хорошо).
1
Что делать, если есть другие VOB, который является частью фильма. Ffmpeg знает, чтобы включить их?
Вс
1
Вы можетеcat *.VOB > output.vob
dmgl
Для Windows, если вы в первую очередь необходимо объединить несколько VOBs: copy /b "1.vob" + "2.vob" + "3.vob" "temp.vob". См. Также stackoverflow.com/a/29729610
Basj
4

Недавно я занимался кодированием VOB после копирования нескольких незаменимых DVD. Использование ffmpeg version 1.2.4out of Homebrew на OSX:

ffmpeg -probesize 2G -analyzeduration 2G \
    -i VTS_04.VOB \
    -map 0:0 -map 0:1 -map 0:2 -map 0:9 \
    -metadata:s:a:0 language=eng -metadata:s:a:0 title="English Stereo" \
    -metadata:s:a:1 language=jap -metadata:s:a:1 title="Japanese Stereo" \
    -metadata:s:s:0 language=eng -metadata:s:s:0 title="English"
    -c:v libx264 -filter:v yadif -crf 18 -level 3.1 -tune film \
    -c:a copy \
    -c:s copy \
    OutputMovie.mkv

Я должен был установить, -probesizeи -analyzedurationтак как VOB-файл 5.4 ГБ имел потоки, начинающиеся позже в файле, которые не найдены без этих опций.

Затем -mapпараметр позволяет мне выбирать, какие потоки передавать на выход - видеопоток, первые два аудиопотока и 9-й поток, которые являются субтитрами. Используйте ffprobe(с помощью -probesize&, -analyzedurationчтобы увидеть список потоков).

Добавьте некоторые из них -metadataв потоки аудио и субтитров на выходе.

Варианты кодирования видео после -c:vтого, как вы можете прочитать о другом месте .

Наконец, скопируйте как-есть потоки аудио и субтитров в выходной файл. Вывод должен быть MKVдля правильного встраивания субтитров и всех метаданных.

На моем Macbook Air 2011 это кодирование заняло около 6 часов и вылилось в идеальный 2,4 ГБ файл MKV.

mafrosis
источник
-1

Синтаксис в предыдущем ответе не работает на моей Mac OS. Похоже, что этот работает нормально, с немного другими опциями ( -sameqдля соответствия входному квантователю, -ssдля смещения времени начала и -tпродолжительности):

ffmpeg -i VTS_01_1.VOB -sameq -strict experimental -ss 1612 -t 28 test.mpg
Джефф
источник
3
Ответы сортируются по голосованию, а не по времени. Вы должны отредактировать свой ответ, чтобы было ясно, какой предыдущий ответ вы имеете в виду.
Исаак Рабинович
1
Вы должны использовать старую версию, так как -sameqопция устарела. В старых версиях используйте -vcodec/ -acodecвместо -c:v/ -c:a.
mark4o