跳到主要内容

发布自定义流

您可以创建自定义视频流,通过发布资源方法发布到房间中。远端用户可使用订阅方法订阅此自定义视频流。

实现流程

1. 创建本地渲染视图

首先创建一个用于渲染自定义视频流的视图对象。

Objective C
#import <RongRTCLib/RongRTCLib.h>

// 创建本地渲染视图
RCRTCVideoView *localFileVideoView = [[RCRTCVideoView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
localFileVideoView.fillMode = RCRTCVideoFillModeAspectFit;
localFileVideoView.frameAnimated = NO;
[self.view addSubview:localFileVideoView];

2. 创建视频流配置

创建自定义视频流配置 RCRTCVideoStreamConfig 对象,设置视频参数。

Objective C
#import <RongRTCLib/RongRTCLib.h>

// 创建自定义视频流配置
RCRTCVideoStreamConfig *videoConfig = [[RCRTCVideoStreamConfig alloc] init];
videoConfig.videoSizePreset = RCRTCVideoSizePreset720x480;

3. 创建自定义视频流

调用 createFileVideoOutputStream 创建一个自定义视频流 RCRTCFileVideoOutputStream 对象。

接口原型

Objective C
- (RCRTCFileVideoOutputStream *)createFileVideoOutputStream:(NSString *)path
replaceAudio:(BOOL)replaceAudio
playback:(BOOL)playback
tag:(NSString *)tag
config:(RCRTCVideoStreamConfig *)config;

参数说明

参数类型是否必填说明
pathNSString *视频文件路径
replaceAudioBOOL是否用文件中的音频替换麦克风数据
playbackBOOL是否在本端播放音频
tagNSString *自定义标识,不能包含 _RongCloudRTC
configRCRTCVideoStreamConfig视频流配置对象

返回值

返回创建的 RCRTCFileVideoOutputStream 对象。

代码示例

Objective C
#import <RongRTCLib/RongRTCLib.h>

// 获取视频文件路径
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];
提示

tag 不能包含 _RongCloudRTC 字符串。

4. 渲染自定义视频流

将创建的自定义视频流绑定到渲染视图,并设置代理。

Objective C
#import <RongRTCLib/RongRTCLib.h>

// 设置渲染视图
[fileVideoOutputStream setVideoView:localFileVideoView];

// 设置代理(可选)
fileVideoOutputStream.delegate = self;

5. 发布自定义视频流

使用加入房间成功后返回的 RCRTCRoom 对象中的 RCRTCLocalUser 发布自定义视频流。

会议模式

会议模式下,使用 publishStream 方法发布自定义视频流。

接口原型
Objective C
- (void)publishStream:(nullable RCRTCOutputStream *)stream completion:(nullable RCRTCOperationCallback)completion;
参数说明
参数类型是否必填说明
streamRCRTCOutputStream *媒体流对象
completionRCRTCOperationCallback结果回调
代码示例
Objective C
#import <RongRTCLib/RongRTCLib.h>

// 会议模式下,发布自定义视频流
[[RCRTCEngine sharedInstance].room.localUser publishStream:fileVideoOutputStream
completion:^(BOOL isSuccess, RCRTCCode code) {

}];

直播模式

直播模式下,使用 publishLiveStream 方法发布自定义视频流。

接口原型
Objective C
- (void)publishLiveStream:(nullable RCRTCOutputStream *)stream completion:(nullable RCRTCLiveOperationCallback)completion;
参数说明
参数类型是否必填说明
streamRCRTCOutputStream *媒体流对象
completionRCRTCLiveOperationCallback结果回调
代码示例
Objective C
#import <RongRTCLib/RongRTCLib.h>

// 直播模式下,发布自定义视频流
[[RCRTCEngine sharedInstance].room.localUser publishLiveStream:fileVideoOutputStream
completion:^(BOOL isSuccess, RCRTCCode code, RCRTCLiveInfo * _Nullable liveInfo) {

}];