Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/MPEGGroup/isobmff

Official repository of the ISO Base Media File Format Reference Software
https://github.com/MPEGGroup/isobmff

isobmff mp4 mpeg mpeg-4

Last synced: 3 months ago
JSON representation

Official repository of the ISO Base Media File Format Reference Software

Awesome Lists containing this project

README

        

# ISO Base Media File Format (ISOBMFF)

This repository is the official repository for the ISO Base Media File Format Reference Software.

The ISO base media file format is published by ISO as part 12 of the MPEG-4 specifications, ISO/IEC 14496-12.
As such, it implements and conforms to part of MPEG-4.
This part of MPEG-4 is used heavily by standards other than MPEG-4, and this reference software is often used by the reference software for those other standards, but still provides, in those contexts, an implementation "claiming conformance to MPEG-4".

Updates to the reference software can be submitted using Pull Requests but are subject to approval by MPEG, and a formal input contribution should be submitted to MPEG.

When possible, it is preferred that separate Pull Requests for fixes/enhancements to the build system and for fixes/enhancements to the software features.

## Documentation

The general documentation of the public exported API is available at [gh-pages](https://mpeggroup.github.io/isobmff) and can also be generated locally with [Doxygen](https://www.doxygen.nl/index.html) by running:

``` sh
doxygen Doxyfile
```

In addition, several **How to use** examples as well as the old version of the API (extracted from isofile.doc) are provided in the following [Wiki](https://github.com/MPEGGroup/isobmff/wiki).

## Development

The repository contains the `libisomediafile` which is a library implementing the ISO base media file format.
In addition, several tools to read and write files based on this specification are provided.

### Requirements

- [CMake](https://cmake.org/)
- [git](https://git-scm.com/)

### Compiling

It is recommended to use `cmake` to build the software in this repository.
However, this repository also contains old project files for some IDE's which are no longer maintained and are kept in the repository just to maintain compatibility with other software from MPEG.

Example of commands to build the entire toolset on a Linux platform.

``` sh
git clone https://github.com/MPEGGroup/isobmff.git
cd isobmff
mkdir build && cd build
cmake ..
make
```

#### Cross platform

CMake allows to generate build scripts for different platforms.
For instance:

``` sh
cmake -G "Visual Studio 16 2019" -A ARM64
```

For more generators, please see [CMake documentation](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html).

Note also that certain IDE may be able to natively parse a `CMakeLists.txt`
in which case there is no need to generate specific build scripts. Please refer to your IDE's documentation on how to best handle CMake-based projects.

#### Individual compilation

If you are only interested in certain tools, you can build them individually.

For instance, the `libisomediafile` can be built using `make libisomediafile` when using Unix Makefile.

For a complete list, please refer to the generated build scripts, for instance with Unix Makefile:

``` sh
$ make help
The following are some of the valid targets for this Makefile:
... all (the default if no target is provided)
... clean
... depend
... rebuild_cache
... edit_cache
... libuniDrcBitstreamDecoderLib
... libwavIO
... libreadonlybitbuf
... libwriteonlybitbuf
... TLibDecoder
... TLibCommon
... libisomediafile
... makeAudioMovieSample
... playAudioMovieSample
... DRC_to_MP4
... MP4_to_DRC
... hevc_muxer
... hevc_demuxer
... hevc_extractors
... protectAudioMovie
... libisoiff
... isoiff_tool
... WAV_to_MP4
... MP4_to_WAV
```