如何用HandbrakeCLI保存所有标题?及旧DVD批量转MKV的正确方法
HandBrakeCLI处理旧DVD:命令修正与全标题导出指南
当前命令的问题与修正
你的思路没问题,但命令里有两个小细节得调整,不然可能达不到预期效果:
- 循环语法错误:
for i in 'seq 4'里的单引号会把seq 4当成一个单一字符串,循环只会执行一次,而不是遍历1-4这四个数字。得改成用反引号或者$()来执行命令:for i in $(seq 4) - 输出格式不符:你想要转成MKV格式,但命令里输出的是
.mp4,把输出后缀改成.mkv就对了
修正后的命令如下:
for i in $(seq 4); do HandBrakeCLI --input /dev/dvd --title $i --preset Normal -e x264 -q 20 -w 1280 -l 720 --output NameOfDisc_Title$i.mkv; done
这个命令确实会把每个标题(对应你的每集内容)的所有章节合并成单个MKV文件——HandBrake默认会将指定标题下的所有章节打包进输出文件,而且MKV格式原生支持章节标记,播放时可以正常切换章节,完全符合你的需求。
如何保存HandBrakeCLI中的所有标题
如果你不确定DVD里的标题总数(比如可能包含菜单、预告片这类额外短标题),或者想批量导出所有标题,可以按以下步骤操作:
1. 先扫描DVD的所有标题信息
用扫描命令获取DVD里的所有标题详情,包括标题号、时长、章节数:
HandBrakeCLI --input /dev/dvd --scan
执行后会输出类似这样的内容:
title 1:
duration: 00:45:23
chapters: 12
title 2:
duration: 00:44:58
chapters: 11
...
通过这个输出你可以轻松区分:时长较长的是正片标题,短时长的大概率是菜单、版权页这类无用内容。
2. 批量导出所有标题(或筛选后的标题)
如果想导出所有标题,可以用命令自动提取标题号并循环处理:
# 自动提取所有标题号并批量转换 for title in $(HandBrakeCLI --input /dev/dvd --scan 2>&1 | grep "title" | awk '{print $2}'); do HandBrakeCLI --input /dev/dvd --title $title --preset Normal -e x264 -q 20 -w 1280 -l 720 --output NameOfDisc_Title${title}.mkv; done
要是你确认只需要标题1-4,直接用前面修正后的循环命令就好。
补充:关于章节的小提示
如果你偶尔需要把单个章节单独导出成文件(而不是合并成单集),可以加上--chapter参数,比如导出标题1的第3章:
HandBrakeCLI --input /dev/dvd --title 1 --chapter 3 --preset Normal -e x264 -q 20 -w 1280 -l 720 --output NameOfDisc_Title1_Chapter3.mkv
不过看你的需求是合并章节成单集文件,默认的命令行为就完全够用啦。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

