Ubuntu で ffmpeg を使用して復号化された .vobs を .avi に変換する

Ubuntu で ffmpeg を使用して復号化された .vobs を .avi に変換する

DVD からリッピングした .vob ファイルがあります。.vob を見ると、非常に高品質のビデオと 5.1 英語オーディオが得られますが、ffmpeg を使用すると、品質の低いビデオとモノラルのフランス語オーディオが得られます。

このコマンドを使用していました:

ffmpeg -i /samba/ripping/vobs/12161840#2.vob -f avi /samba/ripping/avis/test.avi

いくつかの異なるバリエーションを試してみましたが、良い結果は得られず、ビデオが悪く、サウンドが間違っている大きなファイルしか得られませんでした。

ビデオは良好で、正しいオーディオ ストリームが存在することはわかっていますが、5.1 トラックを選択して良好なビデオを取得するにはどうすればよいでしょうか?

ffmpeg は .vob の詳細を次のように提供します:

Input #0, mpeg, from '/samba/ripping/vobs/12161840#2.vob':
   Duration: 00:42:05.56, start: 0.287267, bitrate: 5738 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 720x576 [PAR 64:45 DAR 16:9], 8436 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0.1[0x80]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
    Stream #0.2[0x81]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
    Stream #0.3[0x82]: Audio: ac3, 48000 Hz, mono, s16, 192 kb/s
Output #0, avi, to '/samba/ripping/avis/test.avi':
  Metadata:
    ISFT            : Lavf52.64.2
    Stream #0.0: Video: mpeg4, yuv420p, 720x576 [PAR 64:45 DAR 16:9], q=2-31, 200 kb/s, 25 tbn, 25 tbc
    Stream #0.1: Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
Stream mapping:
   Stream #0.0 -> #0.0
   Stream #0.3 -> #0.1

答え1

デフォルトのエンコード オプションは低く、たとえばオーディオ ビットレートは 64k です。追加のコマンド ライン オプションを使用して、これらの値を上げることができます。

ffmpeg -i sourcefile.vob -ab 128kb -qscale 4 newfile.avi

-ab 128kb平均オーディオ ビットレートを 128kb に設定し、-qscale 3ビデオ量子化スケールを設定します。q は 1 (最高) または 31 (最低) の品質です。

比較のために、解像度 700x576、オーディオ 128kb の 5 分間のビデオの場合:

  • q 10 = 約40MB
  • q 4 = 約80MB

これをもう 1 つ進めると、次の bash コマンドを使用して、ディレクトリ内の多数の vob 全体をバッチ変換できます。

for f in *.vob; do ffmpeg -i "$f" -ab 128kb -qscale 4 "${f%%.vob}.avi"; done;

ファイル名にスペースがある場合に備えて、$f を引用符で囲みます。また、${f%%.vob} は、独自の avi 拡張子を追加する前に vob 拡張子を削除します。(これは bash のパラメータ置換で、非常に便利です。)http://tldp.org/LDP/abs/html/パラメータ置換.html

他にもたくさんのオプションがありますので、以下でご覧ください。http://www.ffmpeg.org/ffmpeg-doc.html

関連情報