4.x SDK 音视频通话与本地录制冲突

发布时间: 2022-01-06 16:49

回答:

相机和麦克风的使用属于系统级别的,不同的设备对系统的占用逻辑判断也不一样,而且多数设备是不允许同时两个部分使用相机和麦克风的。 


要在通话过程中进行本地的视频录制,一般是两种方式: 


1. 由融云 SDK 负责音视频数据的采集,然后 APP 层通过注册音频和视频原始数据的回调,拿到音频 PCM 和视频 YUV (或是纹理 ID) 数据,然后录像。 


在 RongCallClient 中,

/**

 * 注册本地视频流上报监听

 *

 * 用于处理视频通话中的视频数据。请在 connect 成功之后设置,

 * 回调返回数据类型通过在接听或拨打前的参数设置控制,如下:

 * 

 * RCRTCConfig.Builder config=RCRTCConfig.Builder.create().enableEncoderTexture(true);

 * RongCallClient.getInstance().setRTCConfig(config);

 * 

 * @param listener 视频数据回调

 * @group 代理

 * @see IVideoFrameListener

 * @see RCRTCConfig.Builder#enableEncoderTexture(boolean)

 */

public void registerVideoFrameListener(IVideoFrameListener listener)


/**

 * 本地音频流上报监听

 *

 * 用于处理通话中的音频数据。请在connect成功之后设置

 *

 * @param listener 音频数据回调

 * @group 代理

 * @see IRCRTCAudioDataListener

 */

public void registerAudioFrameListener(IRCRTCAudioDataListener listener)


registerAudioFrameListener 这个回调是设备录音后的音频 pcm 流数据,是设备采集后的数据。

registerVideoFrameListener 这个是摄像头采集后的数据,开发者只负责把这部分数据录制到本地就可以。 


2. 由 APP 层负责音视频数据采集,然后通过发布自定义视频的方式把音视频数据分别通过接口发送给融云 SDK。第二种方法用 RTCLib 实现,cn.rongcloud.rtc.api.stream.RCRTCFileVideoOutputStream。SDK 暂时不支持远端录制。云端录制请参考服务端文档:https://doc.rongcloud.cn/rtcserver/-/-/record/guide