33

我正在尝试使用FFMpeg将一些包含视频音频字幕流的视频文件转换为另一种格式。但是,ffmpeg 抱怨字幕格式 - 它无法解码流。由于我不需要这个字幕流,我想知道如何在转换过程中禁用字幕流解码?

4

3 回答 3

67

我终于找到了答案。

有这样的选项-sn可以禁用从输入流中解码字幕。音频和视频解码也有类似的选项:-an-vn分别。

事实证明,还有另一种方法可以实现这一目标。可以使用该-map选项来选择要解码哪些流。-map因此,在选项中省略字幕流就可以了。

例如,如果一个电影文件有 3 个流:

  • 流 0:视频
  • 流 1:音频
  • 流 2:字幕

FFmpeg 的转换命令可能如下所示:

ffmpeg -i <input file> -sn -vcodec <video codec> -acodec <audio codec>  <output file>

或者

ffmpeg -i <input file> -vcodec <video codec> -acodec <audio codec> -map 0:0 -map 0:1  <output file>

前一个命令行取消选择字幕流(可能是全部,如果有的话),而后一个命令行只选择需要解码的流。

于 2012-08-29T09:49:57.970 回答
8

要在不重新编码视频和音频的情况下删除字幕流,最短的命令是:

ffmpeg -i input.mkv -sn -c copy output.mkv

于 2020-06-16T20:03:28.343 回答
3

使用负映射来省略字幕并保留其他所有内容:

ffmpeg -i input.mkv -map 0 -map -0:s -c copy output.mkv
  • -map 0选择所有流。这是推荐的,因为默认的流选择行为只为每种流类型选择 1 个流。
  • -map -0:s是取消选择所有字幕流的负映射。
  • -c copy启用仅重新复用并避免重新编码的流复制模式。
于 2020-06-16T21:18:35.890 回答