跳到主要内容

发布自定义流

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

  1. 创建本地渲染视图。

    // 创建本地渲染视图
    RCRTCVideoView *localFileVideoView = [[RCRTCVideoView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
    localFileVideoView.fillMode = RCRTCVideoFillModeAspectFit;
    localFileVideoView.frameAnimated = NO;
    [self.view addSubview:localFileVideoView];
  2. 创建自定义视频流配置 RCRTCVideoStreamConfig

    // 设置自定义视频流配置
    RCRTCVideoStreamConfig *videoConfig = [[RCRTCVideoStreamConfig alloc]init];
    videoConfig.videoSizePreset = RCRTCVideoSizePreset720x480;
  3. 调用 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];
  4. 渲染自定义视频流。

    // 渲染自定义视频流
    [fileVideoOutputStream setVideoView:localFileVideoView];
    fileVideoOutputStream.delegate = self;
  5. 使用加入房间成功后返回的 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) {

    }
    }];