Якість конверсії 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?


Дивіться поради з цієї теми
harrymc

Відповіді:


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.4програми 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 годин і виплюнув ідеальний файл MKV 2,4 Гб.


-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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.