蓝光原盘压制中的音频处理

音轨的处理经常被忽视,其实个人认为重编码作品没有必要保留高清音轨,毕竟能有相应设备播放的人毕竟是少数。既然是为了节省体积才做的重编码,就应该在更多的地方考虑到节省,音轨就是个很好的处理对象。

预备知识

音轨编码的分类

蓝关标准中的音轨编码有

  • LPCM
  • Dolby Digital / AC-3
  • Dolby Digital Plus / E-AC-3
  • Dolby Lossless / Dolby TrueHD
  • DTS digital surround
  • DTS-HD
  • DRA
  • DRA Extension

LPCM是一种非压缩格式,蓝光电影极少采用。

Dolby Atoms / DTS:X 没有单独列出来,可以看做是Dolby TrueHD / DTS-HD MA 在7.1声道之上的升级版。主要出现在UHD原盘上。

Dolby Atoms / DTS:X本身是向下兼容Dolby TrueHD / DTS-HD MA 的。

最后两个是我国的国标,虽然被强行塞进了蓝光标准,迄今为止据说还没有实例。

杜比系 DTS系 声道 常见情况
Dolby Atoms DTS:X Object 最高规格,UHD原盘常见
Dolby TrueHD DTS-HD Master Audio 7.1 / 5.1 BD常见最高规格,UHD次高规格
E-AC-3 DTS-HD 7.1 / 5.1 常用于非主语言的音轨
AC-3 DTS 5.1 常用于非主语言的音轨

core

DTS-HD Master Audio 的是一定有一个DTS core的,它是整个音轨不可或缺的一部分,这个core可以用软件无损提取出来

Dolby TrueHD 也可以含有AC-3 core,但是这个core不是必备的,其实带core的Dolby TrueHD相当于是两条音轨,都可以单独播放。在蓝关标准中规定Dolby TrueHD一定要带core,这是出于播放器兼容考虑的。用软件很容易将Dolby TrueHD的core分离出来。

别名与缩写

AC-3 / Dolby Digital (DD) 是一回事。DD 5.1是指5.1声道的AC-3。AC-3最高支持5.1声道。AC3不带杠一般和AC-3同义,或者特指符合AC-3标准但未获Dolby授权的音频格式。

E-AC-3 / Dolby Digital Plus (DDP) 是一回事。E-AC-3是AC-3的升级,E-AC-3支持7.1声道。

A/52 是一个标准的名称,它有两个版本。版本A就是AC-3,版本B是E-AC-3。所以A/52也可以看做是一回事。

DCA 是 DTS Coherent Acoustics的缩写,和我们讨论的DTS也是一回事。

AHD重编码教程中的标准

源音轨类型 声道 2160p 1080P 720p
无损 全景声 % DTS-HD/THD 1280 EAC3 5.1 640 AC3
无损 6.1 / 7.1 1536 EAC3 # 1280 EAC3 5.1 640 AC3
无损 5.1 640 AC3 # 640 AC3 640 AC3
无损 1.0 / 2.0 FLAC / Opus / AAC * FLAC / Opus / AAC * FLAC / Opus / AAC *
有损 任何 丢弃 丢弃 丢弃
评论音轨 任何 Opus / AAC Opus / AAC Opus / AAC

% 指X或者Atoms音轨,常见于UHD蓝关原盘

# 源音轨也可以接受

* 或者其他合理格式

它这里源音轨类型的无损并不是指无损编码,而是指蓝光源中最高规格的音轨。

案例

Jumanji: The Next Level [2019]

