I'm trying to convert some video file containing video, audio and subtitles streams into another format using FFMpeg. However, ffmpeg complains about the subtitles format - it cannot decode the stream. Since I don't need this subtitles stream, I'd like to know how can I disable subtitles stream decoding during conversion?
3 Answers
66
votes
I've finally found an answer.
There is such option as -sn which disables subtitles decoding from input stream. Also there are analogous options for audio and video decoding: -an and -vn respectively.
It also turned out that there is another way to achieve this. One may use the -map option to select which streams are to be decoded. So omitting the subtitles stream among the -map options does the job.
For example, if one has a movie file with 3 streams:
- Stream 0: video
- Stream 1: audio
- Stream 2: subtitles
the converting command for FFmpeg may look as follows:
ffmpeg -i <input file> -sn -vcodec <video codec> -acodec <audio codec> <output file>
or
ffmpeg -i <input file> -vcodec <video codec> -acodec <audio codec> -map 0:0 -map 0:1 <output file>
The former command line deselects the subtitles stream (probably all of them, if there are several) while the latter one selects only the necessary streams to decode.
7
votes
0
votes
Use negative mapping to omit subtitles and keep everything else:
ffmpeg -i input.mkv -map 0 -map -0:s -c copy output.mkv
-map 0selects all streams. This is recommended because the default stream selection behavior only chooses 1 stream per stream type.-map -0:sis a negative mapping that deselects all subtitle streams.-c copyenables stream copy mode which only re-muxes and avoids re-encoding.
-map_metadata -1- Ray Foss