发布自定义资源
提示
在 Android 平台至少需要调用 publish(RCRTCMediaType.AudioVideo) 或 publish(RCRTCMediaType.Audio) 方法发布成功音频资源后,再发布自定义视频流才有效。tag 不能包含 _ 和 RongCloudRTC 字符。
创建自定义视频资源
从本地目录下的资源文件创建自定义视频资源,path 需要是平台绝对路径,tag 为自定义视频标识。
方法
JavaScript
rtcEngine.createCustomStreamFromFile(path, tag);
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | String | 是 | 本地资源文件的绝对路径 |
| tag | String | 是 | 自定义视频标识,不能包含 _ 和 RongCloudRTC 字符 |
示例代码
JavaScript
rtcEngine.createCustomStreamFromFile(path, tag);
console.log('自定义视频资源创建完成');
设置自定义视频属性
方法
JavaScript
rtcEngine.setCustomStreamVideoConfig(tag, config);
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| tag | String | 是 | 自定义视频标识 |
| config | RCRTCVideoConfig | 是 | 视频配置参数 |
示例代码
JavaScript
let config = {
minBitrate: 500,
maxBitrate: 2200,
fps: RCRTCVideoFps.Fps25,
resolution: RCRTCVideoResolution.Resolution_720x1280,
};
rtcEngine.setCustomStreamVideoConfig(tag, config);
console.log('自定义视频属性设置完成');
设置自定义视频资源预览窗口
导入预览窗口组件
方法
JavaScript
import RCReactNativeRtcView from '@rongcloud/react-native-rtc';
示例代码
JavaScript
// 导入 RCReactNativeRtcView
import RCReactNativeRtcView from '@rongcloud/react-native-rtc';
console.log('预览窗口组件导入成功');
添加预览窗口并获取viewTag
方法
JavaScript
<RCReactNativeRtcView
ref={(ref) => {
let viewTag = findNodeHandle(ref);
}}
fitType={RCRTCViewFitType.Center}
mirror={true}>
</RCReactNativeRtcView>
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| fitType | RCRTCViewFitType | 否 | 视频填充模式 |
| mirror | Boolean | 否 | 视频是否镜像显示 |
示例代码
JavaScript
// 增加 RCReactNativeRtcView 组件, fitType: 视频填充模式, mirror: 视频是否镜像显示。并在ref中获取viewTag
<RCReactNativeRtcView
ref={(ref) => {
let viewTag = findNodeHandle(ref);
console.log('获取到预览窗口 viewTag:', viewTag);
}}
fitType={RCRTCViewFitType.Center}
mirror={true}>
</RCReactNativeRtcView>
设置预览窗口
方法
JavaScript
rtcEngine.setLocalCustomStreamView(tag, viewTag);
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| tag | String | 是 | 自定义视频标识 |
| viewTag | Number | 是 | 预览窗口的 viewTag |
示例代码
JavaScript
// 设置预览窗口,viewTag为上一步获取的 viewTag
rtcEngine.setLocalCustomStreamView(tag, viewTag).then(code => {
if (code === 0) {
// 设置成功
console.log('自定义视频预览窗口设置成功');
} else {
// 设置失败
console.log('自定义视频预览窗口设置失败');
}
});
发布自定义视频资源
方法
JavaScript
rtcEngine.publishCustomStream(tag);
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| tag | String | 是 | 自定义视频标识 |
示例代码
JavaScript
rtcEngine.publishCustomStream(tag);
console.log('自定义视频资源发布请求已发送');
设置远端自定义视频资源发布监听
方法
JavaScript
rtcEngine.setOnRemoteCustomStreamPublishedListener(callback);
回调参数
| 参数 | 类型 | 说明 |
|---|---|---|
| roomId | String | 房间 ID |
| userId | String | 远端用户 ID |
| tag | String | 远端自定义视频资源 tag |
| type | RCRTCMediaType | 资源类型 |
示例代码
JavaScript
rtcEngine.setOnRemoteCustomStreamPublishedListener((roomId, userId, tag, type) => {
console.log('远端自定义视频资源发布:', userId, tag, type);
});
订阅远端自定义视频资源
方法
JavaScript
rtcEngine.subscribeCustomStream(userId, tag);
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| userId | String | 是 | 远端用户 ID |
| tag | String | 是 | 自定义视频标识 |
示例代码
JavaScript
rtcEngine.subscribeCustomStream(userId, tag);
console.log('订阅远端自定义视频资源');
设置远端自定义视频资源预览窗口
方法
JavaScript
rtcEngine.setRemoteCustomStreamView(userId, tag, viewTag);
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| userId | String | 是 | 远端用户 ID |
| tag | String | 是 | 自定义视频标识 |
| viewTag | Number | 是 | 预览窗口的 viewTag |
示例代码
JavaScript
// 设置预览窗口,viewTag参考setLocalCustomStreamView说明
rtcEngine.setRemoteCustomStreamView(userId, tag, viewTag).then(code => {
if (code === 0) {
// 设置成功
console.log('远端自定义视频预览窗口设置成功');
} else {
// 设置失败
console.log('远端自定义视频预览窗口设置失败');
}
});