如何使用pymkv识别MKV字幕轨道并批量移除MKV文件内的字幕?
pymkv可以实现批量移除MKV文件字幕的需求。
判断MKVTrack是否为字幕轨道的方法很简单,直接读取MKVTrack实例的track_type属性即可,字幕轨道对应的属性值为subtitles,其他常见轨道类型还有video(视频轨道)、audio(音频轨道)。
具体实现逻辑如下:
- 遍历目标目录下所有MKV格式文件
- 为每个MKV文件初始化
MKVFile实例完成加载 - 过滤轨道列表,仅保留
track_type不为subtitles的轨道 - 调用
mux方法将过滤后的轨道输出为新的MKV文件
参考代码示例:
import os from pymkv import MKVFile # 待处理MKV文件所在目录 source_dir = "./mkv_source" # 处理后文件输出目录 target_dir = "./mkv_output" os.makedirs(target_dir, exist_ok=True) for file_name in os.listdir(source_dir): if not file_name.lower().endswith(".mkv"): continue source_path = os.path.join(source_dir, file_name) try: mkv_file = MKVFile(source_path) # 移除所有字幕轨道 mkv_file.tracks = [track for track in mkv_file.tracks if track.track_type != "subtitles"] target_path = os.path.join(target_dir, file_name) mkv_file.mux(target_path) print(f"处理成功:{file_name}") except Exception as e: print(f"处理失败:{file_name}, 错误信息:{str(e)}")
注意事项:
- 运行代码前需要先在设备上安装mkvtoolnix依赖,pymkv的封装操作基于该工具实现,未安装会导致混流报错。
- 如果不需要保留原文件,可以直接用处理后的文件覆盖原文件,修改输出路径为原文件路径即可。
内容的提问来源于stack exchange,提问作者Scorb
相关产品推荐
相关产品推荐

