发布自定义流
用户可自定义视频流,通过发布资源方法发布到房间中。远端用户可使用订阅方法订阅此自定义视频流。
-
创建本地渲染视图。
// 创建本地渲染视图
RCRTCVideoView *localFileVideoView = [[RCRTCVideoView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
localFileVideoView.fillMode = RCRTCVideoFillModeAspectFit;
localFileVideoView.frameAnimated = NO;
[self.view addSubview:localFileVideoView]; -
创建自定义视频流配置 RCRTCVideoStreamConfig。
// 设置自定义视频流配置
RCRTCVideoStreamConfig *videoConfig = [[RCRTCVideoStreamConfig alloc]init];
videoConfig.videoSizePreset = RCRTCVideoSizePreset720x480; -
调用 createFileVideoOutputStream 创建一个自定义视频流 RCRTCFileVideoOutputStream 对象,并自定义 tag。支持自行选择是否在本端播放音频,是否要用文件中的音频替换麦克风数据。
注意,tag 不能包含
_
和RongCloudRTC
。// 创建自定义视频流
NSString *path = [[NSBundle mainBundle] pathForResource:@"video_demo1_low"
ofType:@"mp4"];
NSString *tag = @"RongRTCFileVideo";
RCRTCFileVideoOutputStream *fileVideoOutputStream = [[RCRTCEngine sharedInstance] createFileVideoOutputStream:path
replaceAudio:NO
playback:YES
tag:tag
config:videoConfig]; -
渲染自定义视频流。
// 渲染自定义视频流
[fileVideoOutputStream setVideoView:localFileVideoView];
fileVideoOutputStream.delegate = self; -
使用加入房间成功后返回的 RCRTCRoom 对象中的 RCRTCLocalUser 中的方法发布。
会议模式下,需要使用 publishStream 方法
// 会议模式下,发布自定义视频流
[[RCRTCEngine sharedInstance].room.localUser publishStream:fileVideoOutputStream
completion:^(BOOL isSuccess, RCRTCCode code) {
}];直播模式下,需要使用 publishLiveStream 方法
// 直播模式下,发布自定义视频流
[[RCRTCEngine sharedInstance].room.localUser publishLiveStream:fileVideoOutputStream
completion:^(BOOL isSuccess, RCRTCCode code, RCRTCLiveInfo * _Nullable liveInfo) {
if (code == RCRTCCodeSuccess) {
}
}];