• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Mini MP4
2==========
3
4[![Build Status](https://travis-ci.org/lieff/minimp4.svg)](https://travis-ci.org/lieff/minimp4)
5
6Easy embeddable MP4 mux/demux library.
7
8## Usage
9#### Muxing
10
11Muxing can be done using 3 modes.
12Default mode uses one big mdat chunk:
13
14![default](images/mux_mode_default.png?raw=true)
15
16This is most efficient mode, but disadvantage is that we need go back and patch mdat chunk size.
17This can be a problem in some cases, for example if stream transfered over network.
18To workaround this sequential mode is used:
19
20![default](images/mux_mode_sequential.png?raw=true)
21
22This mode do not make any backwards seek.
23And last mode is fragmented aka fMP4.
24
25![default](images/mux_mode_fragmented.png?raw=true)
26
27This mode stores track information first and spreads indexes across all stream, so decoding can start before whole stream available.
28This mode is sequential too and usually used by browsers and HLS streaming.
29
30## Bindings
31
32 * https://github.com/darkskygit/minimp4.rs - rust bindings
33
34## Interesting links
35
36 * https://github.com/aspt/mp4
37 * https://github.com/l30nnguyen/minimum_mp4_muxer
38 * https://github.com/DolbyLaboratories/dlb_mp4demux
39 * https://github.com/DolbyLaboratories/dlb_mp4base
40 * https://github.com/ireader/media-server/tree/master/libmov
41 * https://github.com/wlanjie/mp4
42 * https://github.com/MPEGGroup/isobmff
43 * http://www.itscj.ipsj.or.jp/sc29/open/29view/29n7644t.doc
44 * http://atomicparsley.sourceforge.net/mpeg-4files.html
45 * http://cpansearch.perl.org/src/JHAR/MP4-Info-1.12/Info.pm
46 * https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFPreface/qtffPreface.html
47 * http://xhelmboyx.tripod.com/formats/mp4-layout.txt
48