I've got an .mkv with 1 video stream, 2 audio streams, and 12 subtitle tracks.

I want to turn it to greyscale, just use the first audio track, and use the eng subtitle track 6 (according to ffmpeg -i this is labeled as stream 0:11)

I'm running a filter to turn the video to greyscale (taken from ffmpeg documentation), which works fine, and by default it's picking the right audio stream, so I'm good there, but it also seems to be picking the first subtitle track, which is not the subtitle track I want.

The topics online out there about subtitles tend to map all the streams to accomplish this or they talk about importing subtitles, neither of these I want, but even if I try to map all the subtitle tracks I get an error saying that filtering and stream copying can't be used together.

Command I'm running:

$ ffmpeg -i color.mkv -vf colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3 \
    -c:a copy grey.mkv

I've tried all sorts of variants using c:s (not even sure if that's the right way to call subtitle tracks), but the results I get tend to be worse than what I already have (when I do get them to run they seem to be missing, so they can't even play).

I've searched the ffmpeg documentation for this, but either this specific instance isn't there or I'm not understanding it when it's presented.

1 Answer 1


Use this:

$ ffmpeg -i color.mkv -vf format=gray -map 0:v -map 0:a:0 -map 0:11 \
    -c:a copy -c:s copy grey.mkv

The maps set which tracks to include. The c with specifiers set the codec operation to copy for those specified streams.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .