Set a subtitle language using ffmpeg

ffmpeg, subtitle

Solution

After some research, found the reason why -slang didn't work. In fact you use a recent version of ffmpeg and it's a good thing but if the documentation still describe the option, you can find in the ChangeLog:

version 0.9:
...
 * -metadata can now be used to set metadata on streams and chapters, e.g.
      -metadata:s:1 language=eng sets the language of the first stream to 'eng'.
      This made -vlang/-alang/-slang options redundant, so they were removed.

When you find a command line example, check if the option used are in Your version of ffmpeg.

 ffmpeg --help >> ffmpeg-doc.txt

The `-slang` option isn't in.

But it also proof that the on-line documentation about ffmpeg is sometime incorrect regarding the code change.

Problem

I tried googling a way to set the language of a subtitle stream with ffmpeg and found the -slang option. So I tried the following command but immediately receive an error: ``` ffmpeg -i input.avi -i subs.srt -c:a copy -c:s mov_text -slang eng -c:v libx264 -profile:v high -level:v 4.0 output.mp4 ffmpeg version 1.1 Copyright (c) 2000-2013 the FFmpeg developers built on Jul 18 2013 23:00:53 with Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn) ``` libavutil 52. 13.100 / 52. 13.100 libavcodec 54. 86.100 / 54. 86.100 libavformat 54. 59.106 / 54. 59.106 libavdevice 54. 3.102 / 54. 3.102 libavfilter 3. 32.100 / 3. 32.100 libswscale 2. 1.103 / 2. 1.103 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100 Unrecognized option 'slang'. Error splitting the argument list: Option not found After more googling I found another way to do it using the -metadata command: ``` ffmpeg -i input.mp4 -i subs.srt -c:a copy -c:v copy -c:s mov_text -metadata:s:s:0 language=eng output.mp4 ``` And that works absolutely fine. But this isn't mentioned in the ffmpeg man page, whereas -slang is, which makes me think the -metadata command is maybe outdated or in some other way not as good as -slang. - What is the difference between using the two above methods (-slang vs -metadata)? - Why did my -slang command give an error? Have I used it incorrectly?

Original source