1. MP4Muxer / MP4Demuxer
用于封装和分流 mp4
1.1 MP4Muxer
- 导入文件必须是单纯的视频或者音频轨
- 视频文件支持 H264 H265
- 音频文件支持 AAC AC3 EC3 AC4
代码 | 用途 |
---|---|
-i / --input-file | 导入文件 (一句代码一个文件) |
--media-lang | 设定导入文件的语言 |
-o / --ouput-file | 输出文件 |
--overwrite | 输出目录下若有同名文件则直接覆盖 |
--dv-profile | 若要封装杜比视界,则需用来设定 profile |
--dv-bl-compatible-id | 如果封装 profile 为 8 的杜比视界,则需用来设定兼容层的id |
Profile | 视频编码 | 单层/双层 | 向后兼容 |
---|---|---|---|
4 | 10-bit H265 | 双层 | SDR |
5 | 10-bit H265 | 单层 | / |
7 | 10-bit H265 | 双层 | UHD Blu-ray |
8.1 | 10-bit H265 | 单层 | HDR10 |
8.2 | 10-bit H265 | 单层 | SDR |
8.4 | 10-bit H265 | 单层 | HLG |
9 | 8-bit H264 | 单层 | SDR |
1.1.1 单层与双层的区别
杜比视界视频文件分为以下几层:
- BL: Base Layer, 即基础层。基本为 YUV420 10-bit H265 HDR10 视频
- RPU: Reference Processing Unit, 即指导层。杜比视界视频的元数据是动态的,所以需要RPU来告知设备如何好好地渲染BL层
- EL: Enhancement Layer, 即增强层。用于将 BL 层扩展为 YUV422 12-bit 视频,让最终的渲染成品色阶更多,颜色更鲜艳,色彩过渡更自然 (长期处理色带的压制者的福音)
1.1.1.1 单层 ( single-layer ) = BL + RPU
通常为 Profile 5/8, 常用于流媒体或者支持单层杜比视界的电视的宣传展示用demo视频
Netflix / HBOMax / iQiYi / Youku 等流媒体提供的杜比视界就是 Profile 5 的单层杜比视界
(以后下载爱奇艺/优酷的杜比视界视频观看时别再问为什么发青发紫啦!)
Bilibili 等流媒体提供的杜比视界就是 Protile 8 的单层杜比视界。Bilibili 的向下兼容为 HLG
1.1.1.2 双层 ( dual-layer ) = BL + RPU + EL
通常为 Profile 7, 常用于 UHD Blu-ray
封装示例
- 将 00.h264 和 01.ac3 封装成 mp4 并指定音频语言为国语
mp4muxer -i 00.h264 -i 01.ac3 --media-lang chi -o ouput.mp4
- 将本是 profile 为 5 的杜比视界视频 02.h265 和两条音轨 03.ec3 04.ac3 封装成 mp4 并指定音频语言分别为英语和日语
mp4muxer -i 02.h265 -i 03.ec3 --media-lang en -i 04.ac3 --media-lang ja -o output.mp4 --dv-profile 5
1.2 MP4Demuxer
- 导入文件必须是 mp4
代码 | 用途 |
---|---|
--input-file ( ※ 注意没有 -i) | 导入 mp4 文件 |
--output-folder ( ※ 注意没有 -o) | 设定输出文件目录 |
--time-ranges | 设定输出时间范围 (用法 --time-rangs A-B, A和B都是数字,单位为秒) |
--verbose | 调试模式 |
分流示例
- 将 01.mp4 分流到当前目录
mp4demuxer --input-file 01.mp4
- 将 02.mp4 分流到 D 盘的 demux 文件夹,只分流 1 分种以后的内容
mp4demuxer --input-file 02.mp4 --output-folder D:/demux --time-rangs 60-
学习了
哆啦giegie带带我
https://github.com/quietvoid/dovi_tool/issues/49
单层还可以看下这个