- 积分
- 54
- 阅读权限
- 10
- 主题
- 1
- 帖子
- 4
- 注册时间
- 22-5-3
- 在线时间
- 22 小时
- UID
- 20748
- 精华
- 0
列兵
- 大洋
- 1080
- 阅读权限
- 10
|
本帖最后由 rainbaby 于 25-8-16 20:45 编辑
直到不久前,在 PC 上解码 TrueHD Atmos 的方案都是使用 Dolby Reference Player,输出的音频已经经过对象音频渲染,只能选择一种固定的声道布局,例如 7.1.4、9.1.6 等。
为了获得原始的解码结果,以近期的 TrueHD 解码器作为参考,通过逆向工程重新实现,现已开源。
项目地址:https://github.com/truehdd/truehdd,其中包含中文的使用说明。
在开源后的近一个月时间里根据早期用户反馈进行了部分改进,目前的版本为 0.4.0,可以在 Releases 获取。目前的 CI 包含 Windows / Linux (GNU / musl) / macOS 的 x86_64 / arm64 版本,应该能够覆盖大部分 PC 平台。
此外,目前已经与开源的渲染器 Cavernize 进行集成,Windows 用户可以通过 GUI 进行更加自由的音频渲染(在功能上完全替代 Dolby Reference Player,但请注意 Cavern 的目标并不是匹配 Dolby Reference Player 的输出结果)。
相比于 FFmpeg 的实现,主要区别在于:
- 完整支持 TrueHD (FBA) 解码和对象音频元数据解析,对于 Dolby Atmos 内容的输出结果是原始母版格式 Dolby Atmos Master Format (DAMF),可以导入 DAW 或直接使用 Dolby 的编码器进行重编码。
- 没有支持旧 MLP (FBB) 解码,主要是我懒。
- 包含更加严格的合规测试,主要为 FIFO 方面,由此可以正确处理已经二进制合并后的包含 Seamless Branching 的音轨,以及正确分离原本不应该合并的音轨,产生多个输出。
- 专用于 TrueHD 的 info 命令,可以获得更详细的属性,后面有例子。
对于重混音轨的用户,可以借此实现音频对象编辑,而不是从前的声道编辑。但请注意这并不一定会减少工作量。由于家用 Dolby Atmos 音频格式需要减少数据量,编码前已经经过了听觉等效的对象编组 (Spatial Coding / Clustering),对于某个声音元素,可能因为其重要性而能完整保留,但也可能会动态地分布于多个音频对象。对于这种情况需要仔细处理,可能需要更多混音技能,尤其是关于 Dolby Atmos 的,才能妥善处理。部分 DAW 可能会对于不标准的 bed 格式发出警告,通常可以通过修改项目配置解决,也可以在解码时使用 --bed-conform 强制输出 7.1.2 bed。除了方便导入之外没有别的作用,并且文件大小会翻倍。
对于影院包场放映用户, --bed-conform 是必须的。使用 Dolby Atmos Conversion Tool 从 DAMF 转换为 IMF IAB 后,再使用 https://github.com/izwb003/CineIA_CLI 转换为 DCP IAB,即可用于 DCP 封装。
对于重编码用户,正常使用 Dolby Encoding Engine / Dolby Media Encoder / Dolby Atmos Renderer 的音频编码功能即可。需要注意的是 --warp-mode,这主要影响 5.1 兼容层的后环绕下混方式,如果元数据里不存在此内容,解码时也没有指定一个模式写入 DAMF header (.atmos 文件, 实际是 YAML 格式),则编码器 / 渲染器可能会自己选择一个,造成非预期的结果。几个模式的区别在于:
- normal / 直通渲染:直接从 Atmos 渲染到 5.1,利用渲染器在前后环绕之间做幻象声像,重建声场。
- warping / 直通渲染(带房间平衡):直接从 Atmos 渲染到 5.1,通过更新算法减少声像定位带来的梳状滤波问题,并在房间中点到后方保持恒定电平(也就是消除了后半部分的虚拟声像)。这是目前的 Dolby 默认值,但如果想获得更准确的结果,可以使用 normal。
- prologiciix / Dolby Pro Logic IIx:先渲染到 7.1,再用特定衰减系数下混到 5.1。
- loro / 标准 (Lo/Ro):先渲染到 7.1,再按系数下混到 5.1。
对于这部分的选择,最好的方式当然是实际听一下原本的 5.1 presentation (使用 --presentation 1 以解码 5.1)。但如果是 independent presentation,则表明这个 5.1 并非 Dolby 下混,而是单独制作的,可以使用 --warp-mode normal 或不指定,在必要 / 条件允许的时候可以追加一个 5.1 重编码。
可以使用 info 命令检查 TrueHD 音频的各个 presentation 属性。输出例:
- TrueHD Stream Information
- =========================
- Stream Information
- Format Sync F8726FBA
- Sampling rate 48000 Hz
- Variable rate true
- Peak data rate 14541 kbps
- Number of substreams 4
- Dolby Atmos true
- Presentation Information
- Presentation 0
- Number of channels 2
- Presentation type Downmix of presentation 1
- Channel format Stereo
- DRC on by default false
- Dialogue Level -37 dBFS
- Mix Level 99 dB
- Presentation 1
- Number of channels 6
- Presentation type Independent
- Dolby Surround EX Not indicated
- Channel assignment L, R, C, LFE, Ls, Rs
- DRC on by default false
- Dialogue Level -31 dBFS
- Mix Level 105 dB
- Presentation 2
- Number of channels 8
- Presentation type Downmix of presentation 3
- Channel assignment L, R, C, LFE, Ls, Rs, Lb, Rb
- DRC on by default false
- Dialogue Level -31 dBFS
- Mix Level 105 dB
- Presentation 3
- Number of elements 16
- Presentation type Independent
- Bed configuration LFE
- Dialogue Level -31 dBFS
- Mix Level 105 dB
- Trim detection 268711320 samples are trimmed from the beginning of the stream
- Analysis Summary
- Frames processed 171099
- Size 156.82 MB (156822074 bytes)
- Duration 00:02:22.582
- Average data rate 8799.0 kbps
复制代码
从中可以获得的重要信息例如:
- 下混关系:2.0 <- 5.1,7.1 <- Atmos,其中 5.1 和 Atmos 两个独立的 presentation。
- Trim detection 不为 0 表示有一部分音频从开头被剪切了,这通常是上游(Remux 发布组等)的处理导致的,可能需要检查丢失的部分是否确无必要。
欢迎大家反馈或讨论功能方面的问题。 |
评分
-
查看全部评分
|