如何去除 MP4 和 MKV 文件里的字幕
先分清外挂字幕文件、容器里的独立字幕轨和烧录进画面的文字,再用对应方法去除:MKV 用 mkvmerge,MP4 用 FFmpeg 显式映射流。
“去掉这个 MP4 的字幕”可能是三件完全不同的事。有时字幕来自视频旁边的一个单独文件;有时是存放在 MP4 或 MKV 容器里的一条轨道;有时则是画面本身的一部分。三种情况各有各的办法,用错了只会浪费时间:轨道工具碰不到已经烧进像素的文字,而为了一条几秒钟就能去掉的轨道去修复画面,又太费事。
这篇文章教你用一个简单的播放器测试分清这三种情况,在自己的电脑上去掉 MKV 或 MP4 里的字幕轨,并说明什么时候问题其实出在画面里。只有最后一种情况才需要用视频去字幕工具。请只处理你自己拥有或有权编辑的文件,并保留原文件。
看起来一样的三种字幕
外挂字幕文件
外挂字幕是一个很小的独立文件,扩展名常见的有 srt、ass 或 vtt,名字通常和视频相近,放在视频旁边。播放时,播放器把它叠加在画面上。视频文件本身并不含这些文字。如果把视频单独拷走,文字就没有了。
这是最容易处理的一种:删除或改名这个字幕文件,或者让播放器不要加载它。视频本身不用改,也不需要任何工具。
容器里的字幕轨
MP4、MKV 等格式是“容器”。一个容器可以并排放一条视频流、几条音频流和几条字幕流,每条都标着语言。观众可以选择显示哪一条,或者都不显示。文字以文本或小图片的形式存放在自己的流里,由播放器绘制出来。
因为字幕轨和画面是分开的,去掉它不会改变任何一帧。做法是把视频和音频复制到新文件,把字幕流留在后面。这是“重新封装”,不是重新编码,所以很快,也不会降低画质。
烧录进画面的字幕
烧录字幕,也叫硬字幕或内嵌字幕,是在导出视频之前就画进画面的文字。它们是普通像素,和台标或标题卡一样。没有任何开关能隐藏它们,也没有轨道可以删除,因为根本没有轨道。要去掉它们,就得把字后面的画面重建出来。
硬字幕指南对这种情况有更详细的说明。这里先记住一条规则:外挂文件和字幕轨是通过修改“包装”去掉的,烧录文字则要通过修复图像去掉。
两分钟测试:你遇到的是哪一种
用一个能切换字幕轨的桌面播放器打开视频,找到字幕菜单并打开。
如果菜单里列出了一条或几条轨道,把它们全部关掉,再看原来出现文字的那几秒。文字消失了,说明是字幕轨,画面不用动。如果菜单里什么都没有而文字仍在,那要么是烧录文字,要么是播放器自动加载了外挂文件。检查视频所在的文件夹里有没有同名并带字幕扩展名的文件,改个名,重新打开视频再看。
所有轨道都关闭、文件夹里也没有额外文件,文字还在,就说明它烧录在画面里。另外,有些应用和网站会在视频上自己显示字幕,看起来像文件的一部分。判断之前,请先用普通播放器打开保存下来的文件。
用 mkvmerge 去掉 MKV 的字幕轨
MKVToolNix 是处理 Matroska 格式的免费工具集,mkvmerge 是其中用来生成 MKV 文件的命令行工具。它把输入文件的轨道复制到新文件,并允许你跳过其中一部分。
先看看文件里有什么。识别选项会列出每条轨道的编号和类型:
mkvmerge -i input.mkv
输出里会有视频、音频和字幕的各条轨道。记下哪些编号是字幕。如果你只是想知道文件里有没有字幕,这一步就能回答。
要去掉全部字幕轨,运行:
mkvmerge -o output.mkv --no-subtitles input.mkv
顺序很重要:轨道选项作用于它后面的那个输入文件,所以 --no-subtitles 要放在 input.mkv 前面。放到文件名后面,mkvmerge 的理解就和你的本意不同了。输出是一个新的 MKV 文件,视频和音频不变、没有字幕轨,原文件保持原样。
如果想保留某一种语言、去掉其他语言,mkvmerge 也可以按编号选择轨道。选择字幕轨的那个选项,在编号前加感叹号就会反过来选,也就是复制除了列出的这些之外的所有轨道。请先用识别步骤确认编号,再按你所用版本的文档核对准确写法。
处理完后有两点值得检查。带样式的字幕有时会把字体作为附件放进文件里,字幕轨去掉后这些附件可能还在。另外,结果是 MKV 而不是 MP4。把扩展名改成 mp4 并不会改变容器,很多手机、电视和剪辑软件仍然更喜欢 MP4 或 MOV。需要 MP4 的话,请单独转换,并确认里面的编码是该容器允许的。
用 FFmpeg 去掉 MP4 的字幕轨
FFmpeg 是转换和重新封装媒体的常用命令行工具。对于带文本字幕轨的 MP4,最稳妥的做法是明确指出“要哪些流”,而不是指出“不要哪些”。
显式映射的写法是:
ffmpeg -i input.mp4 -map 0:v -map '0:a?' -c copy output.mp4
两个 map 选项从第一个输入里选出视频流和音频流。音频选择符里的问号让这条流变成可选的,所以同一条命令也适用于无声视频;加引号是为了让 zsh 等命令行不要把问号当成通配符。字幕流没有被映射,所以不会写入。copy 编码选项让 FFmpeg 不解码、直接复制数据,因此画面和声音保持原样,几秒钟就完成。
如果没有这个问号,没有音频流的文件会让命令失败。还有一点:普通的视频选择符会匹配所有视频流,包括以图片形式保存的封面。不想要封面的话,FFmpeg 的大写 V 选择符会跳过附加图片。无论哪种,都请看一下输出,确认里面的内容是你要的。
流复制也是转换时要小心的原因。从 MKV 复制进 MP4,只有在编码是 MP4 支持的情况下才可行。如果复制失败,或新文件在你的设备上播不了,问题通常出在编码上,而不是字幕。
分享之前先检查结果
简单检查一下能省很多麻烦。在播放器里打开输出文件,确认四件事。
第一,字幕菜单是空的,或者至少你去掉的那条轨道不见了。第二,画面和声音从头到尾播放正常。第三,时长和原文件一致,音画保持同步,复制操作之后尤其要看。第四,你打算保留的语言还在。
请保留原文件。出了问题,可以换选项重新运行。去轨道的命令从来不需要覆盖源文件,所以上面的例子都写到了新的输出文件名。
当文字在画面里
如果测试显示所有轨道都关闭后文字仍在,任何命令行选项都帮不上忙。你需要改变画面,这意味着另一种工具和一些需要坦率说明的限制。
本站的视频去字幕工具处理的是较短的 MP4、MOV 或 WebM 视频。它不接受 MKV,所以 MKV 需要先在你自己的电脑上转换或导出成这些格式,这是单独的一步。目前的限制是每个文件最长 60 秒、最大 50 MiB。你可以在字幕上框出最多三个固定选区,各自设置时间段,工具会重建选区后面的画面。它不会跟踪移动的文字,也不会识别文字内容,并且即使选框只在一段时间内有效,计费也按整段视频计算。
每个账户可以试用两次,每次最长 15 秒的视频,与其他需上传处理的去除工具共享。处理完成后,请阅读页面上的提示。如果浏览器没能生成按时间段处理的版本,结果会退回成整段视频都去除所有标记区域,页面会告诉你这一点。使用导出的文件之前,请从头播放到尾。效果取决于背景:平整的区域修复得好,文字压在人脸、细密图案或快速运动的画面上就更难。
更长的文件、在长视频里选取一段、批量处理以及生成字幕文件,目前都不支持。如果你的影片很长,请先在剪辑软件里把需要的片段剪出来。
选对路径
不确定该用什么时,可以看这份简短的清单。
- 文字来自同一文件夹里的一个文件:删除或改名那个文件。
- 播放器列出了可以关闭的字幕轨:MKV 用 mkvmerge 去掉轨道,MP4 用 FFmpeg 只映射视频和音频。
- 所有轨道关闭后文字还在:它是烧录的,请对较短的 MP4、MOV 或 WebM 视频使用视频去字幕工具。
- 文字是标题、开场提示或标签,而不是对白:视频去说明文字工具更合适,姓名条则可以用视频去姓名条工具。
去轨道是无损的封装修改,去烧录文字是有局限的图像修复。先弄清你面对的是哪一种,剩下的工作就很短,而且原文件始终是你可以退回的安全选项。
