修改音频原始数据 编辑文档

功能描述

QttAudio支持对SDK采集到的音视频数据进行前处理和后处理,获取想要的播放效果。

  • 前处理:即在音频数据发送到编码器前获取原始的音频数据进行处理,主要针对本地麦克风采集到的音频数据。

  • 后处理:即在音频数据发送给解码器后获取原始的音频数据进行处理,主要针对接收到的远端用户音频数据。

可以通过向引擎注册原始音频采集数据监听器,实现采集、修改原始音频数据功能,但不能改变数据大小。

接口描述

public interface DataObserver {
/**
* 获取到数据
* @param byteBuffer 需要先rewind,再取出数据
* @param len 数据长度
* @return 如果修改了数据需要返回true;没修改返回false,减少一次内存拷贝
*/
boolean onData(ByteBuffer byteBuffer, int len);
}

public class ChannelEngine {
/**
* 设置原始音频采集数据监听器,可修改数据,但不能改变数据大小
* @param observer 数据监听器
* @param channels 声道数,可以为1或者2
* @param bufSize 数据回调大小,小于等于0为默认值
*/
public int setRecordDataObserver(DataObserver observer, int samplerate, int channels, int bufSize);
/**
* 设置原始音频播放数据监听器,可修改数据,但不能改变数据大小
* @param observer 数据监听器
* @param bufSize 数据回调大小,小于等于0为默认值
*/
public int setPlaybackDataObserver(DataObserver observer, int samplerate, int channels, int bufSize);
}

示例代码

DataObserver recordObserver = new DataObserver() {
@Override
public boolean onData(ByteBuffer byteBuffer, int len) {
byteBuffer.rewind();
byte[] data = new byte[len];
byteBuffer.get(data, 0, len);
//对SDK采集的原始音频数据进行处理
return true;
}
};
engine.setRecordDataObserver(recordObserver, 16000, 1, 0);

DataObserver playObserver = new DataObserver() {
@Override
public boolean onData(ByteBuffer byteBuffer, int len) {
byteBuffer.rewind();
byte[] data = new byte[len];
byteBuffer.get(data, 0, len);
//对SDK解码后的音频数据进行处理
return true;
}
};
engine.setPlaybackDataObserver(playObserver, 16000, 1, 0);
野狗新手?
立即注册,为你提供安全可靠的实时通信云服务。
没找到需要的文档?
你可以提交工单反馈 或 阅读常见问题