Subtitles Burn In Nonsense Tell All

MKV playback, recompression, remuxing, codec packs, players, howtos, etc.
Post Reply
HappyIdiot
Posts: 1
Joined: Thu Nov 28, 2024 12:51 am

Subtitles Burn In Nonsense Tell All

Post by HappyIdiot » Thu Nov 28, 2024 12:58 am

For Passion of the Christ or Game of Thrones and any movie that uses minor captions (Black Panther), the subtitles won’t show up unless they’re marked forced
Unless you mark the correct “forced subtitle” with “df” (default/forced) in Expert Mode in MKV, you still need a player that plays forced subtitles automatically
- VLC Player, does NOT play forced subtitles automatically
- MPV Player does play forced subtitles automatically
- Great program for testing

MKVToolNix
- In the header editor section, toggle default and forced on the correct subtitle
- Then, click save via the header editor toolbar
- Loading and saving in MKVToolNix takes time, so be patient
- 64-bit version kept crashing, so use the 32-bit version

Other
- There might be a discrepancy between language and subtitles playing automatically, as some movies’ sound language is marked for something other than english (you’ll see all that in MKVToolNix)
- default/forced, it looks to be better to mark both for the forced subtitles (df)
- Handbrake will compress your videos when recording “burn in” subtitles meaning you’ll lose quality
- The program Mediainfo can offer insight into the correct “forced subtitle” from the MKV
- There’s an additional subtitle editor program that can be looked at for answers as well

Take aways
- Actual movie studios use “burn in” via premiere or some other video editing program
- Realistically, I personally will not be chasing these subtitles except for movies completely in another language
- Secondly, since I use VLC on my XBOX for all my MKV watching, so I’ll simply toggle the correct english forced subtitle for movies like Black Panther or just miss out on them completely (Game of Thrones)

Woodstock
Posts: 10332
Joined: Sun Jul 24, 2011 11:21 pm

Re: Subtitles Burn In Nonsense Tell All

Post by Woodstock » Thu Nov 28, 2024 2:15 am

Dealing with subtitles for 90+% of stuff I rip, the "forced subtitles" are rarely tagged as such. I've had two movies that did so properly; the closest others have been ones where they encoded the video with the forced subtitles, rather than using a subtitle track (Star Trek movies are typical examples), although those often have an "everything" subtitle track in addition to those.

You're GOING to have to make use of something like mkvtoolnix to tag tracks as "forced", even after running the MKV files through something like handbrake to re-arrange the order of the subtitle tracks. Few tools will tag the tracks correctly for all players. You want the track you want to see "all the time" tagged as both "Default" and "Forced".

If you're converting to something like MP4 files, where they have to be burned in, then flags don't matter.

As for "takes time", if you know what you want mkvtoolnix to do in advance, you can put it on the command line, and have it happen almost instantly. I use a batch file to do it, and it can do an entire TV series in under a minute.

flojo
Posts: 109
Joined: Thu Jun 22, 2023 4:27 am
Location: El Paso

Re: Subtitles Burn In Nonsense Tell All

Post by flojo » Thu Nov 28, 2024 3:47 am

Multiple subtitle streams marked: "default_track": true, are displayed based on FIFO. Ignore "forced_track" and "enabled_track" and pretend "default_track" is the only one.

Don't use mediainfo, use "mkvmerge -J <file>" as recommended by all mkvtools. No matter how the .mkv file is created, a player generally adheres to the specification, so the track ID/order given by mkvmerge -J is ultimately what the player should/will use.

I have a unfinished Python script I made for cartoons/anime, for which it disables Japanese audio and subtitles but only _IF_ English audio is found. It's good if all you want is <language> audio and either no subtitles or only forced <language> subtitles. If interested, I could clean it up and put it on gitlab. It does _NOT_ remux, it uses mkvpropedit.

Code: Select all

 one_lang.py:
 
 Required Options:
  -i, --input_file  file to modify ie. "./video.mkv"
  -a, --audio-language 
                        3 letter language to use, eg: "eng" (see:
                        https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes)
  -s, --subtitle-language 
                        3 letter language to use, eg: "eng" (see:
                        https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes)

Mutually Exclusive Subtitle Options:
  -d, --disable-all-subtitles
                        unsets/disables all subtitles (default: False)
  -o, --enable-one-matching-subtitle
                        match one non-forced subtitle if possible, forced if not possible (default: False)
  -x, --use-subtitle-track-number 
                        uses this subtitle track number. Useful if always wanting a certain track (default: -1)
  --default-subtitle-operation
                        the normal operation that happens by default if you don't choose 1 of the subtitle exclusives

Mutually Exclusive Audio Options:
  -y, --use-audio-track-number 
                        uses this audio track number. Useful is always wanting a certain track (default: -1)
  --default-audio-operation
                        the normal operation that happens by default if you don't choose 1 of the audio exclusives

Options:
  -p, --audio-codec-priority 
                        CSV list of codec names (default: DTS-HD Master Audio,E-AC-3,TrueHD,AC-3 Dolby Surround
                        EX,DTS-ES,A_MS/ACM,DTS,AC-3,FLAC,PCM) (see:
                        https://www.matroska.org/technical/codec_specs.html)
  -n, --no-subtitle-modifications
                        disable all subtitle modifications (default: False)
  -j, --no-audio-modifications
                        disable all audio modifications (default: False)
  -g, --enable-one-matching-subtitle-if-no-matching-audio
                        if no matching audio, enables one matching subtitle (default: False)
  -f, --search-for-force-in-subtitle-track-name
                        additionally search for "force" in track name. Handy if the track does not have the forced
                        property set, but does have the word "Forced" in a subtitle track name matching your chosen
                        language (default: False)
  -w, --filter-regex-from-subtitle-track-names 
                        when choosing a subtitle track, this will use re.search() to filter _OUT_ any matches. You can
                        use a regular string eg. -g '(?iu)commentary' (default: "") (see:
                        https://docs.python.org/3/library/re.html)
  -z, --filter-regex-from-audio-track-names 
                        when choosing a audio track, this will use re.search() to filter _OUT_ any matches. You can
                        use a regular string eg. -c '(?iu)commentary' (default: "") (see:
                        https://docs.python.org/3/library/re.html)
  -k, --replace-title-with-filename
                        replaces the global file title with the its own filename minus extension (default: False)
  -t, --remove-title    removes the file's title property (default: False)
  -r, --remove-all-tags
                        strips all tags, note: tags are _NOT_ chapters (default: False)
  -b, --mkvmerge-bin 
                        link to mkvmerge, ie. /usr/bin/mkvmerge (default: $PATH)
  -e, --mkvpropedit-bin 
                        link to mkvpropedit ie. /usr/bin/mkvpropedit (default: $PATH)
  -m, --print-audio-codecs
                        print a comma separated list of audio codecs then exit (default: False)
  -c, --print-video-codecs
                        print a comma separated list of video codecs then exit (default: False)
  -u, --print-subtitle-codecs
                        print a comma separated list of subtitle codecs then exit (default: False)
  --parse-mode-full     uses the full parse mode of mkvpropedit, which takes much longer, but may be needed for
                        broken/corrupt files (default: False (fast mode))
                        

Usage example:
./one_lang.py -a "eng" -s "eng" -f -w '(?iu)comment' -z '(?iu)comment' -i ./video.mkv

Post Reply