更新时间:2024-07-30 GMT+08:00

获取音频流

接口描述

该接口用于获取会议中各会场混音后的音频数据流。只支持32位库。

注意事项

该接口为异步接口,回调函数返回值只代表接口是否调用成功,实际业务处理结果在对应的通知函数中返回。

在进入会议前就可以调用此接口,创建或加入会议后就会有通知。

方法定义

HWM_SDK_AGENT_API hwmsdk::HwmErrCode SetAudioRawDataOutputConfig(bool isOpen);

回调函数

virtual void OnSetAudioRawDataOutputConfigResult(hwmsdk::HwmErrCode ret, const char* reason) {};

通知函数

virtual void OnAudioFrameNotify(const AudioFrameData* pFrame) {};

参数描述

表1 参数说明

参数

是否必须

类型

描述

isOpen

bool

是否开启功能开关。

表2 返回值

类型

描述

HwmErrCode

成功返回0,其他值表示失败。失败返回值见错误码参考

表3 结构体AudioFrameData参数说明

参数

类型

描述

eFrameType

AudioFrameType

音频帧类型

iSamples

signed int

每个声道的采样点数

iSamplesPerSec

signed int

采样率

iBytesPerSample

signed int

每个采样点的字节数,pcm数据一般16bit

iChannels

signed int

声道数

pBuffer

char *

数据缓冲区,长度=iSamples*iBytesPerSample*iChannels

uiDataLen

signed int

编码后或解码前使用该字段表示数据长度,加解密处理后需更新此字段值

uiBufferLen

signed int

缓冲区长度,编码后数据进行第三方加密,数据长度会变大,防止溢出

表4 枚举AudioFrameType说明

枚举值

描述

AUDIO_FRAME_TYPE_PCM16

16位精度PCM

示例代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
* 上报音频码流帧数据通知
*/
void demoNotifyProc::OnAudioFrameNotify(const AudioFrameData* pFrame)
{
    if(nullptr != pFrame)
    {
        FILE* recordFile = nullptr;
        std::string Path ("D:\\AudioFrame.pcm");
        auto error = fopen_s(&recordFile,Path.c_str(), "ab+");
        if (error != 0)
        {
            CTools::OutputRetStr("open file error = " + std::to_string(error));
        }

        if (nullptr != recordFile)
        {
            fwrite(pFrame->pBuffer, sizeof(char), pFrame->iSamples * pFrame->iBytesPerSample * pFrame->iChannels, recordFile);
            fclose(recordFile);
        }
    }
}