如何在ffmpeg中禁用字幕解码?

问题描述 投票:25回答:2

我试图转换一些视频文件,其中包括 视频, 音频字幕 流为另一种格式,使用 FFMpeg. 然而,ffmpeg却抱怨说 字幕 格式--它不能解码流。由于我不需要这个字幕流,我想知道如何才能在转换过程中禁用字幕流解码?

video stream ffmpeg video-encoding subtitle
2个回答
60
投票

我终于找到了答案。

有这样一个选项 -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>

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


0
投票

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

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


0
投票

使用... 负映射 省略字幕,保留其他所有内容。

ffmpeg -i input.mkv -map 0 -map -0:s -c copy output.mkv
  • -map 0 选择所有流。建议这样做,因为默认的 择流 行为,每个流类型只选择1个流。
  • -map -0:s 是一个负映射,取消选择所有字幕流。
  • -c copy 启用 抄写 模式,只进行重新混音,避免重新编码。
© www.soinside.com 2019 - 2024. All rights reserved.