如何在ffmpeg中禁用字幕解码

时间:2012-08-26 16:27:02

标签: video stream ffmpeg video-encoding subtitle

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

3 个答案:

答案 0 :(得分:47)

我终于找到了答案。

-sn这样的选项可以禁用输入流的字幕解码。此外,还有类似的音频和视频解码选项:分别为-an-vn

事实证明,还有另一种方法可以实现这一目标。可以使用-map选项来选择要解码的流。因此,在-map选项中省略字幕流可以完成工作。

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

  • Stream 0:video
  • Stream 1:audio
  • 流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>

以前的命令行取消选择字幕流(可能是所有字幕流,如果有多个),而后者仅选择要解码的必要流。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

ffmpeg -i input.mkv -map 0 -map -0:s -c copy output.mkv
  • -map 0选择所有流。推荐这样做是因为默认的stream selection行为只为每种流类型选择1个流。
  • -map -0:s是一个否定映射,它取消选择所有字幕流。
  • -c copy启用stream copy模式,该模式仅重新复用,避免重新编码。