VOBファイルをaviファイルに変換する方法


10

Ubuntu 13.10でDVDからコピーしたVOBファイルをaviファイルに変換しようとしています。私が試したdvdripフレームカウントエラーか何かのために失敗しました、。私もacidripを試しましたが、それはいつも私が使いたくないオーディオトラックを選びました。コマンドラインソリューションを使用して、次の機能を持つaviファイルを作成したいと思います。

  • mplayerで使用可能(つまり、step関数を使用)
  • 必要に応じて字幕付き(または誰もいない)
  • 正しいオーディオトラックで
  • ビデオとオーディオの同期

私はいくつか試したffmpegし、avconvコマンドをしてAVIファイルを作成するために管理しますが、映像と音声が同期していcompletlyました。では、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)映画が実際に行くよりも遅いようです(かかるかもしれません) 90分の映画の場合は2時間)。

  7. ここで与えられコマンド(Xeratulからの3番目の投稿)を試みましたが、エラーで停止しました

    FATAL: Cannot initialize video driver.
    
  8. 私はmencoderページを見るために以下の提案を試みました。このページでは、2つのパスの使用を提案しています。

    1つ目は映画に関する情報を読み取り、2つ目はその情報を使用してエンコードします。

    しかし、どの情報を抽出するか、2番目のパスでそれらをどのように使用するについては説明されてません。したがって、次のコマンドを使用しました。

    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 2013

では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...
Alex

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
Alex

試してみてください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-リンク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

    注:ええと-不均一なマルチ六角形検索(遅い)

  • すべてのマクロブロックタイプを有効にします。 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

ビデオを取得する方法のこのよく説明された例をありがとうございました。あなたの提案されたコマンドは、ビデオを抽出するために完全に機能するようです。ただし、現在音声はありません。私はあなたなしでコマンドを使用した場合-noaudioとで-oac copy、私はビデオと同期していないオーディオを取得します。変位するか、速度が異なるか、またはその両方です。オーディオを正しく取得する方法を教えてください。また、複数のVOBファイルについてはどうですか?コンテンツを単一の.aviファイル(または他の形式)にパックする方法は?
Alex

@アレックス-ただの考えですが-oac copy、2パスで単純にa を実行できるとは思いません。ビデオを再エンコードしているので、オーディオも一緒に再エンコードする必要があります。それらを「パック」することに関して、vobファイルはこのようにマージされるべきです:cat *.vob all.vob。次にall.vob、mencoder cmdで使用します。これを行うには他の方法もあります。
slm

3

を使用するmplayer場合は、試してみてくださいmencoderhttp://www.mplayerhq.hu)。その最高の機能の1つは、知っている再生オプションはmplayer、エンコード時にほとんど同じように動作することです。また、あなたが求めていることを正確にカバーする多くのドキュメントとメールスレッドがあります:


提供されているリンクには、数十の異なる例と数百のオプションが含まれています。それは私の質問に対する明確で正確な答えではありません。
Alex

1
確かに、評判を得るための答えは書きませんでした。あなたを助けるために書きました。一部のmencoderページを読むことを検討してください。mencoderすべての仕事にのみ使用する海賊グループがいくつかあります。それがどれほどシンプルでパワフルで自動化できるかです。
dg99 2013

2

私はこれが古い投稿であることを知っていますが、インターネットでこの問題を検索すると上記の質問がポップアップし、他のいくつかのエントリはさらに古いものです。

私はさまざまなツールを試しましたが、最終的にはこのコマンドに最も満足しています。

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

ここで見つけたものを少し変更したものです

オーディオコーデックlibflacを置き換えたところですlibmp3lame(私のシステムには存在しなかったため、(ソース)と-crf値を置き換えて品質を向上させました。のような他の形式も使用できますmp4

私のテスト(かなり平凡なプロセッサを使用)では、2.6 GBのvobファイル(既に他の3つのファイルから連結されている)は、約50分で同等の品質の960 MBのaviビデオに変換されました。

20は中程度の許容できる品質です(私が見たHandbrakeヘルプ記事で)。数値が大きくなると、品質を犠牲にしてサイズが小さくなります。20以上の品質低下は明らかです。

進行状況を確認したり、簡単に終了したりするために、ターミナルでそのコマンドを使用することをお勧めします。

このコマンドの良いところは、品質、時間、サイズのバランスがよく、ファイルマネージャのコンテキストメニューから簡単に使用できることです。

その方法は、ファイルマネージャによって異なります。コマンドは「カスタムアクション」としてThunarとNautilusに簡単に追加できます。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

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.