Bento4 MP4 & DASH Class Library, SDK and Tools

Bento4 is a C++ class library and tools designed to read and write ISO-MP4 files. This format is defined in international specifications ISO/IEC 14496-12, 14496-14 and 14496-15. The format is a derivative of the Apple Quicktime file format, so Bento4 can be used to read and write most Quicktime files as well.

Features

A number of formats and features based on the ISO-MP4 format and related technologies are also supported, including:

Support for multiple DRM systems that are compatible with MP4-formatted content (usually leveraging CENC Common Encryption), such as Marlin, PlayReady, Widevine and FairPlay.

Support for a wide range of codecs, including H.264 (AVC), H.265 (HEVC), AAC, AC3 and eAC3 (Dolby Digital), DTS, ALAC, and many more.

Generation of HLS (HTTP Live Streaming), including HLS with fMP4 (Fragmented MP4) segments for a dual DASH/HLS output.

The SDK is designed to be cross-platform. The code is very portable; it can be compiled with any sufficiently modern C++ compiler. The implementation does not rely on any external library. All the code necessary to compile the SDK and tools is included in the standard distribution. The standard distribution contains makefiles for unix-like operating systems, including Linux and Android, project files for Microsoft Visual Studio, and an XCode project for MacOS X and iOS. There is also support for building the library with the SCons build system as well as CMake.

The library is Open Source, with a dual-license model. You can find out more about the license on the About Page.
The Developers Page contains specific information on where to obtain the source code and documentation. The Downloads Page contains the links to pre-built SDKs and tools that you can use to get started quickly.

Included Applications

The Bento4 SDK includes several command-line applications/tools that are built using the SDK API. These include:

mp4info

displays high level info about an MP4 file, including all tracks and codec details

multiplexes one or more elementary streams (H264, AAC) into an MP4 file

mp42aac

extract a raw AAC elementary stream from an MP4 file

mp42avc

extract a raw AVC/H.264 elementary stream from an MP4 file

mp42hls

converts an MP4 file to an HLS (HTTP Live Streaming) presentation, including the generation of the segments and .m3u8 playlist as well as AES-128 and SAMPLE-AES (for Fairplay) encryption. This can be used as a replacement for Apple’s mediafilesegmenter tool.

mp42ts

converts an MP4 file to an MPEG2-TS file.

mp4dash

creates an MPEG DASH output from one or more MP4 files, including encryption. This is a full-featured MPEG DASH packager.

mp4dashclone

creates a local clone of a remote or local MPEG DASH presentation, optionally encrypting the segments as they are cloned.

mp4hls

creates a multi-bitrate HLS master playlist from one or more MP4 files, including support for encryption and I-frame-only playlists. This tool uses the ‘mp42hls’ low level tool internally, so all the options supported by that low level tool are also available. This can be used as a replacement for Apple’s variantplaylistcreator tool.