_ _
_ __ | |__ | | ___ __ _
| '_ \| '_ \| |/ _ \ / _` |
| |_) | | | | | (_) | (_| |
| .__/|_| |_|_|\___/ \__, |
|_| ...2019-12-20 |___/
I needed to show a movie with two different language subtitles at the same time.
After a wee bit of reasearch I found out that there's a rather hacky solution
for VLC which requires a plugin and some other stuff, so I went the obvious way:
Re-encode the movie using FFMPEG and the filter_complex option.
In all its primitive glory, this command-line will re-encode the movie with
the first language subtitles centered on the top of the screen, and the second
language subtitles centered on the bottom of the screen.
In bash:
ffmpeg -i movie.mp4 -filter_complex "[0:v]subtitles=LANGUAGE_A.srt
:force_style='Alignment=6'[1:v];[1:v]subtitles=LANGUAGE_B.srt" \
-preset slow -crf 19 -b:a 320k movie_with_dual_subs.mp4
first subtitles filter, which renders subtitles on top of the screen and outputs
video on stream 1. Video from stream 1 goes through the second subtitles filter,
which renders the second set of subtitles and passes video out to the encoder.
timing did not work for me, as the two sets of subtitles were timed differently
enough that it would sometimes fill the entire screen with text.