Working with MKV (Matroska) video files you'll pretty soon hit on
Mkvtoolnix. Using it you can easily extract any track (audio, video, subtitle) from an MKV file.
First run
mkvinfo
to get a list of tracks.
Using v5.2.0 on Mac OS X you get a similiar output:
$ mkvinfo sample.mkv
+ EBML head
|+ Doc type: matroska
|+ Doc type version: 2
|+ Doc type read version: 2
+ Segment, size 682327795
|+ Seek head (subentries will be skipped)
|+ EbmlVoid (size: 4027)
|+ Segment information
| + Timecode scale: 1000000
| + Muxing application: libebml v0.7.8 + libmatroska v0.8.1
| + Writing application: mkvmerge v2.9.5 ('Tu es le seul') built on Jun 17 2009 16:28:30
| + Duration: 1555.520s (00:25:55.520)
| + Date: Sun Dec 25 20:48:55 2011 UTC
| + Segment UID: 0x83 0x34 0xda 0xc8 0x35 0x6c 0xe6 0xa2 0xb4 0xb9 0x63 0x0e 0x15 0xa9 0x36 0x60
|+ Segment tracks
| + A track
| + Track number: 1
| + Track UID: 3887535020
| + Track type: video
| + Enabled: 1
| + Default flag: 1
| + Forced flag: 0
| + Lacing flag: 0
| + MinCache: 1
| + Timecode scale: 1
| + Max BlockAddition ID: 0
| + Codec ID: V_MPEG4/ISO/AVC
| + Codec decode all: 1
| + CodecPrivate, length 42 (h.264 profile: High @L4.1)
| + Default duration: 40.000ms (25.000 fps for a video track)
| + Language: und
| + Video track
| + Pixel width: 1280
| + Pixel height: 720
| + Interlaced: 0
| + Display width: 1280
| + Display height: 720
| + A track
| + Track number: 2
| + Track UID: 1236562563
| + Track type: audio
| + Enabled: 1
| + Default flag: 1
| + Forced flag: 0
| + Lacing flag: 1
| + MinCache: 0
| + Timecode scale: 1
| + Max BlockAddition ID: 0
| + Codec ID: A_AC3
| + Codec decode all: 1
| + Default duration: 32.000ms (31.250 fps for a video track)
| + Language: eng
| + Audio track
| + Sampling frequency: 48000
| + Channels: 6
| + A track
| + Track number: 3
| + Track UID: 1977222801
| + Track type: subtitles
| + Enabled: 1
| + Default flag: 1
| + Forced flag: 0
| + Lacing flag: 0
| + MinCache: 0
| + Timecode scale: 1
| + Max BlockAddition ID: 0
| + Codec ID: S_TEXT/SSA
| + Codec decode all: 1
| + CodecPrivate, length 1231
| + Language: eng
|+ EbmlVoid (size: 1024)
|+ Cluster
Find the number of the track ("Track number") that you want to extract, subtract one (for some reason
mkvextract
indexes tracks starting with 0, while
mkvinfo
starts the index from 1) and execute
mkvextract
:
$ mkvextract tracks sample.mkv 2:subtitle.ssa
Extracting track 2 with the CodecID 'S_TEXT/SSA' to the file 'subtitle.ssa'. Container format: SSA/ASS text subtitles
Progress: 100%
This saved the subtitle into the file
subtitle.ssa
. The "S_TEXT/SSA" stands for the
SubStation Alpha subtitle format. You can easily edit or convert it into other formats using
Jubler.
Comments
Re:Extracting Subtitles from MKV
The software in this method also helps to add subtitles to video or remove subtitles from videos.