文档中心
hybrid_hierarchical_delivery_system 超低延迟直播
文档中心
体验 App
SDK 中心
API 中心
常见问题
代码市场
进入控制台
立即注册
登录
中文站 English
  • 文档中心
  • 超低延迟直播
  • 音频能力
  • 原始音频数据获取

原始音频数据获取

更新时间:2024-01-02 18:48

功能简介

SDK 为开发者提供了获取原始音频数据的功能,获取的原始音频数据格式为 PCM,开发者可以将此数据写到本地设备中,实现录制音频。

示例源码下载

请参考 下载示例源码 获取源码。

相关源码请查看 “/ZegoExpressExample/AdvancedAudioProcessing/src/main/java/im/zego/advancedaudioprocessing/originalaudiodataacquisition” 目录下的文件。

前提条件

在获取原始音频数据之前,请确保:

  • 已在 ZEGO 控制台 创建项目,并申请有效的 AppID 和 AppSign,详情请参考 控制台 - 项目信息。
  • 已在项目中集成 ZEGO Express SDK,并实现了基本的音视频推拉流功能,详情请参考 快速开始 - 集成 和 快速开始 - 实现流程。

使用步骤

1 初始化 SDK

请参考 快速开始 - 实现流程 的 “创建引擎”。

2 开启获取原始音频数据功能

开发者可调用 startAudioDataObserver 接口,开启原始音频数据回调监测。回调的音频数据类型为 ZegoAudioDataCallbackBitMask,包括有 CAPTURED、PLAYBACK、MIXED、PLAYER,这四个回调类型都需要开启。

// 开启获取原始音频数据功能
ZegoAudioFrameParam param=new ZegoAudioFrameParam();
param.channel = ZegoAudioChannel.STEREO;
param.sampleRate = ZegoAudioSampleRate.ZEGO_AUDIO_SAMPLE_RATE_8K;
int bitmask = 0;
// 添加 bitmask,开启采集到音频数据到回调开关。
// 采集、播放、混合、拉流对应的位掩码值分别是:CAPTURED=1,PLAYBACK=2,MIXED=4,PLAYER=8,bitmask 最终得到的值为 15,表示会同时触发采集、播放、混合、拉流的原始数据回调。
bitmask |= ZegoAudioDataCallbackBitMask.CAPTURED.value();
bitmask |= ZegoAudioDataCallbackBitMask.PLAYBACK.value();
bitmask |= ZegoAudioDataCallbackBitMask.MIXED.value();
bitmask |= ZegoAudioDataCallbackBitMask.PLAYER.value();
engine.startAudioDataObserver(bitmask, param);

如有需要可参考 位掩码的使用。

3 设置回调接收原始音频数据并处理

开发者可调用 setAudioDataHandler 接口设置额外接收音频数据的回调。根据需要可实现回调 onCapturedAudioData、onPlaybackAudioData、onMixedAudioData、onPlayerAudioData,分别对应上述 ZegoAudioDataCallbackBitMask 中的四个音频数据类型。

// 设置原始音频数据回调
engine.setAudioDataHandler(new IZegoAudioDataHandler() {
    @Override
    public void onCapturedAudioData(ByteBuffer data, int dataLength, ZegoAudioFrameParam param) {
    // 本地采集音频数据,推流后可收到回调
    }

    @Override
    public void onPlaybackAudioData (ByteBuffer data, int dataLength, ZegoAudioFrameParam param) {
    // SDK 播放的音频数据,在非拉流状态的引擎启动状态且未使用媒体播放器播放媒体文件状态时,回调的音频数据是静音的音频数据
    }

    @Override
    public void onMixedAudioData(ByteBuffer data, int dataLength, ZegoAudioFrameParam param) {
    // 本地采集与 SDK 播放的声音混合后的音频数据回调
    }

    @Override
    public void onPlayerAudioData(ByteBuffer data, int dataLength, ZegoAudioFrameParam param, String streamID) {
    // 远端拉流音频数据,开始拉流后每条拉流数据的回调
    }
});

4 停止音频数据回调监测

若想停止音频数据回调监测,可调用 stopAudioDataObserver 接口。

engine.stopAudioDataObserver();
本篇目录
  • 免费试用
  • 提交工单
    咨询集成、功能及报价等问题
    电话咨询
    400 1006 604
    咨询客服
    微信扫码,24h在线

    联系我们

  • 文档反馈