Bagaimana cara mengubah file VOB ke avi?

10

Saya mencoba untuk mengkonversi file VOB yang disalin dari DVD ke avi di Ubuntu 13.10. Saya mencoba dvdrip, yang gagal karena kesalahan jumlah bingkai atau sesuatu. Saya mencoba acidrip juga, tetapi selalu memilih trek audio yang tidak ingin saya gunakan. Saya lebih suka memiliki solusi baris perintah untuk membuat avi dengan fitur berikut:

  • dapat digunakan dengan mplayer (yaitu menggunakan fungsi langkah)
  • dengan subtitle sesuai kebutuhan (atau tidak ada sama sekali)
  • dengan trek audio yang benar
  • dengan video dan audio dalam sinkronisasi

Aku mencoba beberapa ffmpegdan avconvperintah dan berhasil membuat avi, tapi video dan audio completly tidak sinkron. Jadi opsi apa yang harus saya gunakan untuk mengonversi file VOB ke file avi?

Saya akan sangat menghargai beberapa penjelasan tentang opsi yang disarankan!

Informasi tambahan:

  1. The ffmpegperintah memberikan output berikut untuk file input

    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. Perintah berikut

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

    misalnya mengakibatkan crash pada sesi Ubuntu saya.

  3. Perintah berikut

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

    misalnya mengakibatkan kesalahan berikut:

    Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374
    av_interleaved_write_frame(): Invalid argument
    
  4. Perintah berikut

    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
    

    misalnya mengakibatkan kesalahan berikut:

    Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
    
  5. Perintah berikut

    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
    

    misalnya sepertinya berfungsi untuk beberapa frame. Tetapi segera saya menemukan banyak kesalahan dari formulir

    [ac3 @ 0x120d480] frame sync error
    Error while decoding stream #0:1
    frame CRC mismatch
    
  6. Perintah berikut

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

    melakukan beberapa konversi, tetapi (i) menggunakan subtitle meskipun saya tidak ingin menggunakannya (ii) salah audio (audio dan video sangat salah tempat) dan (iii) tampaknya lebih lambat daripada film sebenarnya berjalan (mungkin butuh 2 jam untuk film berdurasi 90 menit).

  7. Saya mencoba perintah yang diberikan di sini (pos ketiga dari Xeratul), tetapi terhenti karena kesalahan

    FATAL: Cannot initialize video driver.
    
  8. Saya mencoba saran yang dibuat di bawah ini untuk melihat halaman mencoder . Halaman ini menyarankan untuk menggunakan dua pass:

    yang pertama membaca informasi tentang film, yang kedua menggunakan informasi itu untuk menyandikan.

    tetapi tidak dijelaskan informasi mana yang akan diekstraksi atau bagaimana menggunakannya di pass kedua. Jadi saya menggunakan perintah berikut:

    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
    

    yang memang mengkonversi video, tetapi dengan subtitle yang tidak diinginkan. Tidak jelas sama sekali bagaimana saya bisa menghindari menggunakan subtitle.

Alex
sumber
ffmpegsudah ditinggalkan sejak lama, Anda seharusnya menggunakan penggantinya sendiri: avconv.
user2485710
Jadi bagaimana cara menggunakannya avconvuntuk mengonversi file VOB ke avi. Perintah itu avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -acodec copy -vcodec copy test.avimemberi kesalahan Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374 av_interleaved_write_frame(): Invalid argument...
Alex
ada contoh di halaman manual untuk avconv, untuk file VOB yang didekripsi avconv -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avicoba ini
user2485710
Ini memberikan kesalahanError while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
Alex
Coba 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/nullkemudian 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- mengambil yang sebagian dari doc Arch @ dg99 terkait.

Jawaban:

6

Untuk menghilangkan subtitle, saya yakin Anda dapat menambahkan -nosubswitch, tepat setelah nama file .VOB.

Contoh

$ 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

Detail

Mantra-mantera ini seringkali sangat padat sehingga untuk memecah yang satu ini sedikit

  • file input: Videos/Test/VIDEO_TS/VTS_01_1.VOB
  • berkas keluaran: -o video.avi
  • tidak ada terjemahan: -nosub
  • jangan menyandikan suara: -nosound
  • encode dengan codec yang diberikan: -ovc x264

daftar codec lainnya

$ 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
  • Opsi penyandian x264: x264encopts
  • set mode untuk vektor gerakan langsung :direct=auto
  • jumlah pass :pass=2
  • bitrate penyandian target: bitrate=900
  • pra. frame yang digunakan sebagai prediktor di B- dan P-frame (def: 3):frameref=5
  • # dari B-frame bersamaan: bframes=1
  • estimasi gerakan fullpixel alg .: me=umh

    CATATAN: umh - pencarian multi-hexagon tidak merata (lambat)

  • aktifkan semua jenis makroblok: partitions=all

  • tingkat-distorsi kuantisasi optimal: trellis=1

    CATATAN: 2 - diaktifkan selama semua keputusan mode (lambat, membutuhkan subq> = 6)

  • nilai kenaikan / penurunan quantizer: qp_step=4

    CATATAN: nilai maksimum dimana quantizer dapat bertambah / dikurangi antar frame (default: 4)

  • kompresi quantizer (default: 0.6): qcomp=0.7

  • prediksi gerak untuk makroblok di B-frame: direct_pred=auto
  • interval maksimum antara frame kunci dalam bingkai: keyint=300

  • opsi setelah ini adalah filter video: -vf

