返回博客约 5 分钟

如何去除 MP4 字幕:删除轨道或清理硬字幕

用 FFmpeg 删除 MP4 中的独立字幕轨,或用 AI 处理烧录字幕。包含判断方法、命令、音轨保留说明与输出检查步骤。

MP4 可以包含视频、音频和独立字幕轨,画面本身也可能已经带字。删除字幕轨只能解决前一种情况。先判断字幕类型,避免对不需要修补的视频进行处理。

始终在副本上操作,为输出使用不同文件名。如果以后还需要字幕做翻译或无障碍版本,请单独保留文字文件。

先关闭字幕显示

在播放器中打开 MP4 并关闭字幕。如果文字消失,说明画面本身是干净的。也要检查外置字幕:播放器可能自动读取同名 SRT。

文字还在时,确认播放器的自动字幕也已关闭。软字幕与硬字幕对比 解释了两者同时出现的情况,例如硬字幕上方还有一套可选择的译文。

在本地检查文件

安装 FFmpeg 和 FFprobe 后,可以列出 MP4 内的字幕流:

ffprobe -v error -select_streams s -show_entries stream=index,codec_name:stream_tags=language -of json input.mp4

streams 数组非空,表示存在字幕流;数组为空,并不能证明画面没有文字,因为硬字幕属于视频流,不会列在这里,外置 SRT 也不在 MP4 内。

这个检查只读取本地文件,不上传也不修改它。

另存不含字幕轨的副本

对于只有一条主要视频轨的常见 MP4,可使用:

ffmpeg -i input.mp4 -map 0:v:0 -map '0:a?' -c copy -sn output-without-subtitles.mp4

命令选择第一条视频流,以及存在的全部音频流,排除字幕并直接复制所选流,不重新编码。可选音频选择器外面的引号,防止 zsh 等 shell 把问号当作通配符。

此命令明确选取视频和音频,并非对全部辅助流做档案级复制。多视频轨、特殊元数据或少见编码,应先单独检查。把 MKV 改名为 MP4,也不会自动让编码变得兼容。

FFmpeg 官方文档 解释了流选择和复制。完成后打开新文件,检查时长和需要的音轨是否正确。

输出仍然有文字怎么办

如果关闭播放器字幕后,输出仍然有字,通常说明是硬字幕。上面的命令没有修改画面像素,因此不会擦除这些字。

有无字版本时优先使用;否则可以 打开在线去字幕工具。下半部分的字幕可先试自动模式,需要自定义区域则使用精细模式。按照 硬字幕去除流程,先测试短片段。

在线工具目前限制为最长 10 分钟、最大 2 GB、最高 2K 输入,输出最高 1080p。AI 去除需要积分,且可能改变画面细节;本地流复制删除独立字幕轨,不进行这种重建。

检查最终文件

  • 把输出放进空文件夹播放,避免旧外挂字幕被重新加载。
  • 检查开头、中间和结尾的画面、声音与时长。
  • 删除的是内封轨道时,再运行一次 FFprobe 检查。
  • 使用 AI 时,对比原字幕区域在动态播放中的效果。
  • 新文件确认合格前,保留原片和字幕文件。

如果另一个播放器仍显示字幕,检查它是否自己生成了自动字幕。文件不含字幕轨,也不能阻止播放服务自行叠加文字。

常见问题

FFmpeg 删除字幕轨会降低画质吗?

上述命令复制所选压缩视频和音频流,不重新编码;但不保证所有其他信息,包括每一项元数据,都完全不变。

在线工具能处理整部电影吗?

当前工作台接受最长 10 分钟的片段。长素材请先在剪辑软件中准备需要的部分。

后续还需要翻译字幕怎么办?

有原字幕文本就保留它作为参考。需要从画面或声音识别时,参考 字幕翻译与 SRT 导出指南。

把方法用到自己的素材

用你的视频试一试

去除画面文字、翻译字幕或导出 SRT。先用短片段测试,再检查效果是否符合需要。