Disclaimer: Sorry about the hyperbole, that's just how I am and I am aware of it. It could be called being eccentric/passionate about subjects.
First, for the VLC developers: This bug happens when SSA files want to use fonts from the system. This requires fontconfig and this is currently not working on Windows.
If I hadn't forgot all about C++ (6 years have passed since I coded for a living) I'd have loved to try and help you solve the fontconfig problem, and code in the "override SSA subtitle styles" option I described earlier, which is vital when the BUNDLED .mkv subtitles are set to display in, for instance, 16 pixels when the video is 1920x1080, making the subtitles appear as tiny dots! See 2 posts up for description how override could be implemented in a consistent/logical way without ruining the semantics of different font styles in one SSA subtitle file. Examples of a legitimate need for having more than 1 font style is the SSA files that use a smaller/different color font for "[door opens]" etc text for the deaf. The proposed method will keep these semantics while bending them to apply to the font settings the VLC USER wants.
So will the problem be fixed in another version of VLC? Or is there a patch or a work-around that I can use for now? Please advice and thanks for you help.
I've just devised a workaround and I'll be glad to help you. This also takes care of the HUGE annoyance of bundled .ssa (Advanced Substation Alpha) subtitles specifying their own font, font color and font size that makes it
IMPOSSIBLE to see the text on high-resolution videos (as in my example with a 16 pixel font on a 1920x1080 video, that makes the text look like dots).
If your subtitles are NOT bundled INSIDE the .mkv file, then skip to Step 8.
Step 1: Download mkvtoolnix for Windows from
http://www.bunkus.org/videotools/mkvtoo ... ml#windows and install it.
Step 2: Download MKVExtractGUI for Windows from
http://coreforge.org/frs/?group_id=33&release_id=17 and extract it INTO the folder where you installed mkvtoolnix.
Step 3: Run MKVextractGUI.exe
Step 4: Under input, select your .mkv file and the program will load up a list of the content inside it.
Step 5: Check the checkboxes under "Content" for each of the "Track ID X: subtitles (S_TEXT/SSA)" entries. Do NOT check the Video/audio entries unless you want to extract them from the mkv.
Step 6: Now you have two choices. One HORRIBLE but newbie-friendly way, or a slightly more advanced way that has the huge benefit of letting you see the actual fricking extraction progress (extracting is not fast even on a quad core processor and I prefer having a progress indicator for that reason). If you decide to use the GUI, you will get what appears to be a locked up/crashed GUI for many minutes, until the extraction is finally complete. Method a: GUI, method b: Command Line.
Step 6a: Click the "Extract" button in the GUI and wait... a looong time. With no progress indicator.
Step 6b: Much better, and very easy and FAST to do, but it takes a while to explain it so bear with me. After you've done this the first time, it becomes easy to re-do it this way any other time. First, click on the "Tracks" tab inside the GUI, then select all the text in it, which will be a line such as "
mkvextract tracks "F:\movie.mkv" 3:"F:\movie_Track3.ssa" 4:"F:\movie_Track4.ssa" 5:"F:\movie_Track5.ssa" 6:"F:\movie_Track6.ssa" 7:"F:\movie_Track7.ssa" 8:"F:\movie_Track8.ssa" 9:"F:\movie_Track9.ssa" 10:"F:\movie_Track10.ssa" 11:"F:\movie_Track11.ssa" 12:"F:\movie_Track12.ssa" 13:"F:\movie_Track13.ssa" 14:"F:\movie_Track14.ssa". Open a command prompt (start->run->cmd). In the command prompt navigate to the folder where you installed mkvtoolnix, by typing
C: <enter> followed by
cd "\Program Files\MKVtoolnix" <enter> (if you've installed it in the default location). Now, paste the line you copied from the GUI (the "mkvextract tracks..." line) and press <enter>. It will now start extracting the subtitle tracks AND give you a progress indicator. Example:
Code: Select all
C:\Program Files\MKVtoolnix>mkvextract tracks "F:\movie.mkv" 3:"F:\movie_Track3.ssa" 4:"F:\movie_Track4.ssa" 5:"F:\movie_Track5.ssa" 6:"F:\movie_Track6.ssa" 7:"F:\movie_Track7.ssa" 8:"F:\movie_Track8.ssa" 9:"F:\movie_Track9.ssa" 10:"F:\movie_Track10.ssa" 11:"F:\movie_Track11.ssa" 12:"F:\movie_Track12.ssa" 13:"F:\movie_Track13.ssa" 14:"F:\movie_Track14.ssa"
Extracting track 3 with the CodecID 'S_TEXT/SSA' to the file 'F:\movie_Track3.ssa'. Container format: SSA/A.S.S text subtitles
Extracting track 4 with the CodecID 'S_TEXT/SSA' to the file 'F:\movie_Track4.ssa'. Container format: SSA/A.S.S text subtitles
Extracting track 5 with the CodecID 'S_TEXT/SSA' to the file 'F:\movie_Track5.ssa'. Container format: SSA/A.S.S text subtitles
Extracting track 6 with the CodecID 'S_TEXT/SSA' to the file 'F:\movie_Track6.ssa'. Container format: SSA/A.S.S text subtitles
Extracting track 7 with the CodecID 'S_TEXT/SSA' to the file 'F:\movie_Track7.ssa'. Container format: SSA/A.S.S text subtitles
Extracting track 8 with the CodecID 'S_TEXT/SSA' to the file 'F:\movie_Track8.ssa'. Container format: SSA/A.S.S text subtitles
Extracting track 9 with the CodecID 'S_TEXT/SSA' to the file 'F:\movie_Track9.ssa'. Container format: SSA/A.S.S text subtitles
Extracting track 10 with the CodecID 'S_TEXT/SSA' to the file 'F:\movie_Track10.ssa'. Container format: SSA/A.S.S text subtitles
Extracting track 11 with the CodecID 'S_TEXT/SSA' to the file 'F:\movie_Track11.ssa'. Container format: SSA/A.S.S text subtitles
Extracting track 12 with the CodecID 'S_TEXT/SSA' to the file 'F:\movie_Track12.ssa'. Container format: SSA/A.S.S text subtitles
Extracting track 13 with the CodecID 'S_TEXT/SSA' to the file 'F:\movie_Track13.ssa'. Container format: SSA/A.S.S text subtitles
Extracting track 14 with the CodecID 'S_TEXT/SSA' to the file 'F:\movie_Track14.ssa'. Container format: SSA/A.S.S text subtitles
Progress: 19%
Step 7: When the extraction is done, your movie's folder will contain all these separate
_TrackX.ssa files. Open Notepad and drag each file into it one by one until you find the language you wanted. Delete all the language files you don't want.
HOWEVER, WE ARE NOT DONE. THESE .SSA FILES ARE NOT PLAYABLE IN VLC BECAUSE VLC STILL HAS THE BUG THAT MAKES THE TEXT NOT SHOW UP (aka "font <null>" error, described above in the thread). As I had speculated above (and now CONFIRMED) the bug is because the .ssa file specifies a bundled font, ie says "Use Arial for this text" and THAT is what causes the VLC "font <null>" error, which makes the text not show up. To VLC developers: THIS BUG ONLY APPLIES TO WINDOWS.
Step 8: Download and install the amazing, production-grade, free subtitle editor/converter called
Subtitle Workshop. Get it from
http://www.urusoft.net/downloads.php?lang=1. I recommend the "Subtitle Workshop 4 BETA 4" version rather than the old "Subtitle Workshop 2.51". It may be beta, but I have never had any crash or weirdness with it, and it is much improved compared to the old version.
Step 9: Start Subtitle Workshop and drag and drop your
movie_TrackX.ssa file right onto its window. This will load the text. Press
CTRL+Shift+S or (File>Save As). In the save dialog,
name the subtitle the same as your video, ie if the video is called Shrek.mkv, then as "
File name:" type Shrek.
Do not worry about typing in a file ending, just name it exactly as the movie file, minus file extension, ie "Shrek" NOT "Shrek.mkv". After you've typed in the correct name, click on the "
Save as type:" dropdown list and select "
SubRip (*.srt)". Click
Save or press <enter>.
Step 10: Start up VLC and start the video. Right-click the video and navigate to "
Video->" (or click on the Video menu at the top of the window, either is fine), then navigate to the "
Subtitles Track->" submenu. Select the LAST entry in this list, which will be your
external subtitle. VLC lists the
internal (contained
inside the .mkv) subtitles first, followed by any
external subtitles after that.
So the last entry will be your newly extracted and converted subtitle.
All in all, this takes a MAXIMUM of 5 minutes. Even faster after you've learnt the process and become good at it.
What you've done is:
- Extracted the subtitle from the .mkv file into a separate file.
- Converted the subtitle into .srt, a format which CANNOT specify "what font to use", meaning you've in effect stripped the font specification from the subtitle.
- Told VLC to use this external subtitle instead of one of the internal ones.
- You're done!
This also solves the huge annoyance that internal SSA subtitles (hardcoded into the MKV so you can't change them without the above extraction) OR external SSA subtitles (which are easy to edit/convert so it's not as severe as the bundled subtitles) can specify a font, which will override any choices the USER has made in the VLC SETTINGS for what font/font size/font color the USER wants. The ability for the SSA format to specify a font breaks the uniform/specific nature of the fact that the users WANT TO specify their own fonts and settings so that every video appears the same with the same readable/uniform font. The SSA format's ability to specify fonts/sizes/color completely breaks the choices the USER has made and in extreme cases makes the text unreadably small, and that behaviour is illogical, hence why a "override SSA subtitle styles" option would be logical and useful. Imagine a Home Theater PC environment where some of the videos have subtitles that look like tiny dots, that's how serious the problem is and why a "override" option would be very, very useful.
Thanks to converting to SRT (which gets rid of font definition/font color/font size) the subtitles will now be displayed AND they will use the VLC SETTINGS to display in the way YOU want them to.
- New Cone, Chris