UHD

  • [#1] DTS:X Master Audio / 7.1-X / 48 kHz / 6291 kbps / 24-bit (DTS Core: 5.1 / 48 kHz / 1509 kbps / 24-bit)
  • [#2] Dolby Digital Audio / 5.1 / 48 kHz / 640 kbps

x265-2160p

  • [HQMUX] / [HDChina] / [BeiTai] DTS:X Master Audio / 7.1-X - 直接拷贝[#1]

x265-1080p

  • [D-ZON3] Dolby Digital Plus / 7.1 / 48 kHz / 1536 kbps - 重编码[#1]
  • [DON] Dolby Digital Plus / 7.1 / 48 kHz / 1536 kbps - 重编码[#1]

BD

  • [#1] DTS-HD Master Audio / 5.1 / 48 kHz / 3725 kbps / 24-bit (DTS Core: 5.1 / 48 kHz / 1509 kbps / 24-bit)
  • [#2] Dolby Digital Audio / 5.1 / 48 kHz / 640 kbps / DN -31dB

x264-1080p

  • [LoRD] Dolby Digital Plus / 5.1 / 1536 kbps - 重编码[UHD#1]
  • [DON] / [iFT] Dolby Digital Plus / 7.1 / 1536 kbps - 重编码[UHD#1]
  • [HDChina] DTS-HD Master Audio / 5.1 / 3725 kbps - 直接拷贝[#1]
  • [CHD] / [WiKi] DTS / 5.1 / 1509 kbps - 提取内核[#1]

x264-720p

  • [LoRD] / [iFT] / [WiKi] Dolby Digital Audio / 5.1 / 640 kbps - 直接拷贝[#2]
  • [HDChina] DTS / 5.1 / 1509 kbps - 提取内核[#1]

Jojo Rabbit [2019]

UHD

  • [#1] DTS-HD Master Audio / 5.1 / 48 kHz / 3341 kbps / 24-bit (DTS Core: 5.1 / 48 kHz / 1509 kbps / 24-bit)
  • [#2] Dolby Digital Audio / 5.1 / 48 kHz / 448 kbps / DN -31dB
  • [评论] Dolby Digital Audio / 2.0 / 48 kHz / 224 kbps / DN -31dB

x265-2160p

  • [HDChina] / [CHD] DTS-HD Master Audio / 5.1 / 3341 kbps - 直接拷贝[#1]
  • [BeiTai]
    • DTS-HD Master Audio / 5.1 / 3341 kbps - 直接拷贝[#1]
    • Dolby Digital Audio / 2.0 / 192 kbps - 直接拷贝[评论] - 比特率标错?
  • [beAst]
    • DTS-HD Master Audio / 5.1 / 3341 kbps - 直接拷贝[#1]
    • Dolby Digital Audio / 5.1 / 448 kbps - 直接拷贝[#2] - 视觉描述
    • Dolby Digital Audio / 2.0 / 224 kbps - 直接拷贝[评论]

x265-1080p

  • [D-ZON3] Dolby Digital Plus / 5.1 / 48 kHz / 768 kbps - 重编码[#1]
  • [PTer]
    • DTS / 5.1 / 1509 kbps - 提取内核[#1]
    • AAC / 2.0 / 80.3 kbps - 重编码[评论]

BD

  • [#1] DTS-HD Master Audio / 5.1 / 48 kHz / 3341 kbps / 24-bit (DTS Core: 5.1 / 48 kHz / 1509 kbps / 24-bit)
  • [#2] Dolby Digital Audio / 5.1 / 48 kHz / 448 kbps / DN -31dB
  • [评论] Dolby Digital Audio / 2.0 / 48 kHz / 224 kbps / DN -31dB

x264-1080p

  • [DON] / [iFT]
    • DTS / 5.1 / 1509 kbps - 提取内核[#1]
    • Dolby Digital Audio / 2.0 / 224 kbps - 直接拷贝[评论]
  • [WiKi] DTS / 5.1 / 1509 kbps - 提取内核[#1]
  • [HDChina] / [CHD] DTS-HD Master Audio / 5.1 / 3341 kbps - 直接拷贝[#1]

x264-720p

  • [TayTO] / [iFT]
    • Dolby Digital Audio / 5.1 / 640 kbps - 重编码[#1]
    • Dolby Digital Audio / 2.0 / 224 kbps - 直接拷贝[评论]
  • [WiKi] Dolby Digital Audio / 5.1 / 640 kbps - 重编码[#1]
  • [HDChina] DTS / 5.1 / 1509 kbps - 提取内核[#1]

1917

UHD

  • [#1] Dolby TrueHD/Atmos Audio / 7.1-Atmos / 48 kHz / 4258 kbps / 24-bit (AC3 Core: 5.1 / 48 kHz / 448 kbps)
  • [评论#1] Dolby Digital Audio / 2.0 / 48 kHz / 192 kbps
  • [评论#2] Dolby Digital Audio / 2.0 / 48 kHz / 192 kbps

x265-2160p

  • [HDMUX]
    • Dolby TrueHD/Atmos Audio / 7.1-Atmos / 4258 kbps - 直接拷贝[#1]
    • Dolby Digital Audio / 2.0 / 192 kbps - 直接拷贝[评论#?]
  • [HDChina]
    • Dolby TrueHD/Atmos Audio / 7.1-Atmos / 4258 kbps - 直接拷贝[#1]
    • Dolby Digital Audio / 5.1 / 448 kbps - 提取核心[#1]
  • [BeiTai]
    • Dolby TrueHD/Atmos Audio / 7.1-Atmos / 4258 kbps - 直接拷贝[#1]
    • Dolby Digital Audio / 5.1 / 448 kbps - 提取核心[#1]
    • Dolby Digital Audio / 2.0 / 192 kbps - 直接拷贝[评论#1]
    • Dolby Digital Audio / 2.0 / 192 kbps - 直接拷贝[评论#2]
  • [CHD]
    • Dolby TrueHD/Atmos Audio / 7.1-Atmos / 4258 kbps - 直接拷贝[#1]

x265-1080p

  • [NCmt]
    • Dolby Digital Plus / 7.1 / 1536 kbps (AC3 Core: 5.1 / 640 kbps) - 重编码[#1]
    • Opus / 2.0 / ~ 72.05 kbps - 重编码[评论#1]
    • Opus / 2.0 / ~ 72.05 kbps - 重编码[评论#2]
  • [DON]
    • Dolby Digital Plus / 7.1 / 1536 kbps - 重编码[#1]
    • Dolby Digital Audio / 2.0 / 192 kbps - 直接拷贝[评论#1]
    • Dolby Digital Audio / 2.0 / 192 kbps - 直接拷贝[评论#2]
  • [beAst] / [CHD] Dolby TrueHD/Atmos Audio / 7.1-Atmos / 3810 kbps - 剥离核心[#1]
  • [BeiTai]
    • Dolby TrueHD/Atmos Audio / 7.1-Atmos / 4258 kbps - 直接拷贝[#1]
    • Dolby Digital Audio / 5.1 / 448 kbps - 提取核心[#1]
    • Dolby Digital Audio / 2.0 / 192 kbps - 直接拷贝[评论#1]
    • Dolby Digital Audio / 2.0 / 192 kbps - 直接拷贝[评论#2]

BD

  • [#1] Dolby TrueHD/Atmos Audio / 7.1-Atmos / 48 kHz / 4258 kbps / 24-bit (AC3 Core: 5.1 / 48 kHz / 448 kbps)
  • [评论#1] Dolby Digital Audio / 2.0 / 48 kHz / 192 kbps
  • [评论#2] Dolby Digital Audio / 2.0 / 48 kHz / 192 kbps

x264-1080p

  • [iFT] / [LoRD]
    • Dolby Digital Plus / 7.1 / 1536 kbps - 重编码[#1]
    • Dolby Digital Audio / 2.0 / 192 kbps - 直接拷贝[评论#1]
    • Dolby Digital Audio / 2.0 / 192 kbps - 直接拷贝[评论#2]
  • [HDChina] / [CHD] Dolby TrueHD/Atmos Audio / 7.1-Atmos / 4258 kbps - 直接拷贝[#1]
  • [WiKi] Dolby Digital Audio / 5.1 / 448 kbps - 提取核心[#1]

x264-720p

  • [LoRD]
    • Dolby Digital Plus / 5.1 / 768 kbps - 重编码[#1]
    • Dolby Digital Audio / 2.0 / 192 kbps - 直接拷贝[评论#1]
    • Dolby Digital Audio / 2.0 / 192 kbps - 直接拷贝[评论#2]
  • [WiKi] / [HDChina] Dolby Digital Audio / 5.1 / 448 kbps - 提取核心[#1]

点评

基本上国外的一些高质量重编码小组倾向于对音轨也做重编码处理。国内的组基本都是直接拷贝或者提取核心。既然是做重编码,就应该往节省体积上考虑,我赞同国外组的处理方式。

分类处理

LPCM

许多有些年代的片子,由于当时录音设备的限制,并没有环绕声道,音轨格式为LPCM。遇到这种原盘,一般是将音轨处理为FLAC。

REMUX

做REMUX的时候,直接把原盘中最高规格的一或多条封装起来就行。

UHD原盘重编码

目前来看UHD原盘的重编码还是比较少,主要是重编码可压缩的空间不大,H.265编码又费时费力。不过还是有些小组会做x265的1080p,主要的优势是比以前的x264的1080p多个HDR,而且H.265理论上压缩率更高。

HDB和AHD的官方组一般都会对原音轨做重编码处理,国内小组一般是直接拷贝音轨或者提core。

BD原盘重编码

1080p一般是用源音轨,或者提取core。720p基本是用提取的core。
HDB和AHD的官方组有时会用UHD的源重编码。

core的提取

Windows 上大家一般都是用eac3to来处理音轨,实际上所有的demux工作都是交给eac3to来处理。据说是它的兼容性最好,处理原盘基本不会出错。但是eac3to是一个闭源软件,在Linux上使用需要安装wine,而且对路径的处理也很麻烦。所以我还会考虑在Linux上的其他工具来实现eac3to的功能。

thd+ac3

Dolby TrueHD的AC-3 core其实是可以看做单独的音轨,用ffprob查看它就是分开处理的。

ffmpeg处理

1
ffprob 00040.m2ts

输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Input #0, mpegts, from 'Ant-Man.And.The.Wasp.2018.COMPLETE.UHD.BLURAY-COASTER\BDMV\STREAM\00040.m2ts':
Duration: 01:58:09.50, start: 4198.166000, bitrate: 58667 kb/s
Program 1
Stream #0:0[0x1011]: Video: hevc (Main 10) (HDMV / 0x564D4448), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 23.98 tbc
Stream #0:1[0x1100]: Audio: truehd (AC-3 / 0x332D4341), 48000 Hz, 7.1, s32 (24 bit)
Stream #0:2[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 640 kb/s
Stream #0:3[0x1101]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 320 kb/s
Stream #0:4[0x1102]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 640 kb/s
Stream #0:5[0x1103]: Audio: eac3 (AC-3 / 0x332D4341), 48000 Hz, 7.1, fltp, 1024 kb/s
Stream #0:6[0x1104]: Audio: eac3 (AC-3 / 0x332D4341), 48000 Hz, 7.1, fltp, 1024 kb/s
Stream #0:7[0x1105]: Audio: eac3 (AC-3 / 0x332D4341), 48000 Hz, 7.1, fltp, 1024 kb/s
Stream #0:8[0x1106]: Audio: eac3 (AC-3 / 0x332D4341), 48000 Hz, 7.1, fltp, 1024 kb/s
Stream #0:9[0x12a0]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
Stream #0:10[0x12a1]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
Stream #0:11[0x12a2]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
Stream #0:12[0x12a3]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
Stream #0:13[0x12a4]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
Stream #0:14[0x12a5]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
Stream #0:15[0x12a6]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
Stream #0:16[0x12a7]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
Stream #0:17[0x12a8]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
Stream #0:18[0x12a9]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
Stream #0:19[0x12aa]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
Stream #0:20[0x12ab]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
Stream #0:21[0x12ac]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
Stream #0:22[0x12ad]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
Stream #0:23[0x12ae]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
Stream #0:24[0x12af]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
Stream #0:25[0x12b0]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
Stream #0:26[0x12b1]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)

先看一下AC-3 core音轨的编号,一般就是主音轨后面一条,码率为640 kb/s,本例中为0:2

1
ffmpeg -i 00040.m2ts -map 0:2 -acodec copy core-f.ac3

如果是想提取Dolby TrueHD音轨,本例中的0:1,命令是

1
ffmpeg -i 00040.m2ts -map 0:1 -acodec copy thd-f.thd

eac3to处理

1
eac3to [原盘目录]

输出

1
2
3
4
5
6
7
8
9
10
1) 00004.mpls, 00040.m2ts, 1:58:09
- Chapters, 18 chapters
- h265/HEVC, 2160p24 /1.001 (16:9)
- TrueHD, English, multi-channel, 48kHz
- AC3, English, stereo, 48kHz
- AC3, French, multi-channel, 48kHz
- E-AC3, French, multi-channel, 48kHz
- E-AC3, Spanish, multi-channel, 48kHz
- E-AC3, German, multi-channel, 48kHz
- E-AC3, Italian, multi-channel, 48kHz

先看一下选出来的playlist,选出正确的编号,本例中为1)

1
eac3to [原盘目录] 1)

输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
M2TS, 1 video track, 7 audio tracks, 18 subtitle tracks, 1:58:09, 11.988p
1: Chapters, 18 chapters
2: h265/HEVC, 2160p24 /1.001 (16:9), 10 bits
3: TrueHD/AC3 (Atmos), English, 7.1 channels, 48kHz
(embedded: AC3, 5.1 channels, 640kbps, 48kHz)
4: AC3, English, 2.0 channels, 320kbps, 48kHz
5: AC3, French, 5.1 channels, 640kbps, 48kHz
6: E-AC3, French, 7.1 channels, 1024kbps, 48kHz
(core: AC3, 5.1 channels, 576kbps, 48kHz)
7: E-AC3, Spanish, 7.1 channels, 1024kbps, 48kHz
(core: AC3, 5.1 channels, 576kbps, 48kHz)
8: E-AC3, German, 7.1 channels, 1024kbps, 48kHz
(core: AC3, 5.1 channels, 576kbps, 48kHz)
9: E-AC3, Italian, 7.1 channels, 1024kbps, 48kHz
(core: AC3, 5.1 channels, 576kbps, 48kHz)
10: Subtitle (PGS), English
11: Subtitle (PGS), French
12: Subtitle (PGS), French
13: Subtitle (PGS), Spanish
14: Subtitle (PGS), German
15: Subtitle (PGS), Italian
16: Subtitle (PGS), Chinese
17: Subtitle (PGS), Dutch
18: Subtitle (PGS), Korean
19: Subtitle (PGS), Norwegian
20: Subtitle (PGS), Swedish
21: Subtitle (PGS), Thai
22: Subtitle (PGS), Chinese
23: Subtitle (PGS), French
24: Subtitle (PGS), French
25: Subtitle (PGS), Spanish
26: Subtitle (PGS), German
27: Subtitle (PGS), Italian

不同于ffmpeg的输出,thd+ac3只占用一个编号,本例中为3

1
eac3to [原盘目录] 1) 3:core-e.ac3 -core

提取Dolby TrueHD音轨不带core

1
eac3to [原盘目录] 1) 3:thd-e.thd

提取Dolby TrueHD音轨带core

1
eac3to [原盘目录] 1) 3:thd-e.thd+ac3

比较结果

可以用sha1计算不同工具提取出来的音轨,发现它们完全是一样的。

1
2
3
4
5
69333bfd66a258a1df5d4a4bdcfe212bd6dd7abc *thd-f.thd
69333bfd66a258a1df5d4a4bdcfe212bd6dd7abc *thd-e.thd
158d5cf77d5a18bc1f7bcfd9ad222ba1d4cfbf01 *core-f.ac3
158d5cf77d5a18bc1f7bcfd9ad222ba1d4cfbf01 *core-e.ac3
17931dd0d9932d8a8422e4288b80b045096b81b2 *thd-e.thd+ac3

ffmpeg似乎是没办提取带core的Dolby TrueHD音轨,不过这并不真的重要,重编码的时候把它当两条音轨处理就好。

DTS-HD Master Audio

目前我手头上并没有原盘,先给出命令,待日后补充

ffmpeg

1
ffmpeg -i 00040.m2ts -map 0:2 -bsf:a dca_core -c:a copy core-f.dts

eac3to

1
eac3to [原盘目录] 1) 3:core-f.dts -core

音频重编码

从之前的调查来看,目前比较常见的音轨重编码需求主要是把UHD原盘中的7.1声道的DTS-HD Master Audio / DTS:X / Dolby TrueHD / Atoms压缩成DDP 7.1。原因是前者实在是太大了。

另外就是把一些次要音频进行重编码压缩了,例如把DD 2.0压成Opus。

再就是把LPCM重编码成FLAC。

DDP 7.1

目前开源的软件似乎还都没办法编译7.1声道的E-AC-3,必须上商业软件。ffmpeg能编码5.1声道的E-AC-3。eac3to只是一个前端,本身没有编码能力。ffmpeg关于E-AC-3更多声道的支持讨论见#3595

目前唯一的选择好像是在 OS X 上用 Dolby Media Producer Suite。具体的我将单独写一篇文章介绍。

Opus

Opus是比较新的一个有损音频编码格式,在较低码率下的表现应该是最好的。所以推荐Opus优先于AAC。原盘里面的评论音轨一般是AC3 2.0的,可以考虑转换成Opus格式

ffmpeg处理

以demux出的AC3文件为输入

1
ffmpeg -i input.ac3 -c:a libopus -b:a 160 output.opus

或者直接以源视频文件为输入,假设处理对象音轨编码为0:5

1
ffmpeg -i 00040.m2ts -map 0:5 -c:a libopus -b:a 160 output.opus

eac3to处理

eac3to只是充当一个解码的角色,eac3to解码AC3时实际调用ffmpeg或者Nero解码器(须另外安装,不推荐)

先解码输出wav格式

1
eac3to input.ac3 stdout.wav

eac3to在处理AC3的时候不会把各个声道分别输出,这点不同于TrueHD。然后用Opus编码

1
opusenc --bitrate 160 stdout.wav output.opus

也可以直接pipe

1
eac3to input.ac3 stdout.wav | opusenc --bitrate 160 - output.opus