Re: Extract untouched audio track from mkv/webm programatically
Róbert Kohányi <[email protected]> Tue, 12 Mar 2013 19:02:08 +0100
| Newsgroups | gmane.comp.multimedia.matroska.user |
|---|---|
| Message-ID | <CABFab9dObCn3-YSh7UJAujf61ru3eQ9pjCWU6g-A__mdgSiioA@mail.gmail.com> |
Thanks for the thorough answer, I'll look into all of these when I get the chance. On Tue, Mar 12, 2013 at 6:38 PM, Moritz Bunkus <[email protected]> wrote: > Hey, > > On Tue, Mar 12, 2013 at 6:24 PM, Róbert Kohányi > <[email protected]> wrote: > > > Now, this is the point where I'm stuck. I've read the > manual/specification > > for EBML but I'm not sure if I got it right. As I understood it the > actual > > data (video and/or audio) are located *inside* the Cluster element, > > Correct so far, but there can be an unlimited number of cluster > elements, not just one. > > > How can I identify the Block/SimpleBlock elements belonging to a > particular > > TrackEntry? > > The SimpleBlock and Block structures are not EBML master elements with > child elements (simply due to the overhead that would incur). Their > binary structure is described in the Matroska specifications here[1] > for SimpleBlocks and here[2] for Blocks. Code that reads both > structures can be found in libmatroska[4]. > > The SimpleBlock and BlockGroup binary structures do indeed contain a > track number which corresponds to the "TrackNumber" child element of a > TrackEntry structure. > > > But, let's say I've found all the Block/SimpleBlock elements that belong > to > > a single audio ogg vorbis audio track. Can I just *append* these after > each > > other and be done with it? > > For Vorbis? No. You'll have to frame them in Ogg packets. > > For an idea how that is usually done: mkvextract contains code[3] just > for this. However, it does use libvorbis & libogg from > http://www.xiph.org for this purpose. If you cannot use those > libraries you'll have to write the Ogg framing yourself. You should > get help for that elsewhere, though, where there are more Ogg experst > ;) (Xiph has mailing lists for Vorbis) > > Kind regards, > mosu > > [1] > http://www.matroska.org/technical/specs/index.html#simpleblock_structure > [2] http://www.matroska.org/technical/specs/index.html#block_structure > [3] > https://github.com/mbunkus/mkvtoolnix/blob/master/src/extract/xtr_ogg.cpp#L69 > for the header pages and > > https://github.com/mbunkus/mkvtoolnix/blob/master/src/extract/xtr_ogg.cpp#L184 > for how a single frame would be written > [4] > https://github.com/Matroska-Org/libmatroska/blob/master/src/KaxBlock.cpp#L414 > reads the "head" of the Block/SimpleBlock structure, the frames > contained therein are read starting from > > https://github.com/Matroska-Org/libmatroska/blob/master/src/KaxBlock.cpp#L450 > _______________________________________________ > Matroska-users mailing list > [email protected] > http://lists.matroska.org/cgi-bin/mailman/listinfo/matroska-users > Read Matroska-Users on GMane: > http://dir.gmane.org/gmane.comp.multimedia.matroska.user > _______________________________________________ Matroska-users mailing list [email protected] http://lists.matroska.org/cgi-bin/mailman/listinfo/matroska-users Read Matroska-Users on GMane: http://dir.gmane.org/gmane.comp.multimedia.matroska.user