FFMPEG - How to add a language tag to a stream without changing anything else?

Viewed 254

I have been experimenting with ffmpeg and trying to learn how to use it better - it is extremely powerful and there seem to be so many options, so I figured I would just try to do some things to learn amount mappings and tags etc.

There is nothing special about the file - it is just a small test MKV file that I can run through quickly when trying things.

Currently, I am trying to add a language tag to the video stream within the MKV file, but it is not working as expected (to me at least!)

The file (input.mkv) has four streams:

Stream #0:0: Video: h264 (Main)
Stream #0:1(eng): Audio: ac3
Stream #0:2(eng): Subtitle
Stream #0:3(eng): Subtitle

As you can see, three of the streams are tagged as Eng(lish), but the video stream is not. I realise that video is probably not often tagged with a language, but I am just trying to understand how this all works.

This is the command I am using:

ffmpeg -i input.mkv -metadata:s:v:0 language=eng -codec copy mkv.ext

What I thought this meant, was just to set the language tag = 'eng' to the first video stream (0:0), which it does, but for some reason it also deletes (or omits) the second subtitle stream (0:3) from the output.mkv file so that what I get in the output.mkv is:

Stream #0:0(eng): Video: h264 (Main)
Stream #0:1(eng): Audio: ac3
Stream #0:2(eng): Subtitle

so that we have successfully added the 'eng' tag to the video stream, but somehow lost the second subtitle stream along the way.

Questions:

  1. What would be the correct command to achieve what I wanted?

  2. Please help me understand what I am missing that leads to the deletion of the second subtitle stream?

Thanks,

Alan.

1 Answers
Related