在 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 分钟视频:

  • 10 = ~40MB
  • 4 = ~80MB

再进一步,您可以使用以下 bash 命令批量转换目录中的一大堆 vob:

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

如果文件名中有空格,我们将 $f 括在引号中,并且在添加我们自己的 avi 扩展名之前,${f%%.vob} 会删除 vob 扩展名。(这是 bash 中的参数替换,非常有用!http://tldp.org/LDP/abs/html/parameter-substitution.html

您还可以阅读更多选项:http://www.ffmpeg.org/ffmpeg-doc.html

相关内容