weixin_45125651 2023-02-25 19:00 采纳率: 55.6%
浏览 19

wasapi获取音频数据

兄弟萌啊,使用wasapi获取音频数据时使用GetMixFormat获取的wFormatTag等于65534是什么类型啊,如何我手动指定音频格式啥的再初始化就会报错,E_INVALIDARG,参数 pFormat 指向无效的格式说明,有兄弟知道的吗

  • 写回答

2条回答 默认 最新

  • GPT_Pro 2023-02-25 19:17
    关注

    该回答内容部分引用GPT,GPT_Pro更好的解决问题
    如果wFormatTag等于65534,这表明你正在使用的是一种未知的音频格式。在这种情况下,你可以分析pFormat结构中的变量,以获取确切的音频格式。

    WAVEFORMATEX * pFormat;
    // 获取pFormat
    GetMixFormat(&pFormat);
    DWORD wFormatTag = pFormat->wFormatTag;
    // 如果wFormatTag等于65534,表示正在使用未知音频格式
    if (wFormatTag == 65534){
        // 分析pFormat结构中的变量,以获取确切的音频格式
        DWORD nSamplesPerSec = pFormat->nSamplesPerSec;  // 采样率
        WORD wBitsPerSample = pFormat->wBitsPerSample;  // 比特率
        WORD nChannels = pFormat->nChannels;            // 通道数
        WORD nBlockAlign = pFormat->nBlockAlign;        // 块对齐
        DWORD cbSize = pFormat->cbSize;                 // 比特率大小
        // 根据以上信息,可以定义自己想要的WAVEFORMATEX结构体,然后进行初始化。
        WAVEFORMATEX waveformatex;
        waveformatex.wFormatTag = WAVE_FORMAT_PCM;  // 音频格式  
        waveformatex.nSamplesPerSec = nSamplesPerSec;  // 采样率  
        waveformatex.wBitsPerSample = wBitsPerSample;  // 比特率  
        waveformatex.nChannels = nChannels;            // 通道数  
        waveformatex.nBlockAlign = nBlockAlign;        // 块对齐  
        waveformatex.cbSize = cbSize;                 // 比特率大小  
        // 调用函数初始化
        Initialize(&waveformatex);  // &waveformatex为初始化函数的参数 
    }  
    

    如上代码所述,通过分析pFormat结构中的变量,我们可以获得采样率、比特率、通道数、块对齐、比特率大小信息,并将其用于定义WAVEFORMATEX 结构体,然后再初始化即可。
    如果回答有帮助,望采纳。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月25日

悬赏问题

  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计