CATATAN: Untuk filter video beralih, penting bahwa Anda menggunakan harddupsebagai filter terakhir: itu akan memaksa MEncoder untuk menulis setiap frame (bahkan yang duplikat) dalam output. Juga, perlu untuk menggunakan scale=$WIDTH,-10dengan $WIDTHsebagai -1untuk menjaga lebar asli atau baru, biasanya lebih kecil, lebar: perlu karena H.264 codec menggunakan piksel dan DVD persegi sebagai gantinya menggunakan piksel persegi panjang.

  • scale=-1
  • -10
  • harddup
slm
sumber
Terima kasih banyak atas contoh yang dijelaskan dengan baik ini tentang cara mendapatkan video. Perintah yang Anda sarankan tampaknya bekerja dengan sempurna untuk mengekstraksi video. Namun, saya tidak memiliki audio sekarang. Jika saya menggunakan perintah Anda tanpa -noaudiodan dengan -oac copysaya mendapatkan audio, yang tidak sinkron dengan video. Ini bisa dipindahkan, dengan kecepatan yang berbeda atau keduanya. Adakah saran bagaimana saya bisa mendapatkan juga audio yang benar? Dan bagaimana dengan banyak file VOB? Bagaimana mengemas konten ke dalam satu .avifile (atau format lain)?
Alex
@Alex - hanya sebuah pemikiran, tapi saya tidak berpikir Anda bisa melakukannya -oac copydengan 2 pass, karena Anda meng-encode ulang videonya, Anda harus menyandikan ulang audio bersamaan dengan itu. Seperti "kemasan" mereka, file vob harus digabung menyukai ini: cat *.vob all.vob. Kemudian gunakan all.vobdi cmd mencoder. Ada cara lain untuk melakukan ini juga.
slm
3

Jika Anda berniat untuk menggunakan mplayer, maka Anda harus mencoba mencoder( http://www.mplayerhq.hu ). Salah satu fitur terbaiknya adalah bahwa opsi pemutaran yang Anda ketahui mplayerberperilaku cukup banyak dengan cara yang sama ketika melakukan encoding. Juga, ada banyak dokumentasi dan utas email yang mencakup persis apa yang Anda tanyakan:

dg99
sumber
Tautan yang disediakan berisi lusinan contoh berbeda dan ratusan opsi. Itu bukan jawaban yang jelas dan tepat untuk pertanyaan saya.
Alex
1
Benar, tetapi saya tidak menulis jawaban untuk mendapatkan reputasi, saya menulisnya untuk membantu Anda. Pertimbangkan untuk membaca beberapa mencoderhalaman. Ada beberapa kelompok bajak laut yang hanya menggunakan mencoderuntuk semua pekerjaan mereka; begitulah sederhana, kuat, dan otomatiknya.
dg99
2

Saya tahu ini posting lama tetapi mencari masalah ini di internet pertanyaan di atas muncul, dan beberapa entri lainnya bahkan lebih tua.

Saya telah mencoba berbagai alat tetapi pada akhirnya saya paling puas dengan perintah ini:

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

Ini adalah sedikit modifikasi dari yang saya temukan di sini .

Saya baru saja mengganti codec audio ( libflactidak ada di sistem saya, jadi saya menggantinya dengan libmp3lame( sumber ) dan -crfnilai untuk meningkatkan kualitas. Format lain juga dapat digunakan, seperti mp4.

Dalam pengujian saya (dengan prosesor yang agak biasa-biasa saja) file vob 2,6 GB (sudah digabungkan dari tiga file lainnya) dikonversi ke video avi 960 MB dengan kualitas yang sebanding dalam waktu sekitar 50 menit.

20 adalah kualitas yang dapat diterima menengah (dalam artikel bantuan Handbrake yang telah saya lihat). Angka yang lebih besar mengurangi ukuran dengan mengorbankan kualitas. Di atas 20 kehilangan kualitas jelas.

Lebih baik menggunakan perintah itu di terminal untuk melihat progresnya, bunuh lebih mudah, dll.

Apa yang saya sukai dari perintah ini adalah bahwa ia memberikan keseimbangan yang baik antara kualitas, waktu dan ukuran dan dapat dengan mudah digunakan dari menu konteks manajer file.

Cara melakukannya tergantung pada manajer file. Perintah dapat dengan mudah ditambahkan ke Thunar dan Nautilus sebagai 'tindakan kustom'. Saya telah menambahkannya ke Dolphin dengan ~/.kde/share/kde4/services/ServiceMenus/convert_vob_to_avi.desktopfile seperti ini:

[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

masukkan deskripsi gambar di sini


sumber