如果你的业务场景对声音有特殊要求,需要开发者对声音做一些定制化处理;目前TRTC SDK提供发送自定义采集音频数据的接口,开发者可以自定采集音频数据,然后复用 trtc的编码功能,目前6.3.7版本sdk只支持48000采样率的单声道pcm数据,后续会发版支持更多的音频,可以留意一下我们官网的sdk更新;
1、需要根据配置参数,然后使用 AudioRecord 音频数据。
2、AudioRecord 采集到的音频数据不会回调给开发者,开发者需要启动一个线程每隔一段时间去读取音频数据。
private class AudioCaptureRunnable implements Runnable {
@Override
public void run() {
while (!mIsLoopExit) {
// 直接设置为 buffer size = 2048
mMinBufferSize
byte[] buffer = new byte[mMinBufferSize];
int ret = mAudioRecord.read(buffer, 0, mMinBufferSize);
if (ret == AudioRecord.ERROR_INVALID_OPERATION) {
Log.e(TAG , "AudioRecord Error ERROR_INVALID_OPERATION");
}
else if (ret == AudioRecord.ERROR_BAD_VALUE) {
Log.e(TAG , "AudioRecord Error ERROR_BAD_VALUE");
}
else {
if (isPush) {
mLivePusher.sendCustomPCMData(buffer);
}
}
SystemClock.sleep(10);
}
}
}
1、注意文件需要是48000采样率的单声道pcm文件;
2、将pcm文件放在assets目录下,并调用
3、需要做一个定时器,定时往sdk塞音频数据,定时器间隔=(字节数 / 2 / 声道数) 1000 / 采样率 例如单声道,48K,(2048/2/1)1000/48000=21
完整的实例代码下载地址:建议将代码复制到腾讯云开发者demo中
void sendCustomAudioData(TRTCAudioFrame frame)
该接口是向 SDK 塞入您自定义采集和处理后的音频数据,请使用单声道的48000 PCM 声音数据。目前还不支持其他数据类型,后续会支持更多的音频采集类型;
参数 | 类型 | 说明 |
---|---|---|
data | byte[] | pcm 音频数据 |
sampleRate | int | 音频采样率 |
channel | int | 音频声道数 |
timestamp | long | 音频时间戳 |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。