문제

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?

도움이 되었습니까?

해결책

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.

다른 팁

To remove subtitle stream without re-encoding video and audio shortest command would be:

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

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.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top