QAAC音频编码器命令行参数教程 [2024.1更]

A@NAZOrip
A@NAZOrip 2023年08月21日
  • 在其它设备中阅读本文章

❀原创教程,转载请注明链接和作者

QAAC基于苹果公司的QtAACEnc改进而来的,出现于2012年的开源编码器。相比2006年的NeroAAC更强大,且已经淘汰了MP3格式(因为网络视频几乎都用AAC流)

终于有科普板块了hhhhh

  • 音频根据用途主要有通话音频,监听音频,HiFi音频和噪音三种,其中办公音频要求动态音量调节和动态降噪来听清客户说了啥;监听音频要尽可能逼近原声,主要用于混音和反潜;HiFi音频各种DAC和AMP数字电路的信号调校结果,和开MadVR看视频的是同一个群体(但很有钱)
  • 音频的位宽bit-width就是数据/视频上说的位深bit-depth,在视频上代表明暗之间的亮度值密度,或者色彩A~B之间色度值的密度;在音频上就是波形音量动态范围的取值密度

下载与安装

直接下载安装好的百度云提取码CCCC, 或谷歌盘

  1. 下载qaac源码编译结果: github
  2. 下载苹果的Core Audio支持:
    1. 下载一个iTunes,把后缀改成.zip打开,据系统位数解出AppleApplicationSupport(64).msi(或点击链接直接下载提取自itunes12.3的AppleApplicationSupport64(链接已挂)AppleApplicationSupport(链接已挂)
    2. 下载MSIExtractor(如图是个软件,不是批处理)打开.msi安装包
      MSIExtractor.png
    3. Common Files\Apple\Apple Application Support\目录下,解压出以下文件放到QAAC的主目录下(即和qaac64.exe放在一起),安装就完成啦~
ASL.dll
CoreAudioToolbox.dll与CoreFoundation.dll
icudt*.dll(*代表任何数字或字母)
libdispatch.dll,libicu*.dll及libicu*.dll(两个不同数字的libicu)
objc.dll

没装Visual C++ 2012则还要加上主目录下的mscvp120.dll和mscvr120.dll
要输入flac音频则需要去github安一个FLAC解码包。或ffmpeg pipe

打赏信息

在线丢人,求个打赏,支持一下T_T
打赏.jpg

这玩意年收入6人民币

命令行用例

'打开QAAC(文件夹\qaac.exe)' [参数] '打开音频(路径+文件名+后缀)',如

'D:\qaac64.exe' -a -b 16 -r 44100 --threading --raw -o '导出位置\导出音频.m4a' '导入位置\*.wav'

QAAC默认的导入导出位置就是批处理或shell(.bat/.sh)所在位置
所以直接用*.wav,然后把批处理/shell拖到同源文件目录下运行就不用写路径了
导入PCM波形的.wav需要加个--raw,具体见下文导入PCM波形哦

ffmpeg pipe导入

D:\ffmpeg.exe -i '打开音频' -vn -sn -n -f wav - | D:\qaac.exe [参数] - --ignorelength

-o <字符>输出路径与文件名,如有空格则加引号,例如-o 'D:\文件夹\输出音频.aac'
--ignorelength代表已知输入WAV-PCM文件的情况下,启用unix pipe喂流,省去检查和手打音频长度信息的功夫

显示完整编码信息

--verbose<开关>打开后可以看到平常CLI界面中不显示的

输出/编码格式

AAC-LC:默认的低复杂度low-complexity编码,QAAC中限制最高320kbps,但aac标准上没写这限制
AAC-HE:高压缩效率high-eff.编码,QAAC中限制最高80kbps,同码率下比LC细节好,但码率太低所以很难用到
ALAC: 苹果无损压缩编码的PCM波形文件格式。偏小众,可能不如.ape格式常见

-V,--tvbr   <挡位0/9/18/27/36/45/54/64/73/82/91/100/109/118/127>可变码率,对应QtAAC的15个挡位,"数字越大音质越好",默认91,不受--rate参数限制,适合有闲工夫调试着用
-v,--cvbr   <挡位64/80/96/112/128/144/160/192/224/256/288/320,单位kbps>可变码率,"尽可能"控制在挡位指定的码率中,受--rate参数限制,适合有闲工夫调试着用
-a, --abr    <整数>平均码率,码率限制下贴合目标码率使用的方案,但同质量下码率不如前两者

tvbr, cvbr模式下,码率有可能会因为源音频流高度复杂而超标,有码率限制的话需要确认没超
ABR模式因为用带宽换性能所以只适合直播

--he         <开关>用HE-AAC编码,除TVBR,ALAC,ADTS外可用,音质较差但码率只有16~80kbps ❀注意是--he而不是-he
-A,--alac   <开关>无损压缩,一般音乐的码率大概为1100~1400Kbps

ADTS流格式

和封装/音频不同,将文件作为真的"流格式"编码,一般用于直播和蓝牙A2DP音频,支持Unix Pipe传给下级处理程序

取决于厂商生态,蓝牙设备还可能支持以下生态编解码中的一部分,高端的外置声卡和音频介面(同时支持蓝牙和USB输入)除外:

  • 兼容:SBC (其实已满足99%的音质要求),大部分条形音响都用这个
  • 苹果:AAC-ADTS (QAAC支持编码)
  • 高通:aptX,aptX LL,aptX HD,aptX Adaptive
  • 索尼:LDAC
  • 盛微:LHDC,LLAC,LLAC LL
  • 三星(仅IEM耳机):SSC
  • 微软(Windows系统):自购Lucent的Windows LDAC A2DP驱动(25~35 CNY) + 支持蓝牙传输的硬件(USB,PCIE,M.2网卡等)

Windows 10 2004或更高版本可通过Github上的第三方方案实现蓝牙ADTS输入,将系统本身临时作为接收设备用,但原作者长期未更新,且仅支持手动连接,有需求的可以(创建Github账户并)fork一个~

未压缩流格式

与视频解码器逆运算出画面所同,和音频文件的区别是不需要解码所以(在硬盘很快的情况下)打开速度比解码播放更快,但体积特大,但支持Unix Pipe传给下级处理程序

封装与音频文件格式

相比于纯数据流(视频流,音频流),封装文件增加了如歌词,章节,标识,封面;视频如HDR信息,帧率,分辨率等。封装后的体积比原始的流文件大点。音频流和视频流封装到一起时,则由视频封装文件会标记音频流的元数据

  • .wav:未压缩的PCM波形文件后缀(指定-D
  • .alac:无损压缩PCM波形文件后缀,详见上方ALAC说明(指定-A
  • .aac:有损压缩的PCM/DTS波形音频流后缀(指定--adts
  • .caf/.m4a:音频封装,用于打包AAC,ALAC,PCM波形以及歌词,章节,标识,封面等内容到单文件
    • QAAC编码后在MediaInfo打开还会显示"Apple audio with iTunes info"
-D,--decode <开关>输出PCM波形(.wav)
一般用于频谱分析,毕竟解包不带解码器的软件然后安个解码器进去的门槛超高
-A,--alac   <开关>无损压缩
--adts       <开关>以Audio Data Transport System格式编码,主要用于蓝牙耳机和音响. 除无损(ALAC)以外的模式可用
*留空*       <默认>编码为AAC并封装为.m4a
--caf        <开关>用core audio format封装格式打包音频流以及-D下导出的PCM波形

与ffmpeg/带Lav-filter的视频处理工具不同,QAAC不识别命令行里导出文件的后缀名,因此必须指定格式参数

导入PCM波形

QAAC会自动检测源的规格,但PCM(.wav)就测不出来,所以会默认用2声道,44100Hz,16bit位深编码新文件. 若与源不符,就要手动指定输入PCM流的规格:

--raw          <开关>启用纯PCM波形模式,要不然QAAC不知道
--raw-channels <浮点,默认2>指定声道数量. 有3,4,5,5.1,6,6.1,7,7.1和8可选,要搭配--chanmap用
--raw-rate     <整数,默认44100>照着源文件写就行啦
--raw-format   <字符+整数+字符>S/U/F+位深+L/B,若符合默认s16l就不用动咯~

S(igned)/U(nsigned):首个位深字节值里面有(范围0~255)或没有(范围-128~127)正负号,一般都有,没见过就写默认的S
F(loat):源音频流是浮点位深,不是整数位深
位深:在音频上都叫位宽,一般是默认16bit,此处不加后缀bits
L(ittle-Endian)/B(ig-Endian):具体看这篇教程的解释,总之要用到x86架构的处理器,用默认的L就对啦~

--ignorelength <开关>已知unix pipe输入WAV-PCM文件流的情况下,启用unix pipe支持,省去检查和手打音频长度信息的功夫

多声道编辑

常见的立体声有1左2右两条声道. 而更高的数量的声道会照标准,给这些音轨对号入座;比如三声道就是中置1,左2,右3等等,具体见github里的声道布置表格
音频的常见问题有麦克拿反/右耳没声音;然后这里PCM波形还无法被QAAC自动检测,所以手打音轨号来修复/指定就成了常规操作...大概

--chanmask     <浮点,默认0(立体声)>强制使用3,4,5,5.1,6,6.1,7,7.1或8声道
--chanmap      <逗号分隔数字>重分配输入音频的声道位

--chanmap 2,1代表音轨1换到二号位,音轨2换到一号位;在立体声中就是左右互换;能修复麦克拿反了的情况,不过据说麦克拿倒了是假唱(大雾)
--chanmap 1,1在立体声中将左声道贴入右声道,可以修复右耳没声的问题(未测试)
--chanmap 2,3,1代表三声道默认的1中,2左,3右改成2中,3左,1右. 其实就是1移动到了最右边

压缩强度与占用

-b,--bits-per-sample
              <整数>改动音频位深,比如频谱分析软件支持最深16bit,而音频是24位时就加上-b 16来修复
-n,--nice    <开关>降低程序优先级
--threading   <开关>使用多线程
-q,--quality <整数,范围0~2,默认2> 仅用于编码速度换取音质的参数,不用改
注: 默认是使用低复杂度low complexity 即lc编码方式,适合直播.
--no-dither   <开关>关闭抖动,用音质换取文件体积的参数.
--no-optimize <开关>编码后的音频还要再进行一步优化,以装入.caf/.m4a的封装中,此选项将其关闭,所以别动>_<

章节处理

--chapter      <输出章节>给编码的音频封装(.M4A/.CAF)写入章节信息,至于怎么拷进视频封装里咱就不懂啦❀

00:00:00.000 Intro
00:00:31.031 OP
0:01:57.034 Part_A
00:12:41.552 Part_B
00:22:41.151 ED
00:24:09.740 Next_Ep_Preview
Patlabor TV - 17.txt
--cue-tracks   <逗号分隔整数>仅支持cue列表的

--cue-tracks 4就是编码cue文件中指定的第4号音频
--cue-tracks 11-13,15就是分别导出11,12,13,15号音频
--concat --cue-tracks 11-13,15就是组合导出11,12,13,15为一整个音频

--text-codepage <整数>生成cue sheet/章节/歌词字幕的文本编码,一般用65001表示UTF-8

导出章节中单曲

cue sheet可以自己写,然后保存为.cue
标准格式如下,照着写,然后导入QAAC来分指定cue-tracks导出就行了❀

REM GENRE Anime
REM DATE 2014
REM DISCID 3503D604
REM COMMENT "ExactAudioCopy v1.0b3"
CATALOG 4988104079268
PERFORMER "みかくにんぐッ!"
TITLE "とまどい→レシピ"
FILE "みかくにんぐッ! - とまどい→レシピ.wav" WAVE
  TRACK 01 AUDIO
    TITLE "とまどい→レシピ"
    PERFORMER "みかくにんぐッ!"
    ISRC JQ2921400252
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    TITLE "放課後ばけーしょん"
    PERFORMER "みかくにんぐッ!"
    ISRC JQ2921400253
    INDEX 00 04:30:62
    INDEX 01 04:32:36
とまどい→レシピ.cue

首位波形缓入缓出

直译的话就是智能首尾垫音,主要设计目的是为了缓冲掉歌曲突然开始,波形从零突然冲顶,低端声卡会直接噼啪爆音(待考证)的情况

--no-smart-padding
              <开关>关掉这个默认功能,但不建议

音频标识(内容正在施工中)

--tag         <4cc:value>用fourCC.org标准?格式?的标识(内容正在施工中)
--tag-from-file <文件名>同上但这次是输入已经写好的文件
--long-tag    <key:value>用iTunes标准?格式?的标识(内容正在施工中)
--fname-format<?>文件命名格式(内容正在施工中)
--fname-from-tag<?>用音频标识命名输出文件,这样给写好的曲子加上tag就可以节省各种导出和压缩的时间了(内容正在施工中)

音频编辑

-r,--rate    <整数>调整音频的采样率,比如视频网站要求44100HZ,而音频是48000HZ就写-r 44100
--gain        <浮点>调整文件音量,输入负值可减低
--concat      <开关>将(用通配符如*.wav)输入的多个文件按输入顺序结合为单文件,QAAC会生成章节chapter到.m4a封装里(未验证)
--normalize   <开关>音量标准化,统一所有要处理歌曲的音量
--start       <浮点>开始时间,格式hh:mm:ss.xxxxx..... 比如1:13:22.4432就是在1小时13分22.4432秒开始压缩
--end         <浮点>结束时间,格式同上
--delay       <浮点>开始前延时,格式同上,如果输入负值则作用同开始时间
--peak        <开关>扫描音频尖峰并只输出文本,用于方便检查混音音量

音频滤镜

用DAW还能预览效果,所以不晓得这个还有啥用...

--drc         <判定:衰减:缓冲:见效:退效>动态范围压缩,就是将吵的音量压下来,同时保留一定范围内音量,使不该响的不响的功能

判定    threshold判定(阈值的去术语化叫法), 超过此值则判定为吵,反之未超过的就判定为不吵,单位dBFS,这个值就自己吼一嗓子试试吧(⌒_⌒;)
衰减    ratio程度,例如判定值是10,比率是3,只要音量超过10db就将<超出的部分>压缩到原来的1/3,通常设15
缓冲    knee过渡,值越大就越柔和,使整个处理过程更自然的参数,单位db,通常设1
见效    attack时长,单位毫秒. 防止编码器反应过快,致原本大声没有超过判定值就被压回来 
~例如设在3.2,那么超出判定值的音量要从0秒不处理,到花3.2毫秒才完全达到衰减后的设定,通常设25~50左右
去效    release时长,单位毫秒. 防止编码器反应过快致声降低不明显,在混音中,release越快,对应的乐器轨道就越靠前,反之越慢,因此构成了声场上前-后的声场关系,用于在乐器数量多的情况下保证乐器的主次关系。如果是逼近物理位置还得加上和建筑外形相同反射面建模的自定义Reverb
~例如设3.2,那么离开判定范围时,音量会在0秒保持衰减,到3.2毫秒时才完全回到衰减前的设定,通常设150~300左右

举例: '--drc 50:6:7:8.9:10'指超过50db阈值,压缩到原来的1/6,反应过来前音量低了8.9db,音频落回后花10毫秒将衰减的效果消除

已知报错

请求的操作无法在使用用户映射区域打开的文件上执行, 是本应输出并覆盖旧文件时,目标文件被占用导致覆盖失败
floating point PCM is not supported for ALAC,是因为原音频是alac不支持浮点位深,需要-b 16/20/24/32转换~

--log          <文件名>导出压制log

批处理单文件储存多个参数

::将此处复制下来保存为.bat文件即可使用
@ set QAAC=D:\Programs\QAAC\qaac64.exe

@ set 转WAV=-D --threading -r 44100 -b 16
@ set abr320K=-a 320 -b 16 -r 44100 --threading
@ set cvbr256K=-v 256 -b 16 -r 44100 --threading
@ set ALAC=--alac -b 16 --threading

::使用例子: %QAAC% %转WAV% -o "输出" "输入", 可以多复制调整几行命令以批量处理

shell单l文件储存多个参数(未验证,需自行修改)

第一步, 安装Wine以运行.exe:

sudo dpkg --add-architecture i386 
wget -nc https://dl.winehq.org/wine-builds/Release.key
sudo apt-key add Release.key
sudo apt-add-repository https://dl.winehq.org/wine-builds/ubuntu/
sudo apt-get update
sudo apt-get install --install-recommends winehq-stable

第二步:

#将此处复制下来保存为.sh文件, 通过Bash
#!/bin/Bash

QAAC=./D:\Programs\QAAC\qaac64.exe
转WAV=-D --threading -r 44100 -b 16
320K=-a 320 -b 16 -r 44100 --threading
256K=-a 256 -b 16 -r 44100 --threading
ALAC=--alac -b 16 --threading

#使用例子: $QAAC $转WAV -o "输出" "输入", 可以多复制调整几行命令以批量处理

关于选择正确的采样率

只要确认要编码音频的音高赫兹数,就可以确定使用更低的采样率编码音频,实现压缩

采样率

  • 一种和视频帧率类似的数据密度,波形的震频,人耳正常听音乐的极限是最高20000~21000Hz或20~21kHz,最低20Hz. 这也有个定理叫奈奎斯特–香农定理
  • 一首歌的采样率是各个声道的采样率加起来的和,比如歌曲44100Hz = 左声道 22050Hz + 右声道 22050Hz
    • 这个计数方法非常的离谱,就比如窗口1播放60fps的视频,窗口2播放60fps的视频,等于120fps的视频一样...

赫兹:任何一种测量范围内均衡重复现象,如波形或物件震频,芯片的运行频率,由Hz,KHz,GHz表示,赫兹数越高,支持的音高就越高

  • 歌声中的齿音/咬字音,非元音/通过口腔发出的短音,这些声音仍比乐器的泛音高很多
  • 音高最高的乐器是Hi-Hat/铜嚓,Cymbal/锣

QAAC-LC的采样率,声道,码率对应表

采样率 (Hz)逐轨采样 (Hz)声道布置最小-最大码率流量/CVBR档位
8000==Mono8 12 16 20 24
80004000Stereo16 20 24 28 32 40 48
800040003.0 (C L R)24 28 32 40 48 56 64 72
800040004.0 (L R Ls Rs)32 40 48 56 64 72 80 96
800040004.0 (C L R Cs)32 40 48 56 64 72 80 96
800040005.0 (C L R Ls Rs)40 48 56 64 72 80 96 112
800040005.1 (C L R Ls Rs LFE)40 48 56 64 72 80 96 112
800040006.0 (C L R Ls Rs Cs)48 56 64 72 80 96 112 128 144
800040006.1 (C L R Ls Rs Cs LFE)48 56 64 72 80 96 112 128 144
800040007.0 (C L R Ls Rs Rls Rrs)56 64 72 80 96 112 128 144 160
800040007.1 (C Rc L R Ls Rs LFE)56 64 72 80 96 112 128 144 160
800040008.0 (C L R Ls Rs Rls Rrs Cs)64 72 80 96 112 128 144 160 192
11025==Mono8 12 16 20 24 28 32
110255512.5Stereo16 20 24 28 32 40 48 56 64
110255512.53.0 (C L R)40 48 56 64 72 80 96
110255512.54.0 (L R Ls Rs)48 56 64 72 80 96 112 128
110255512.54.0 (C L R Cs)48 56 64 72 80 96 112 128
110255512.55.0 (C L R Ls Rs)64 72 80 96 112 128 144 160
110255512.55.1 (C L R Ls Rs LFE)64 72 80 96 112 128 144 160
110255512.56.0 (C L R Ls Rs Cs)72 80 96 112 128 144 160 192
110255512.56.1 (C L R Ls Rs Cs LFE)72 80 96 112 128 144 160 192
110255512.57.0 (C L R Ls Rs Rls Rrs)96 112 128 144 160 192 224
110255512.57.1 (C Rc L R Ls Rs LFE)96 112 128 144 160 192 224
110255512.58.0 (C L R Ls Rs Rls Rrs Cs)96 112 128 144 160 192 224 256
12000==Mono12 16 20 24 28 32
120006000Stereo24 28 32 40 48 56 64
1200060003.0 (C L R)40 48 56 64 72 80 96
1200060004.0 (L R Ls Rs)48 56 64 72 80 96 112 128
1200060004.0 (C L R Cs)48 56 64 72 80 96 112 128
1200060005.0 (C L R Ls Rs)64 72 80 96 112 128 144 160
1200060005.1 (C L R Ls Rs LFE)64 72 80 96 112 128 144 160
1200060006.0 (C L R Ls Rs Cs)72 80 96 112 128 144 160 192
1200060006.1 (C L R Ls Rs Cs LFE)72 80 96 112 128 144 160 192
1200060007.0 (C L R Ls Rs Rls Rrs)96 112 128 144 160 192 224
1200060007.1 (C Rc L R Ls Rs LFE)96 112 128 144 160 192 224
1200060008.0 (C L R Ls Rs Rls Rrs Cs)96 112 128 144 160 192 224 256
16000==Mono12 16 20 24 28 32 40 48
160008000Stereo24 28 32 40 48 56 64 72 80 96
1600080003.0 (C L R)40 48 56 64 72 80 96 112 128 144
1600080004.0 (L R Ls Rs)48 56 64 72 80 96 112 128 144 160 192
1600080004.0 (C L R Cs)48 56 64 72 80 96 112 128 144 160 192
1600080005.0 (C L R Ls Rs)64 72 80 96 112 128 144 160 192 224
1600080005.1 (C L R Ls Rs LFE)64 72 80 96 112 128 144 160 192 224
1600080006.0 (C L R Ls Rs Cs)72 80 96 112 128 144 160 192 224 256 288
1600080006.1 (C L R Ls Rs Cs LFE)72 80 96 112 128 144 160 192 224 256 288
1600080007.0 (C L R Ls Rs Rls Rrs)96 112 128 144 160 192 224 256 288 320
1600080007.1 (C Rc L R Ls Rs LFE)96 112 128 144 160 192 224 256 288 320
1600080008.0 (C L R Ls Rs Rls Rrs Cs)96 112 128 144 160 192 224 256 288 320 384
22050==Mono16 20 24 28 32 40 48 56 64
2205011025Stereo32 40 48 56 64 72 80 96 112 128
22050110253.0 (C L R)48 56 64 72 80 96 112 128 144 160 192
22050110254.0 (L R Ls Rs)64 72 80 96 112 128 144 160 192 224 256
22050110254.0 (C L R Cs)64 72 80 96 112 128 144 160 192 224 256
22050110255.0 (C L R Ls Rs)80 96 112 128 144 160 192 224 256 288 320
22050110255.1 (C L R Ls Rs LFE)80 96 112 128 144 160 192 224 256 288 320
22050110256.0 (C L R Ls Rs Cs)96 112 128 144 160 192 224 256 288 320 384
22050110256.1 (C L R Ls Rs Cs LFE)96 112 128 144 160 192 224 256 288 320 384
22050110257.0 (C L R Ls Rs Rls Rrs)112 128 144 160 192 224 256 288 320 384 448
22050110257.1 (C Rc L R Ls Rs LFE)112 128 144 160 192 224 256 288 320 384 448
22050110258.0 (C L R Ls Rs Rls Rrs Cs)128 144 160 192 224 256 288 320 384 448 512
24000==Mono16 20 24 28 32 40 48 56 64
2400012000Stereo32 40 48 56 64 72 80 96 112 128
24000120003.0 (C L R)48 56 64 72 80 96 112 128 144 160 192
24000120004.0 (L R Ls Rs)64 72 80 96 112 128 144 160 192 224 256
24000120004.0 (C L R Cs)64 72 80 96 112 128 144 160 192 224 256
24000120005.0 (C L R Ls Rs)80 96 112 128 144 160 192 224 256 288 320
24000120005.1 (C L R Ls Rs LFE)80 96 112 128 144 160 192 224 256 288 320
24000120006.0 (C L R Ls Rs Cs)96 112 128 144 160 192 224 256 288 320 384
24000120006.1 (C L R Ls Rs Cs LFE)96 112 128 144 160 192 224 256 288 320 384
24000120007.0 (C L R Ls Rs Rls Rrs)112 128 144 160 192 224 256 288 320 384 448
24000120007.1 (C Rc L R Ls Rs LFE)112 128 144 160 192 224 256 288 320 384 448
24000120008.0 (C L R Ls Rs Rls Rrs Cs)128 144 160 192 224 256 288 320 384 448 512
32000==Mono24 28 32 40 48 56 64 72 80 96
3200016000Stereo48 56 64 72 80 96 112 128 144 160 192
32000160003.0 (C L R)72 80 96 112 128 144 160 192 224 256 288
32000160004.0 (L R Ls Rs)96 112 128 144 160 192 224 256 288 320 384
32000160004.0 (C L R Cs)96 112 128 144 160 192 224 256 288 320 384
32000160005.0 (C L R Ls Rs)128 144 160 192 224 256 288 320 384 448
32000160005.1 (C L R Ls Rs LFE)128 144 160 192 224 256 288 320 384 448
32000160006.0 (C L R Ls Rs Cs)144 160 192 224 256 288 320 384 448 512 576
32000160006.1 (C L R Ls Rs Cs LFE)144 160 192 224 256 288 320 384 448 512 576
32000160007.0 (C L R Ls Rs Rls Rrs)192 224 256 288 320 384 448 512 576 640
32000160007.1 (C Rc L R Ls Rs LFE)192 224 256 288 320 384 448 512 576 640
32000160008.0 (C L R Ls Rs Rls Rrs Cs)192 224 256 288 320 384 448 512 576 640 768
44100==Mono32 40 48 56 64 72 80 96 112 128 144 160 192 224 256
4410022050Stereo64 72 80 96 112 128 144 160 192 224 256 288 320
44100220503.0 (C L R)96 112 128 144 160 192 224 256 288 320 384 448
44100220504.0 (L R Ls Rs)128 144 160 192 224 256 288 320 384 448 512 576 640
44100220504.0 (C L R Cs)128 144 160 192 224 256 288 320 384 448 512 576 640
44100220505.0 (C L R Ls Rs)160 192 224 256 288 320 384 448 512 576 640 768
44100220505.1 (C L R Ls Rs LFE)160 192 224 256 288 320 384 448 512 576 640 768
44100220506.0 (C L R Ls Rs Cs)192 224 256 288 320 384 448 512 576 640 768 960
44100220506.1 (C L R Ls Rs Cs LFE)192 224 256 288 320 384 448 512 576 640 768 960
44100220507.0 (C L R Ls Rs Rls Rrs)224 256 288 320 384 448 512 576 640 768 960
44100220507.1 (C Rc L R Ls Rs LFE)224 256 288 320 384 448 512 576 640 768 960
44100220508.0 (C L R Ls Rs Rls Rrs Cs)256 288 320 384 448 512 576 640 768 960 1280
48000==Mono32 40 48 56 64 72 80 96 112 128 144 160 192 224 256
4800024000Stereo64 72 80 96 112 128 144 160 192 224 256 288 320
48000240003.0 (C L R)96 112 128 144 160 192 224 256 288 320 384 448
48000240004.0 (L R Ls Rs)128 144 160 192 224 256 288 320 384 448 512 576 640
48000240004.0 (C L R Cs)128 144 160 192 224 256 288 320 384 448 512 576 640
48000240005.0 (C L R Ls Rs)160 192 224 256 288 320 384 448 512 576 640 768
48000240005.1 (C L R Ls Rs LFE)160 192 224 256 288 320 384 448 512 576 640 768
48000240006.0 (C L R Ls Rs Cs)192 224 256 288 320 384 448 512 576 640 768 960
48000240006.1 (C L R Ls Rs Cs LFE)192 224 256 288 320 384 448 512 576 640 768 960
48000240007.0 (C L R Ls Rs Rls Rrs)224 256 288 320 384 448 512 576 640 768 960
48000240007.1 (C Rc L R Ls Rs LFE)224 256 288 320 384 448 512 576 640 768 960
48000240008.0 (C L R Ls Rs Rls Rrs Cs)256 288 320 384 448 512 576 640 768 960 1280

QAAC-HE的采样率,声道,码率对应表

采样率 (Hz)逐轨采样 (Hz)声道布置最小-最大码率流量/CVBR档位
16000==Mono10 12 16 20 24 28 32
160008000Stereo20 24 28 32 40 48 56 64
1600080004.0 (L R Ls Rs)40 48 56 64 80 96 112 128
1600080005.1 (C L R Ls Rs LFE)56 64 80 96 112 128 160
1600080007.1 (C Rc L R Ls Rs LFE)80 96 112 128 160 192 224
22050==Mono10 12 16 20 24 28 32
2205011025Stereo20 24 28 32 40 48 56 64
22050110254.0 (L R Ls Rs)40 48 56 64 80 96 112 128
22050110255.1 (C L R Ls Rs LFE)56 64 80 96 112 128 160
22050110257.1 (C Rc L R Ls Rs LFE)80 96 112 128 160 192 224
24000==Mono12 16 20 24 28 32
2400012000Stereo24 28 32 40 48 56 64
24000120004.0 (L R Ls Rs)48 56 64 80 96 112 128
24000120005.1 (C L R Ls Rs LFE)64 80 96 112 128 160
24000120007.1 (C Rc L R Ls Rs LFE)96 112 128 160 192 224
32000==Mono12 16 20 24 28 32 40
3200016000Stereo24 28 32 40 48 56 64 80
32000160004.0 (L R Ls Rs)48 56 64 80 96 112 128 160
32000160005.1 (C L R Ls Rs LFE)64 80 96 112 128 160 192
32000160007.1 (C Rc L R Ls Rs LFE)96 112 128 160 192 224 256
44100==Mono16 20 24 28 32 40
4410022050Stereo32 40 48 56 64 80
44100220504.0 (L R Ls Rs)64 80 96 112 128 160
44100220505.1 (C L R Ls Rs LFE)80 96 112 128 160 192
44100220507.1 (C Rc L R Ls Rs LFE)112 128 160 192 224 256
48000==Mono16 20 24 28 32 40
4800024000Stereo32 40 48 56 64 80
48000240004.0 (L R Ls Rs)64 80 96 112 128 160
48000240005.1 (C L R Ls Rs LFE)80 96 112 128 160 192
48000240007.1 (C Rc L R Ls Rs LFE)112 128 160 192 224 256
88200==Mono32 40 48 56 64 80 96 112 128 160
8820044100Stereo64 80 96 112 128 160 192 224 256 320
88200441004.0 (L R Ls Rs)128 160 192 224 256 320 448 640
88200441005.1 (C L R Ls Rs LFE)160 192 224 256 320 448 640
88200441007.1 (C Rc L R Ls Rs LFE)224 256 320 448 640 1120
96000==Mono32 40 48 56 64 80 96 112 128 160
9600048000Stereo64 80 96 112 128 160 192 224 256 320
96000480004.0 (L R Ls Rs)128 160 192 224 256 320 448 640
96000480005.1 (C L R Ls Rs LFE)160 192 224 256 320 448 640
96000480007.1 (C Rc L R Ls Rs LFE)224 256 320 448 640 1120

操作

  1. 打开Audition或其它可以观察频谱/热度图的软件
  2. 导入源音频,找到全曲响度最大,最激烈的部分(一般为副歌Chorus)
  3. 对频谱/热度图操作Ctrl+鼠标滚轮向下直到能看见22kHz的信号频率为止
    Measure-Waves-1.png
    • 图中例子显示,在19kHz的信号频率往上就没有任何有效信息了
    • 如果怀疑信号有效,则可以用鼠标左键拖选这部分信号并播放,如果听不到就调大音量,直到听到为止(注意保护听力,因为提高音量的同时也会提高本来就很响处的音量)
  4. 可以打开窗口 > 频率分析以仔细观察频谱,进度条指针所对应18kHz及其上方的信号电平小于-80dBFS
    Measure-Waves-2.png
  • 根据波形振幅转换混音电平的公式可以看到,在-50dBFS以下的波形振幅太小了,对音质/信号完整性没有任何贡献(甚至从-60dBFS开始就失效了)
    Amplitude-to-dBFS.png
  • -50dBFS以下电平需要正常歌曲音量播放在75~85dB(标准混音音量)的时候能勉强听到一点,-60dBFS以下的电平需要让正常歌曲能打碎玻璃的音量才能听到,-80dBFS以下的电平...理论上需要能让正常歌曲弄坏扬声器的巨大音量才能听到

因此,根据对音频的频谱分析,得到了仅限这段音频中大于19kHz的音高属于可以砍掉无效信号的结论;对应到AAC-LC双声道逐轨最高有效为22050Hz,即全音频流44100Hz的最高有效采样率,得到参数

qaac64.exe --tvbr 127 -b 16 -r 44100 --threading --verbose

甚至可以更进一步地把所有-60dBFS(12kHz以上的频段),但适用的音频更少;对应到AAC-LC双声道逐轨最高有效为16000Hz,即全音频流32000Hz的最高有效采样率,得到参数

qaac64.exe --tvbr 127 -b 16 -r 32000 --threading --verbose

最终得到了平均300Kbps,但音质与44100Hz或更高储存频率的音频差▲1‰左右,同时理论音质等于或高于CVBR 320kbps,44100或48000Hz的高压缩音轨

  • 有概率变高是因为更多码率能被拿来编码有效信号

理论验证

为防被说瞎搞,所以验证了一下理论... 方法是将-6dBFS的电平对应到90~100dB,然后逐渐降低音量从而获取到-80dBFS的感知音量,缺陷是录音设备是一加3T和一加8,一加3T的最大收音音量只有64dB,一加8的最大收音音量只有89dB

  • 播放一个-6dBFS的正弦波,实际音量为大于89dB(要被震吐了...)
    -6dBFS-81dB.jpg
  • 然后把电平降低到-38dBFS,接收音量下降到了48dB,此时体感音量相当于手机音量设置在8~18%
    -38dBFS-48dB.jpg
  • 然后把电平降低到-48dBFS,接收音量下降到了22dB,这个时候扬声器的音量低于环境噪音(19~25dB),耳朵贴在扬声器上能勉强听到
    -48dBFS-22dB.jpg
  • 再往下就完全被环境噪音遮住了,但在-52~-54dBFS的时候把耳朵贴在扬声器上使劲听还是能听到很微弱的一点点...

那么... emmmmmmm就这样,呕

  • 2024.1更新:改良了封装文件vs音频文件格式,并增加了QAAC不根据后缀名判断的说明(感谢@1-β²)
    lcitrus
    lcitrus  2022-08-08, 22:38

    qaac中的qaac说明写的是:
    example:--chanmap 2,3,1 -> C+L+R -> L+R+C
    这是代表1号位换2音轨,2号位换3音轨,3号位换1音轨吧
    所以应该是 1中2左3右 换成 1左2右3中 吧

      A@NAZOrip
      A@NAZOrip  2023-08-28, 23:39

      有点乱,我捋一捋... 好像我没搞错,除非chanmap改了声道本身而不是把音轨放进对应的声道里

        A@NAZOrip
        A@NAZOrip  2023-08-28, 23:41

        应该是你看错了,这个1-2-3轨移动了,但声道没变,而你回复里写的1-2-3轨道位置没有变化

    TSiao
    TSiao  2022-06-13, 13:47

    按照教程自己整理了一份最新的打包文件,测试了可以使用:

    名称: QAAC_v2.76+Apple_Application_Support_7.0.2(x86_64).zip
    大小: 34244592 字节 (32 MiB)
    SHA1: C5292173754E77E7A7B551252CC93BE77E8654F8

    https://cloud.189.cn/web/share?code=ArMBneR3aEJz(访问码:x1ck)

    https://pan.baidu.com/s/1Y60_7SHRRDrtsM5PDXsZ-w 提取码: vnev

      A@NAZOrip
      A@NAZOrip  2022-08-28, 22:11

      QAAC没啥关键更新,就是在奇怪的地方修修bug,不过有人维护这是ao的!

    TSiao
    TSiao  2022-06-13, 12:54

    感谢您的收集:
    文中的AppleApplicationSupport与AppleApplicationSupport64是4.1版本的,
    我尝试更新了一下最新的版本:到7.0.2,来自https://ipsw.me/iTunes
    即ITunes 12.9.0.167 x64版本(解压后x86与x64皆有)
    下载地址看上去是苹果官方服务器的:https://secure-appldnld.apple.com/itunes12/041-02280-20180912-24D8CF68-AC7A-11E8-8B51-C26F1B1141A5/iTunes64Setup.exe

    使用dBpoweramp Music Converter【https://www.dbpoweramp.com/】安装m4a (Apple Lossless & AAC)【https://www.dbpoweramp.com/codec-central-m4a.htm】插件后,可以正常转换。

    iTunes 12.10以上版本解压出来没有了。https://support.apple.com/kb/DL2064

    TSiao
    TSiao  2022-06-13, 12:49

    感谢您的收集:
    文中的AppleApplicationSupport与AppleApplicationSupport64是4.1版本的,
    我尝试更新了一下最新的版本:到7.0.2,来自https://ipsw.me/iTunes
    即ITunes 12.9.0.167 x64版本(解压后x86与x64皆有)
    下载地址看上去是苹果官方服务器的:https://secure-appldnld.apple.com/itunes12/041-02280-20180912-24D8CF68-AC7A-11E8-8B51-C26F1B1141A5/iTunes64Setup.exe

    使用dBpoweramp Music Converter【https://www.dbpoweramp.com/】安装m4a (Apple Lossless & AAC)【https://www.dbpoweramp.com/codec-central-m4a.htm】插件后,可以正常转换。

    gohos59027
    gohos59027  2021-05-14, 21:08

    请问--fname-from-tag和--fname-format怎么用,输出类似artist-title.m4a的文件名

    NAZOrip@F
    NAZOrip@F  2018-04-26, 16:58

    实际测试中使用ffpipe需要指定输出格式为wav才能pipe成功,并且应注意pipe格式。即实际命令应为ffmpeg -i ... -f wav | qaac ... -ignorelength -

      NAZOrip@A
      NAZOrip@A  2018-05-08, 11:14

      已修改

        NAZOrip@F
        NAZOrip@F  2018-05-14, 01:52

        给大佬点赞

    ffmpeg user
    ffmpeg user  2018-04-14, 21:14

    你这个ffmpeg和qaac的路径应该添加到系统变量里去,然后打开音频文件所在的文件夹,在文件管理器地址栏中输入PowerShell或者cmd,按Enter键,然后运行路径已简化的命令,比如:
    qaac input.wav -o output.m4a

      NAZOrip@A
      NAZOrip@A  2018-06-15, 10:46

      这篇文档的最低用户定位是给突然需要压制, 压完就删工具的用户看的, 而且我也算压了上百个音频了也没搞过什么变量, 反倒是把命令写进txt保存了, 用的时候直接改文件导入导出名称就行了

    学长很忙
    学长很忙  2018-04-01, 18:32

    楼主,你好,我想问下哦,用qaac编码iTunes plus 256的时候怎么设置音量平衡呀,用iTunes软件压缩的话,专辑的每首歌都会有音量平衡的,而且是自动的,但qaac要怎么设置呀?因为我是要编码整张专辑的呢!

      NAZOrip@A
      NAZOrip@A  2018-04-08, 04:24

      最近准备升级系统所以手机QQ卸了,我微信号jiac789,邮箱地址[email protected]

      NAZOrip@A
      NAZOrip@A  2018-04-04, 08:12

      @学长很忙 你别说,我查了一下, qaac还真有这么个东西, 教程已更新, 见--normalize

        学长很忙
        学长很忙  2018-04-04, 18:10

        我用了--normalize,但编码以后好像还是没有volume那个选项,用iTunes软件查看是叫volume,用foobar查看是叫APPLE SOUNDCHECK GAIN,好像都没看到呢!--normalize后面要加什么参数吗

          NAZOrip@A
          NAZOrip@A  2018-04-07, 05:26

          那是个开关额,写下来就等于打开了音量标准化的功能

            学长很忙
            学长很忙  2018-04-07, 12:05

            可以加个qq讨论下不?