我正在尝试使用 FFMpeg将包含视频,音频和字幕流的视频文件转换为其他格式STRONG>。但是,ffmpeg抱怨字幕格式 - 它无法解码流。由于我不需要这个字幕流,我想知道如何在转换过程中禁用字幕流解码?
答案 0 :(得分:47)
我终于找到了答案。
有-sn
这样的选项可以禁用输入流的字幕解码。此外,还有类似的音频和视频解码选项:分别为-an
和-vn
。
事实证明,还有另一种方法可以实现这一目标。可以使用-map
选项来选择要解码的流。因此,在-map
选项中省略字幕流可以完成工作。
例如,如果有一个包含3个流的电影文件:
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模式,该模式仅重新复用,避免重新编码。