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

NAZOrip@A
  • 在其它设备中阅读本文章

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

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的AppleApplicationSupport64AppleApplicationSupport
    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解码包

打赏信息

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

命令行用例

'打开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喂流,省去检查和手打音频长度信息的功夫

输出/编码格式

AAC-LC:默认的低复杂度low-comp.编码,QAAC中限制最高320kbps,但aac标准上没写这限制
AAC-HE:高压缩效率high-eff.编码,QAAC中限制最高80kbps,同码率下比LC细节好,但码率太低所以很难用到
ALAC:苹果研发的无损编码方法. 不过嘛,原曲采样率低了还是会让无损爱好者不满,因为16bit,44100Hz的音频所有设备都支持,不够小众(开玩笑的)

-V,--tvbr   <整数,范围0~127>可变码率,音质档位,数字越大音质越还原,不一定容易控制住码率,选项有0/9/18/27/36/45/54/63/73/82/91/100/109/118/127,默认91
-v,--cvbr   <整数>可变码率,码率档位,不为了还原而超过规定的码率(然而还是会超),选项有64/80/96/112/128/144/160/192/224/256/288/320,单位kbps
-a, --abr    <整数>平均码率,码率限制下贴合目标码率使用的方案,但同质量下码率不如前两者

tvbr, cvbr模式的码率有可能会超标,有码率限制的话需要确认没超,或用ABR模式直达要求

--he         <开关>用HE-AAC编码,除TVBR和ALAC以外的模式都可用,使用后码率会被锁在16~80kbps. ❀注意是--he而不是-he
-A,--alac   <开关>无损压缩

.wav:未压缩的PCM波形文件后缀
.alac:无损压缩的PCM波形文件后缀
.aac:有损压缩的PCM/DTS波形文件后缀
.caf/.m4a:音频封装,用于打包AAC,ALAC,PCM波形以及歌词,章节,标识,封面等内容到单文件,和.zip/.rar/.mp4等是同类哦~

--caf        <开关>用core audio format封装格式打包音频流
相比之下用.m4a(输出文件上直接写后缀)只能打包aac和alac(未验证). 在输出文件上写.aac/.alac后缀就指定不封装

AAC-ADTS:使用DTS而不是PCM波形(未验证),增加对99年之前老播放器的支持,大概旧电器;旧车收藏家会用到. 毕竟谁还没在上微机课的时候玩过来回开关光驱呢

--adts       <开关>除无损(ALAC)以外的模式都可用

WAV-PCM:解压缩出PCM波形,和视频解码器逆运算出画面一样的原理❀

-D,--decode <整数>输出PCM波形(.wav)
一般用于频谱分析,毕竟解包不带解码器的软件然后安个解码器进去的门槛超高

导入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右

压缩强度与占用

-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时长,单位毫秒. 防止编码器反应过快致声降低不明显
~例如设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 "输出" "输入", 可以多复制调整几行命令以批量处理

那么emmmmmmm就这样的说~

    gohos59027
    gohos59027  2021-05-14, 21:08

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

    NAZOrip@F
    [email protected]  2018-04-26, 16:58

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

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

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

      NAZOrip@A
      [email protected]  2018-06-15, 10:46

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

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

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

      NAZOrip@A
      [email protected]  2018-04-08, 04:24

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

      NAZOrip@A
      [email protected]  2018-04-04, 08:12

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

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

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

          NAZOrip@A
          [email protected]  2018-04-07, 05:26

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

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

            可以加个qq讨论下不?