Skip to content
/ mkvparse Public

Simple Python matroska (mkv) reading library, also mkv2xml and xml2mkv

Notifications You must be signed in to change notification settings

vi/mkvparse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a920e65 · Jul 4, 2022

History

73 Commits
Jul 29, 2013
Apr 28, 2016
May 10, 2012
Jun 16, 2020
Apr 28, 2016
Apr 28, 2016
Jun 16, 2020
Apr 28, 2016
Apr 28, 2016
Apr 28, 2016
Feb 1, 2017
Jul 4, 2022

Repository files navigation

Simple easy-to-use hacky matroska parser

Define your handler class:

class MyMatroskaHandler(mkvparse.MatroskaHandler):
    def tracks_available(self):
        ...

    def segment_info_available(self):
        ...

    def frame(self, track_id, timestamp, data, more_laced_blocks, duration, keyframe_flag, invisible_flag, discardable_flag):
        ...

and mkvparse.mkvparse(file, MyMatroskaHandler())

Supports lacing and setting global timecode scale, subtitles (BlockGroup). Does not support cues, tags, chapters, seeking and so on. Supports resyncing when something bad is encountered in matroska stream.

Also contains example of generation of Matroska files from python

Also contains mkv2xml and xml2mkv: tools that convert Matroska files to/from XML plaintext. Example XML file . Example command:

$ cat test3.mkv | ./mkv2xml | ./xml2mkv | mplayer - # convert to XML and back and play

Subtitles should remain as text, binary data gets encoded to hex.

Licence=MIT