Qt6在Windows平台使用QMediaRecorder录制WAV文件是否支持?
Qt6 Windows下QMediaRecorder无WAV格式支持问题
这是Qt6的已知兼容性问题,根源在于Qt6对Windows多媒体后端的调整:
- Qt5采用Windows Multimedia Foundation(WMMF)的旧接口,对WAV格式的支持完善;
- Qt6切换为更现代的Media Foundation(MF)组件,但Qt对MF的封装中暂未完整适配WAV的编码支持,导致
supportedFileFormats枚举中不显示Wave格式。
可行解决方案
1. 手动指定WAV格式参数
绕过supportedFileFormats的枚举限制,直接配置PCM编码和WAV容器:
QMediaRecorder recorder; // 配置音频编码参数(PCM是WAV的核心编码) QAudioEncoderSettings audioSettings; audioSettings.setCodec("audio/pcm"); audioSettings.setSampleRate(44100); audioSettings.setBitRate(1411200); // 对应44.1kHz、16位、双声道 audioSettings.setChannelCount(2); audioSettings.setQuality(QMultimedia::HighQuality); // 强制设置媒体格式为WAV QMediaFormat format; format.setCodec(QMediaFormat::AudioCodec::PCM); format.setFileFormat(QMediaFormat::Wave); recorder.setAudioSettings(audioSettings); recorder.setMediaFormat(format); recorder.setOutputLocation(QUrl::fromLocalFile("recording.wav"));
2. 回退到Qt5的多媒体后端
通过设置环境变量强制Qt6使用旧的WMMF后端,恢复WAV格式支持:
QT_MEDIA_BACKEND=windowsmedia
注意:此方法会丢失Qt6多媒体模块的部分新特性,仅作为临时规避方案。
该问题已在Qt官方bug跟踪系统中被多个用户反馈,后续版本可能会修复适配,但当前稳定版需通过上述方法解决。
内容的提问来源于stack exchange,提问作者Meliodas
相关产品推荐
相关产品推荐

