handbrake 实际上是给 ffmpeg 加了个图形用户界面,你这点事儿自己用ffmpeg去转,三行命令搞定,而且抓出来的mkv是有独立字幕的:
先读下光盘,看看有多少 vob 文件:
dir g:\VIDEO_TS\*.vob
然后把这些 vob 文件合成一个大vob文件复制到硬盘上,这里假设有4个vob文件:
copy /b g:VIDEO_TS\VTS_02_1.VOB + /b g:VIDEO_TS\VTS_02_2.VOB + /b g:VIDEO_TS\VTS_02_3.VOB + /b g:VIDEO_TS\VTS_02_4.VOB movie.vob
真正干活的就一行 ffmpeg 命令:
ffmpeg -fflags +genpts -analyzeduration 2000000k -probesize 2000000k -i movie.vob -c:v copy -c:a copy -c:s copy -map 0:1 -map 0:2 -map 0:3 -map 0:4 -map 0:5 -map 0:6 mymovie.mkv
其中 -analyzeduration 2000000k -probesize 2000000k 就是用来分析字幕起始位置的,不分析这么多帧的话,ffmpeg 缺省只分析vob的前几千个字节,极大可能dvd前几千个字节范围内没出现第一条字幕,于是就判定原dvd里这条字幕轨道是空的,生成的mkv里就没这个字幕轨道了。这是 ffmpeg 抓 dvd 碟片转 mkv 唯一的知识点,其他都是 ffmpeg 的基本操作,handbrake 本质上也是这么调用的 ffmpeg,否则就会缺轨道。
之所以要转成 mkv 而不是你说的 mp4 ,是因为 mp4 的字幕能力极差,只能有一条字幕轨道。而mkv这种 container 可以容纳多条字幕轨道,从dvd里抓出来的所有vobsub字幕轨道都可以直接放到mkv里,播放的时候随便选。
【 在 sylph 的大作中提到: 】
: 谢谢!基本满足需求。唯一遗憾的就是转为mp4是只能内嵌一个字幕
: 发自「今日水木 on RMX3350」
--
修改:tsa300 FROM 39.156.11.*
FROM 39.156.11.*