How do I render a video with 2 languages, and have a video player like VLC choose between 2 audio tracks (i.e. 1 track for Japanese and the other for English)?
with three inputs (-i flag) – a video file, and two audio files.
The streams are explicitly mapped into the result, counting the inputs from 0 – i.e. -map0:v maps input 0 (the first file) as video (v) to the output file and -map1:a maps the next input as audio (a), etc.
It sets the metadata for the audio tracks -metadata:s:a:0language=jpn sets the first audio track (again counting from 0…) to Japanese; the second metadata option sets the next audio track to English.
-c:v copy specifies that the video codec should be copied directly (i.e. don’t re-encode – remove this if you DO need to re-encode)
-c:a copy specifies that the audio codec should be copied directly (i.e. don’t re-encode – remove this if you DO need to re-encode)
output.mp4 – finally, list the name of the file you want the result written into.
I don’t know how to do it with KDE’s tools, but on the command line with ffmpeg you can do something like this:
Breaking it down, it:
ffmpeg
-i
flag) – a video file, and two audio files.-map 0:v
maps input 0 (the first file) as video (v
) to the output file and-map 1:a
maps the next input as audio (a
), etc.-metadata:s:a:0 language=jpn
sets the first audio track (again counting from 0…) to Japanese; the second metadata option sets the next audio track to English.-c:v copy
specifies that the video codec should be copied directly (i.e. don’t re-encode – remove this if you DO need to re-encode)-c:a copy
specifies that the audio codec should be copied directly (i.e. don’t re-encode – remove this if you DO need to re-encode)output.mp4
– finally, list the name of the file you want the result written into.See documentation here: https://ffmpeg.org/ffmpeg.html
If you need another language in the future, I think the language abbreviations are the three letter codes from here: https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes – but I’m not certain on that.