Вы можете использовать MP4Box 0.6.2-DEV-rev453 (май 2016 г.) или выше, чтобы сделать это:
mp4box -add xr.mp4 -add xr.en.srt:txtflags=0xC0000000 -new ya.mp4
Это пометит поток субтитров в выходном файле как принудительный. Однако этот знак будет распознаваться только начиная с этих версий программ:
Я видел упоминания об этом посте в списке рассылки FFmpeg о патче, который реализует расположение для FFmpeg:
ffmpeg -i xr.mp4 -i xr.en.srt -c copy -c:s mov_text -disposition:s forced ya.mp4
Однако после того, как он попробовал это с "принудительно" и "по умолчанию", субтитры, отмеченные FFmpeg, не распознаются как принудительно ни MPC-HC, ни VLC.
Чтобы ответить на комментарий, вот тест с MP4Box 0.7.0 (апрель 2017 г.) и VLC 3.0.0-20170926 (сентябрь 2017 г.). Обратите внимание, что в более поздних версиях VLC возникают проблемы, даже на видео без субтитров. Используя этот файл:
youtube-dl --write-auto-sub --format 18 --output xr.mp4 kcs82HnguGc
ffmpeg -i xr.en.vtt xr.en.srt
mp4box -add xr.mp4 -add xr.en.srt:txtflags=0xC0000000 -new ya.mp4
Результат: