Как преобразовать файл VOB в avi?

10

Я пытаюсь преобразовать VOB-файл, скопированный с DVD, в avi в Ubuntu 13.10. Я пытался dvdrip, который не удалось из-за ошибки подсчета кадров или что-то. Я также попробовал acidrip, но он всегда выбирал аудиодорожку, которую не хотел использовать. Я бы предпочел иметь решение командной строки для создания AVI со следующими функциями:

  • можно использовать с mplayer (т.е. используя пошаговые функции)
  • с субтитрами, как требуется (или никто вообще)
  • с правильной звуковой дорожкой
  • с синхронизацией видео и аудио

Я попробовал некоторые ffmpegи avconvкоманды и удалось создать AVI, но видео и аудио были укомплектовать синхронизированы. Итак, какие варианты я должен использовать, чтобы преобразовать VOB-файл в AVI-файл?

Буду признателен за пояснения по предложенным вариантам!

Дополнительная информация:

  1. Команда ffmpegдает следующий вывод для входного файла

    Input #0, mpeg, from 'Videos/Test/VIDEO_TS/VTS_01_1.VOB':
      Duration: 00:04:53.32, start: 0.045500, bitrate: 29284 kb/s
        Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 8:9 DAR 4:3], 7500 kb/s, 27.68 fps, 59.94 tbr, 90k tbn, 59.94 tbc
        Stream #0.1[0x82]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
        Stream #0.2[0x80]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
        Stream #0.3[0x81]: Audio: ac3, 0 channels
    [buffer @ 0x15ca6e0] w:720 h:480 pixfmt:yuv420p
    
  2. Следующая команда

    ffmpeg -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -ss 589 -t 274 -sameq -acodec copy -ab 320k output.avi
    

    например привел к сбою моего сеанса Ubuntu.

  3. Следующая команда

    avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -acodec copy -vcodec copy output.avi
    

    например привел к следующей ошибке:

    Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374
    av_interleaved_write_frame(): Invalid argument
    
  4. Следующая команда

    avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k output.avi
    

    например привел к следующей ошибке:

    Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
    
  5. Следующая команда

    avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a ac3 -b:a 128k output.avi
    

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

    [ac3 @ 0x120d480] frame sync error
    Error while decoding stream #0:1
    frame CRC mismatch
    
  6. Следующая команда

    mencoder Videos/Test/VIDEO_TS/VTS_01_1.VOB -oac copy -ovc x264 -x264encopts bitrate=2500 -o output.avi
    

    сделал некоторые преобразования, но (i) использует субтитры, хотя я не хотел их использовать (ii) неправильно понял звук (аудио и видео ужасно неуместны) и (iii) кажется медленнее, чем на самом деле идет фильм (может потребоваться 2 часа для 90-минутного фильма).

  7. Я попытался дать команду здесь (третий пост от Xeratul), но остановился с ошибкой

    FATAL: Cannot initialize video driver.
    
  8. Я попробовал сделанное ниже предложение, чтобы посмотреть на страницу mencoder . Эта страница предлагает использовать два прохода:

    первая читает информацию о фильме, вторая использует эту информацию для кодирования.

    но не объясняется, какую информацию извлекать и как использовать ее во втором проходе. Поэтому я использовал следующую команду:

    mencoder Videos/Test/VIDEO_TS/VTS_01_1.VOB -nosound -ovc x264 \
    -x264encopts direct=auto:pass=2:bitrate=900:frameref=5:bframes=1:\
    me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
    -vf scale=-1:-10,harddup -o video.avi
    

    который конвертировал видео, но с нежелательными субтитрами. Не совсем понятно, как я могу избежать использования субтитров.

Alex
источник
ffmpegявляется устаревшим , так давно, вы должны использовать свой собственный преемник: avconv.
user2485710
Итак, как использовать avconvзатем для преобразования файлов VOB в AVI. Команда avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -acodec copy -vcodec copy test.aviвыдала ошибку Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374 av_interleaved_write_frame(): Invalid argument...
Алекс
в man-странице есть пример для avconv, для расшифрованных VOB-файлов avconv -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.aviпопробуйте это
user2485710
Это дает ошибкуError while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
Алекс
Попробуй mencoder yourvob -oac copy -ovc x264 -x264encopts pass=1:preset=veryslow:fast_pskip=0:tune=film:frameref=15:bitrate=3000:threads=auto -nosub -o /dev/nullтогда mencoder yourvob -oac copy -ovc x264 -x264encopts pass=2:preset=veryslow:fast_pskip=0:tune=film:frameref=15:bitrate=3000:threads=auto -nosub -o video.avi- взял это частично из Arch doc @ dg99 по ссылке.

Ответы:

6

Я полагаю, что чтобы избавиться от субтитров, вы можете добавить -nosubпереключатель сразу после имени файла .VOB.

пример

$ mencoder Videos/Test/VIDEO_TS/VTS_01_1.VOB -nosub -nosound -ovc x264 \
-x264encopts direct=auto:pass=2:bitrate=900:frameref=5:bframes=1:\
me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
-vf scale=-1:-10,harddup -o video.avi

подробности

Эти заклинания часто бывают очень плотными, поэтому немного сломать их

  • входной файл: Videos/Test/VIDEO_TS/VTS_01_1.VOB
  • выходной файл: -o video.avi
  • без субтитров: -nosub
  • не кодировать звук: -nosound
  • кодировать с помощью данного кодека: -ovc x264

список других кодеков

$ mencoder -ovc help
MEncoder SVN-r36171-4.8.1 (C) 2000-2013 MPlayer Team

