[Matroska-devel] LibMatroska example question

Mike Matsnev mike at po.cs.msu.su
Thu Jan 26 12:05:17 CET 2006

On Thu, Jan 26, 2006 at 11:30:51AM +0100, Armin M?ller wrote:
> I tried to adapt my muxing application to use pointers instead of the  
> & in the variable definition, but i ran into troubles again.
> I read parts of the source code of VLC (which does not contain a  
> matroska multiplexer) and mkvmerge. MkVMerge is a great application,  
> but it is really hard to understand because of all the beatiful  
> separation of functionallity into seperate modules.
> Doesn't there exist a simple sample application that only takes two  
> files (audio and video) and multiplexes them into one matroska file.  
> This programm should not have all the bells and whistles that e.g  
> MkvMerge has, because of learning how to se the pure multiplexing in  
> own applications.
> In my application I want to save two (or later more) streams  
> interleaved (one video, one audio, one video, ...) into a matroska  
> file. So I have a class MKIO that has a method
> bool writeFrame(Frame* frm, int trackId);
> I want to have all the necessary variables defined as class variables  
> (KaxSegment, KaxTracks, ...) because I instantiate the Matroska  
> Header on first writeFrame and then on each additional call of this  
> method I "add" a Frame to the container (KaxCluster->AddFrame). So I  
> have to have access to some variables, that need to keep their values  
> throughout method calls.
> I follow this list quite some time and I notized that several people  
> would need some simple sample applications for matroska with quite  
> some good documentation (also inline code documentatio).
> I want to use Matroska as the main container format for our  
> multimedia framework, because I think it offers a lot of features  
> that allow us to store additional intormation (even as a kind of  
> metadata serialization of our internal metadata structure).
You may want to take a look at x264 project, I've written a mini-muxer
for it. It only supports one track atm, but extending it is fairly
easy. It doesn't use libmatroska/libebml, but the API is much

More information about the Matroska-devel mailing list