Bento4
Bento4是一个C++类库和工具集,旨在读取和写入ISO-MP4文件。 这种格式在国际规范ISO/IEC 14496-12、14496-14和14496-15中定义。 该格式是Apple Quicktime文件格式的衍生品,因此Bento4也可用于读取和写入大多数Quicktime文件。
详情请访问www.bento4.com
功能特性
Bento4支持多种基于ISO-MP4格式和相关技术的格式和功能,包括:
- 使用分片MP4文件的MPEG DASH,如ISO/IEC 23009-1所定义
- ISO/IEC 23000-19定义的CMAF(通用媒体应用格式)
- ISO/IEC 23001-7规定的MPEG通用加密(CENC)
- PIFF(受保护的互操作文件格式):Microsoft指定的加密、分片MP4格式,用于加密HTTP平滑流。
- 读取和写入3GPP和iTunes兼容的元数据。
- ISMA E&A规范定义的ISMA加密和解密
- OMA规范定义的OMA 2.0和2.1 DCF/PDCF加密和解密。
- 3GPP标准系列中的ISO-MP4文件配置。
- UltraViolet(DECE)CFF(通用文件格式)。
- H.264(AVC)视频和AAC音频基本流的解析和复用
- 支持与MP4格式内容兼容的多种DRM系统(通常利用CENC通用加密),如Marlin、PlayReady和Widevine。
- 支持广泛的编解码器,包括H.264(AVC)、H.265(HEVC)、AAC、AC-3、EC-3(杜比数字plus)、AC-4、杜比全景声、DTS、ALAC等。
设计
SDK设计为跨平台。代码具有很强的可移植性;可以用任何足够现代的C++编译器编译。实现不依赖任何外部库。编译SDK和工具所需的所有代码都包含在标准发行版中。标准发行版包含类Unix操作系统(包括Linux和Android)的makefiles、Microsoft Visual Studio的项目文件,以及用于MacOS X和iOS的XCode项目。还支持使用SCons构建系统来构建库。
许可证
该库采用开源双重许可模式。你可以在"关于"页面了解更多关于许可证的信息。 "开发者"页面包含获取源代码和文档的具体信息。"下载"页面包含预构建SDK和工具的链接,你可以用它们快速开始。
包含的应用程序
Bento4 SDK包含几个使用SDK API构建的命令行应用程序/工具。这些包括:
应用名称 | 描述 |
---|---|
mp4info | 显示MP4文件的高级信息,包括所有轨道和编解码器详情 |
mp4dump | 显示MP4文件的整个原子/盒结构 |
mp4edit | 添加/插入/删除/替换MP4文件的原子/盒项目 |
mp4extract | 从MP4文件中提取原子/盒 |
mp4encrypt | 加密MP4文件(支持多种加密方案) |
mp4decrypt | 解密MP4文件(支持多种加密方案) |
mp4dcfpackager | 将媒体文件加密为OMA DCF文件 |
mp4compact | 将'stsz'表转换为'stz2'表,创建更紧凑的MP4文件 |
mp4fragment | 从非分片文件创建分片MP4文件或重新分片已分片的文件 |
mp4split | 将分片MP4文件拆分为离散文件 |
mp4tag | 显示/编辑MP4元数据(iTunes风格和其他) |
mp4mux | 将一个或多个基本流(H264、AAC)复用到MP4文件中 |
mp42aac | 从MP4文件中提取原始AAC基本流 |
mp42avc | 从MP4文件中提取原始AVC/H.264基本流 |
mp42hls | 将MP4文件转换为HLS(HTTP Live Streaming)展示,包括生成分段和.m3u8播放列表 |
mp42ts | 将MP4文件转换为MPEG2-TS文件 |
mp4-dash | 从一个或多个MP4文件创建MPEG DASH输出,包括加密 |
mp4-dash-clone | 创建远程或本地MPEG DASH展示的本地克隆,可选择在克隆时加密分段 |
构建
代码可以通过使用预配置的IDE项目文件(Mac OSX、iOS和Windows)构建,也可以使用SCons构建系统或CMake编译/交叉编译,或使用Make编译。
特定目标平台的构建文件和配置位于Build/Targets/xxxx子目录下,其中xxxx采用<架构>-<供应商>-<操作系统>
的形式。例如,Linux x86目标特定文件位于Build/Targets/x86-unknown-linux
下。Mac OSX的XCode项目文件位于Build/Targets/universal-apple-macosx
下。
使用 XCode 在 Mac OSX 和 iOS 上构建
打开 XCode 项目文件 Build/Targets/universal-apple-macosx/Bento4.xcodeproj 并构建
使用 Visual Studio 在 Windows 上构建
打开 Visual Studio 解决方案文件 Build/Targets/x86-microsoft-win32-vs2010/Bento4.sln 并构建
在 Linux 和其他平台上使用 CMake
CMake 可以生成 Makefiles、Xcode 项目文件或 Visual Studio 项目文件。
CMake/Make
mkdir cmakebuild
cd cmakebuild
cmake -DCMAKE_BUILD_TYPE=Release ..
make
CMake/Xcode
mkdir cmakebuild
cd cmakebuild
cmake -G Xcode ..
cmake --build . --config Release
CMake/Visual Studio
mkdir cmakebuild
cd cmakebuild
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --config Release
用于 Android NDK 的 CMake
mkdir cmakebuild
cd cmakebuild
cmake -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=$ABI -DANDROID_NATIVE_API_LEVEL=$MINSDKVERSION ..
make
有关选择 ABI 和其他参数的详细信息,请参阅 https://developer.android.com/ndk/guides/cmake。
其中 $NDK 设置为您安装 NDK 的目录路径,$ABI 是 Android ABI(例如:arm64-v8a),$MINSDKVERSION 是最低 SDK 版本(例如:23)
在 Linux 和其他平台上使用 SCons(已弃用)
确保您在主机上安装了 SCons 构建工具(http://www.scons.org)。 要构建 Debug 配置,只需在终端中输入以下命令:
scons -u
您可以在任何目录中执行此命令(可以是您下载 Bento4 分发包的顶级目录,也可以是特定目标的 Build/Targets/xxx 子目录)。
要构建 Release 配置,请使用以下命令:
scons -u build_config=Release
要为非主机架构的目标进行交叉编译,请在 scons 构建命令中指定 target=xxxx 作为参数。
示例:
scons -u build_config=Release target=x86_64-unknown-linux
使用 Make
从命令行进入您的构建目标目录。
对于 Debug 构建:
make
对于 Release 构建:
make AP4_BUILD_CONFIG=Release
安装 Bento4(vcpkg)
或者,您可以使用 vcpkg 依赖管理器构建和安装 Bento4:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install bento4
vcpkg 中的 Bento4 端口由 Microsoft 团队成员和社区贡献者保持更新。如果版本过时,请在 vcpkg 仓库上创建问题或拉取请求。
发布说明
1.6.0-638
- 支持多比特率音频
- 使用 MkDocs 的新文档
- 添加 av1 文件并删除 vs2019 构建中的已弃用选项
- 添加 AV1 支持
- 改进 USAC 信号处理
- 在 Windows 上添加 UTF-8 支持
- 修复 LGTM 警告
- 在 EOS 时考虑最后一个样本
- 新的检查器 API
- 错误修复
1.6.0-636
Dolby Vision 加密现在可以正确地以 NAL 单元感知模式进行加密
之前的版本
(没有单独的说明,请参考提交日志)