Available codecs:
   copy     - frame copy, without re-encoding. Doesn't work with filters.
   frameno  - special audio-only file for 3-pass encoding, see DOCS.
   raw      - uncompressed video. Use fourcc option to set format explicitly.
   nuv      - nuppel video
   lavc     - libavcodec codecs - best quality!
   libdv    - DV encoding with libdv v0.9.5
   xvid     - XviD encoding
   x264     - H.264 encoding
  • Опции кодирования x264: x264encopts
  • установить режим для векторов прямого движения :direct=auto
  • количество проходов :pass=2
  • битрейт целевой кодировки: bitrate=900
  • заранее. кадры, используемые в качестве предикторов в B- и P-кадрах (def: 3):frameref=5
  • одновременное количество B-кадров: bframes=1
  • оценка движения fullpixel alg .: me=umh

    ПРИМЕЧАНИЕ: эм - неравномерный поиск по шестиугольникам (медленно)

  • включить все типы макроблоков: partitions=all

  • оптимальное квантование с искажением скорости: trellis=1

    ПРИМЕЧАНИЕ: 2 - включено во всех режимных решениях (медленно, требует subq> = 6)

  • значение приращения / замедления квантователя: qp_step=4

    ПРИМЕЧАНИЕ: максимальное значение, на которое квантователь может увеличиваться / уменьшаться между кадрами (по умолчанию: 4)

  • Сжатие квантователя (по умолчанию: 0,6): qcomp=0.7

  • прогнозирование движения для макроблоков в B-кадрах: direct_pred=auto
  • максимальный интервал между ключевыми кадрами в кадрах: keyint=300

  • опции после этого - видео фильтры: -vf

ПРИМЕЧАНИЕ. Для переключателей видеофильтра важно использовать его harddupв качестве последнего фильтра: он заставит MEncoder записывать каждый кадр (даже дубликаты) в вывод. Кроме того , необходимо использовать scale=$WIDTH,-10с , $WIDTHкак -1сохранить первоначальную ширину или новую, как правило , меньше, ширину: это необходимо , так как кодек H.264 использует квадратные пиксели и DVD - диски вместо того, чтобы использовать прямоугольные пиксели.

  • scale=-1
  • -10
  • harddup
SLM
источник
Большое спасибо за этот хорошо объясненный пример того, как получить видео. Кажется, ваша предложенная команда отлично подходит для извлечения видео. Тем не менее, у меня нет звука сейчас. Если я использую вашу команду без -noaudioи с, -oac copyя получаю аудио, которое не синхронизировано с видео. Это или смещено, с другой скоростью или обоими. Любое предложение, как я могу получить также правильный звук? А как насчет нескольких файлов VOB? Как упаковать контент в один .aviфайл (или другой формат)?
Алекс
@ Алекс - просто мысль, но я не думаю, что вы можете просто сделать -oac copy2 прохода, так как вы перекодируете видео, вам придется перекодировать аудио вместе с ним. Что касается «упаковки» их, файлы VOB должны быть объединены это понравилось: cat *.vob all.vob. Тогда используйте all.vobв mencoder cmd. Есть и другие способы сделать это тоже.
SLM
3

Если вы намереваетесь использовать mplayer, то вам следует попробовать mencoder( http://www.mplayerhq.hu ). Одна из его лучших особенностей - то, что параметры воспроизведения, которые вы знаете по mplayerповедению, ведут себя почти так же, как при кодировании. Кроме того, есть много документации и электронных писем, охватывающих именно то, что вы спрашиваете:

dg99
источник
Предоставленные ссылки содержат десятки различных примеров и сотни вариантов. Это не четкий и точный ответ на мой вопрос.
Алекс
1
Правда, но я не написал ответ, чтобы получить репутацию, я написал его, чтобы помочь вам. Не забудьте прочитать некоторые mencoderстраницы. Есть несколько пиратских групп, которые используют только mencoderдля всей своей работы; вот как это просто, мощно и автоматизировано.
dg99
2

Я знаю, что это старая публикация, но при поиске этой проблемы в Интернете всплывает вышеуказанный вопрос, а некоторые другие записи еще старше.

Я пробовал разные инструменты, но в итоге я больше всего доволен этой командой:

ffmpeg -i *.vob -c:v libx264 -crf 20 -c:a libmp3lame -ac 2 -ab 192k output.avi

Это небольшая модификация того, что я нашел здесь .

Я только что заменил аудиокодек ( libflacотсутствовал в моей системе, поэтому я заменил его на libmp3lame( источник ) и -crfзначение для повышения качества. Можно использовать и другие форматы, например mp4.

В моем тесте (с довольно посредственным процессором) файл VOB объемом 2,6 ГБ (уже объединенный из трех других файлов) был преобразован в 960 МБ видео AVI сопоставимого качества примерно за 50 минут.

20 - среднее приемлемое качество (в справочных статьях о ручном тормозе, которые я видел). Большие числа уменьшают размер за счет качества. Выше 20 потеря качества очевидна.

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

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

Как это сделать, зависит от файлового менеджера. Команду можно легко добавить к Тунару и Наутилусу как «настраиваемое действие». Я добавил его в Dolphin с таким ~/.kde/share/kde4/services/ServiceMenus/convert_vob_to_avi.desktopфайлом:

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin,video/mpeg
MimeType=video/mpeg
Actions=Convert2avi
X-KDE-Submenu=Convert vob (DVD video)
Encoding=UTF8

[Desktop Action Convert2avi]
Name=to avi
Icon=video
Exec=konsole -e ffmpeg -i *.vob -c:v libx264 -crf 20 -c:a libmp3lame -ac 2 -ab 192k output.avi

введите описание изображения здесь


источник