How to disable subtitles decoding in ffmpeg
To remove subtitle stream without re-encoding video and audio shortest command would be:
ffmpeg -i input.mkv -sn -c copy output.mkv
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.
Use negative mapping to omit subtitles and keep everything else:
ffmpeg -i input.mkv -map 0 -map -0:s -c copy output.mkv
-map 0
selects all streams. This is recommended because the default stream selection behavior only chooses 1 stream per stream type.-map -0:s
is a negative mapping that deselects all subtitle streams.-c copy
enables stream copy mode which only re-muxes and avoids re-encoding.