如果您有业务场景需要自行处理音频或视频数据,BRTC SDK 提供了若干回调方法,允许您在SDK将数据发送给编码器之前进行修改。
通过接口 setLocalVideoProcessListener 设置本地视频帧监听,通过回调函数接收编码前采集的原始视频数据, 返回处理后的数据给 SDK 做后续处理。
// 初始化与进房 BRTC engine = BRTC.sharedInstance(getApplicationContext()); engine.setListener(brtcListener); BRTCDef.BRTCParams BRTCParams = new BRTCDef.BRTCParams(appId, roomId, localUid, uSig, BRTCDef.BRTCRoleType.BRTCRoleAnchor); engine.enterRoom(BRTCParams); BBRTCListener brtcListener = new BRTCListener() { @Override public void onEnterRoom(long result) { // 开启视频预览并推流 engine.startLocalPreview(true, localVideoViewMaster); engine.muteLocalVideo(false); //设置视频帧监听回调 engine.setLocalVideoProcessListener(BRTCVideoFrame.BRTC_VIDEO_PIXEL_FORMAT_NV21, BRTC_VIDEO_BUFFER_TYPE_BYTE_ARRAY, brtcVideoFrameListener); } }; BRTCListener.BRTCVideoFrameListener brtcVideoFrameListener = new BRTCListener.BRTCVideoFrameListener() { @Override public void onGLContextCreated() { } @Override public int onProcessVideoFrame(BRTCVideoFrame srcFrame, BRTCVideoFrame dstFrame) { for (int i = 0; i < dstFrame.data.length; i += 2) { dstFrame.data[i] = (byte) (dstFrame.data[i] >>> 1); } return 0; } @Override public void onGLContextDestroy() { } };
通过接口 setAudioFrameListener 设置本地音频帧监听,通过回调函数接收编码前的音频数据
// 初始化与进房 BRTC engine = BRTC.sharedInstance(getApplicationContext()); engine.setListener(brtcListener); BRTCDef.BRTCParams BRTCParams = new BRTCDef.BRTCParams(appId, roomId, localUid, uSig, BRTCDef.BRTCRoleType.BRTCRoleAnchor); engine.enterRoom(BRTCParams); BBRTCListener brtcListener = new BRTCListener() { @Override public void onEnterRoom(long result) { //设置音频频帧监听回调 engine.setAudioFrameListener(brtcAudioFrameListener); // 开启音频采集并推流 engine.startLocalAudio(BRTCDef.BRTCAudioQuality.BRTCAudioQualitySpeech); engine.muteLocalAudio(false); } }; BRTCListener.BRTCAudioFrameListener brtcAudioFrameListener = new BRTCListener.BRTCAudioFrameListener() { // 回调本地采集并经过音频模块前处理(3A)后的音频数据 @Override public void onCapturedRawAudioFrame(BRTCDef.BRTCAudioFrame audioFrame) { } // 回调在 onCapturedRawAudioFrame 后附加了背景音效、媒体文件的音频数据 @Override public void onLocalProcessedAudioFrame(BRTCDef.BRTCAudioFrame audioFrame) { } };
原始数据采集
如果您有业务场景需要自行处理音频或视频数据,BRTC SDK 提供了若干回调方法,允许您在SDK将数据发送给编码器之前进行修改。
视频原始数据读取
通过接口 setLocalVideoProcessListener 设置本地视频帧监听,通过回调函数接收编码前采集的原始视频数据, 返回处理后的数据给 SDK 做后续处理。
音频原始数据
通过接口 setAudioFrameListener 设置本地音频帧监听,通过回调函数接收编码前的音频数据