You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 8-10下如何为QAudioRecorder添加AAC/Opus编码支持?

在Windows 8-10为QAudioRecorder添加AAC/OPUS编码支持的解决方案

我来帮你解决这个问题——QAudioRecorder调用supportedAudioCodecs()只返回audio/pcm,是因为默认Qt预编译包的Multimedia模块没集成第三方编码器支持。下面是针对libfaac(AAC)和libopus(OPUS)的具体实现步骤,以及Windows平台的专属技巧:

一、添加AAC编码支持(基于libfaac)

1. 准备依赖文件

首先得拿到匹配你Qt环境的libfaac包:

  • 要对应架构(32/64位)和编译器(MSVC/MinGW),别下错版本,不然链接时会报错
  • 必须包含头文件(faac.h)、静态库(libfaac.lib)或动态库(faac.dll)

2. 编译带libfaac支持的Qt Multimedia

预编译Qt没法直接添加第三方编码器,得重新编译Multimedia模块:

  • 打开对应编译器的Qt命令行工具(比如MSVC 2019 x64命令提示符)
  • 执行configure命令配置Qt,指定使用系统libfaac库,并传入头文件和库文件路径:
    configure -prefix <你的Qt安装路径> -system-faac -I <libfaac头文件所在路径> -L <libfaac库文件所在路径>
    
  • 接着执行nmake(MSVC环境)或mingw32-make(MinGW环境)完成编译,嫌全量编译慢的话,也可以单独编译Multimedia模块

3. 验证AAC支持

编译完成后,在你的项目里调用QAudioRecorder::supportedAudioCodecs(),就能看到audio/aac选项了。如果用的是动态库,记得把faac.dll放到程序的运行目录里,不然程序启动会失败。

二、添加OPUS编码支持(基于libopus)

1. 准备依赖文件

和AAC一样,先搞定匹配环境的libopus包:

  • 同样要对应架构和编译器
  • 拿到头文件(opus.h等)、静态库(libopus.lib)或动态库(opus.dll)

2. 编译带libopus支持的Qt Multimedia

步骤和AAC基本一致:

  • 在Qt命令行工具里执行configure命令,添加libopus支持:
    configure -prefix <你的Qt安装路径> -system-opus -I <libopus头文件所在路径> -L <libopus库文件所在路径>
    
  • 执行编译命令完成构建

3. 验证OPUS支持

编译完成后,supportedAudioCodecs()就会返回audio/opus。动态库情况下,记得把opus.dll放到程序运行目录。

三、更省事的替代方案:用Windows原生Media Foundation支持AAC

Windows 8及以上系统自带的Media Foundation已经原生支持AAC编码,如果你用的是MSVC编译的Qt(Qt 5.6+默认启用了Media Foundation后端),可以试试这个不用额外编译第三方库的方法:

  • 确保项目.pro文件里添加了QT += multimedia
  • 在代码里手动指定AAC编码配置:
    QAudioRecorder recorder;
    QAudioEncoderSettings audioSettings;
    audioSettings.setCodec("audio/aac");
    audioSettings.setSampleRate(44100);
    audioSettings.setBitRate(128000);
    audioSettings.setChannelCount(2);
    audioSettings.setQuality(QMultimedia::HighQuality);
    recorder.setAudioSettings(audioSettings);
    
  • 如果还是识别不到AAC,说明你用的预编译Qt没启用Media Foundation的AAC支持,这时候还是得重新编译Qt,加上-mediafoundation配置选项。

四、关键注意事项

  • 编译器/架构匹配:libfaac、libopus的编译环境必须和你的Qt完全一致,否则会出现链接错误或运行崩溃
  • 版权合规:libfaac采用LGPL许可,libopus采用BSD许可,分发程序时要遵守对应的开源条款
  • Qt版本选择:建议用Qt 5.15及以上的LTS版本,多媒体后端的兼容性更好,坑更少

内容的提问来源于stack exchange,提问作者vatosarmat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:41:30