_     _             
                        _ __ | |__ | | ___   __ _ 
                       | '_ \| '_ \| |/ _ \ / _` |
                       | |_) | | | | | (_) | (_| |
                       | .__/|_| |_|_|\___/ \__, |
                       |_|    ...2019-12-20 |___/ 

Howto: Dual subtitles

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

The filter complex is simple enough: Video input from stream 0 goes through the

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.

A different approach is using a program like "dualsub", but the way it merged

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.