在 ubuntu 上使用 ffmpeg 將解密的 .vobs 轉換為 .avi

在 ubuntu 上使用 ffmpeg 將解密的 .vobs 轉換為 .avi

我有一個.vob 文件,它是從DVD 上撕下來的,當我觀看.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

再採取一步,您可以使用以下 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/parameter-substitution.html

您也可以閱讀更多選項:http://www.ffmpeg.org/ffmpeg-doc.html

相關內容