Як конвертувати файл 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
    

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


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...
Алекс

є приклад на сторінці для 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
  • висота оцінки руху повного пікселя: me=umh

    ПРИМІТКА: umh - нерівномірний пошук у шестикутнику (повільний)

  • увімкнути всі типи макроблок: partitions=all

  • оптимальне квантування швидкості-спотворення: trellis=1

    ПРИМІТКА: 2 - увімкнено під час прийняття рішень у всіх режимах (повільно, потрібно subq> = 6)

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

    ПРИМІТКА: максимальне значення, за допомогою якого квантователь може збільшуватися / зменшуватися між кадрами (за замовчуванням: 4)

  • стиснення квантователя (за замовчуванням: 0,6): qcomp=0.7

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

  • Варіанти після цього - відеофільтри: -vf

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

  • scale=-1
  • -10
  • harddup

Дуже дякую за цей добре пояснений приклад того, як отримати відео. Ваша запропонована команда, здається, прекрасно працює для вилучення відео. Однак у мене зараз немає аудіо. Якщо я використовую вашу команду без -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майже так само, як і при кодуванні. Крім того, є багато документації та ниток електронної пошти, які охоплюють саме те, що ви запитуєте:


Надані посилання містять десяток різних прикладів і сотні варіантів. Це не чітка і точна відповідь на моє запитання.
Олексій

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.

У моєму тесті (з досить посереднім процесором) файл вобових файлів розміром 2,6 ГБ (вже з’єднаний із трьох інших файлів) був перетворений у відео-відео з 960 Мб аналогічної якості приблизно за 50 хвилин.

20 - середньо прийнятна якість (я бачив у довідкових статтях Handbrake). Більша кількість зменшує розмір за рахунок якості. Вище 20 втрат якості зрозуміло.

Краще використовувати цю команду в терміналі, щоб побачити прогрес, легше вбити її тощо.

Що мені подобається в цій команді, це те, що вона забезпечує хороший баланс між якістю, часом та розміром, і що її можна легко використовувати з контекстного меню файлового менеджера.

Як це зробити, залежить від файлового менеджера. Команду можна легко додати до Thunar і Nautilus як "спеціальна дія". Я додав його до Дельфіна з таким ~/.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

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

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