腾讯互动直播 音频 视频 踩过的坑 二
1),再项目中需要主播能够调节用户端听到的声音的大小,这里看到sdk里边有对应的调节音量大小的接口。
public native int SetAudioDataDBVolume(int var1, int var2);
public native int GetAudioDataDBVolume(int var1);
通过对帮助文档查看
SetAudioDataDBVolume
public int SetAudioDataDBVolume(int src_type,
int volume)
设置某类型的音频音量。
Parameters:
[in] - src_type 音频数据类型。
[in] - volume 音量 (范围 0-121)。// 0代表静音,-30db-30db,每增加1增加0.5db
Returns:
成功返回AVError.AV_OK, 否则返回AVError.AV_ERR_FAILED。
注意:1.调用这个接口一定是创建房间完成,而且再主线程调用,不能再回调中使用,否则会返回错误值,具体对应 错误请参考上一篇,详细讲述了。
2.再调用这个接口的时候必须对这个进行回调,否则会返回失败,这也是一个坑例如你假如调节播放声音必须再观众端房间完成的时候进行回调初始化如下:
ILiveSDK.getInstance().getAvAudioCtrl().registAudioDataCallbackWithByteBuffer(AVAudioCtrl.AudioDataSourceType.AUDIO_DATA_SOURCE_PLAY, new AVAudioCtrl.RegistAudioDataCompleteCallbackWithByteBuffer() {
@Override
public int onComplete(AVAudioCtrl.AudioFrameWithByteBuffer audioFrameWithByteBuffer, int i) {
return 0;
}
});
再主线程中调用
SetAudioDataDBVolume(AVAudioCtrl.AudioDataSourceType.AUDIO_DATA_SOURCE_PLAY, 0);//达到静音
我测试了下观众端通过上述 设置音量的时候没效果。
而主播端通过对
public static final int AUDIO_DATA_SOURCE_MIXTOSEND = 1;
public static final int AUDIO_DATA_SOURCE_SEND = 2;
这两个进行回调,可以达到主播端控制观众端音量的效果。
所以一路走来满满的是坑