Streaming parser for embedded .mkv subtitles.
npm install matroska-subtitles
!Downloads
!Dependency status


Streaming parser for embedded .mkv subtitles.
Supported formats: .srt, .ssa, .ass.
``shell`
$ npm install matroska-subtitles
or include it directly:
`html`
`js
const fs = require('fs')
const { SubtitleParser } = require('matroska-subtitles')
const parser = new SubtitleParser()
// first an array of subtitle track information is emitted
parser.once('tracks', (tracks) => console.log(tracks))
// afterwards each subtitle is emitted
parser.on('subtitle', (subtitle, trackNumber) =>
console.log('Track ' + trackNumber + ':', subtitle))
fs.createReadStream('Sintel.2010.720p.mkv').pipe(parser)
`
See examples folder for more examples.
`js`
[
{ number: 3, language: 'eng', type: 'utf8', name: 'English(US)' },
{ number: 4, language: 'jpn', type: 'ass', header: '[Script Info]\r\n...' }
]
- The language attribute can be undefined if the mkv track does not specify it, this is often interpreted as eng.name
- The attribute is not standard but may provide language info.
`js`
{
text: 'This blade has a dark past.',
time: 107250, // ms
duration: 1970 // ms
}
event that emits embedded mkv files, mainly to be used to extract embedded subtitle fonts.`js
parser.on('file', file => console.log('file:', file))
`Output:
`js
{
filename: 'Arial.ttf',
mimetype: 'application/x-truetype-font',
data: Buffer() [Uint8Array]
}
`random access
This module also includes a SubtitleStream class for intercepting subtitles
in mkv streams with support for seeking.`js
const { SubtitleStream } = require('matroska-subtitles')let subtitleStream = new SubtitleStream()
subtitleStream.once('tracks', (tracks) => {
// close the old subtitle stream and open a new at a different stream offset
subtitleStream = new SubtitleStream(subtitleStream)
})
``See examples/random-access.js for a detailed example.
MIT