通过输入在线媒体流功能,您可以在服务端将一个第三方在线媒体流(如直播 RTMP 流、点播 HLS 视频等)拉取并输入到指定的 RTC 房间。为了让房间内的用户能够发现并订阅这个媒体流,系统会使用您发起任务时指定的 ID 创建一个“虚拟用户”。该媒体流会作为这个虚拟用户的音视频流进行发布,房间内的其他用户只需像订阅普通用户一样订阅这个虚拟用户,即可观看媒体流内容,实现一起看赛事、共享直播、音乐电台等多种互动场景。本文将介绍如何快速接入并使用在线媒体流功能。
典型应用场景如下:
已经集成 RTC SDK,实现了基本的音视频通话。
开启服务与配置回调。
在服务端发起任务。
在您的业务后台,调用 StartRelayStream 启动一个在线媒体流输入任务。注意以下参数:
UserId
:需要你自定义。发起任务后,服务端会用该 ID 作为虚拟用户的身份加入 RTC 房间,客户端也可通过此 ID 订阅该流。Token
:客户端与业务服务端进行通讯时的身份认证凭证,需要你自己基于 RoomId 和 UserId 生成。Token 生成方法,请参见使用 Token 完成鉴权。该接口是一个异步接口。调用成功仅代表“任务已提交”,任务的最终执行结果请依赖第 1 步配置的回调来判断。
请求示例:以在房间中循环播放一个点播 MP4 视频为例
{ "AppId": "661e****543cf", // 必填,替换为实际应用 AppId "RoomId": "meeting_room_9527", // 必填,替换为媒体流要输入的目标房间 ID "TaskId": "task_promo_video_01", // 必填,自定义任务标识,用于后续的更新或停止 "UserId": "Your_UserId", // 必填,替换为你自定义的媒体流的“虚拟用户” ID "Token": "001661e****543cf80", // 必填,为上述 UserId 和 RoomId 生成的有效 Token "MaxIdleTime": 300, // 任务空闲超时时间(秒),超过此时间后,任务自动终止 "Control": { "StreamUrl": "https://example.com/product_intro.mp4", // 替换为目标的在线流媒体地址 "StreamMode": 0, // 流处理模式: 0-转码,1-转封装 "Loop": true, // 是否循环播放,源流为点播流时才生效 // --- 以下为转码参数 (当 StreamMode 为 0 时生效) --- "VideoWidth": 1280, "VideoHeight": 720, "FrameRate": 25, "Bitrate": 1500 } }
在客户端监听 onUserPublishStream
,接收在线媒体流进房、发布等状态。
当回调触发时,可通过检查参数
uid
是否为第 2 步中指定的userId
。如果是,则为服务端输入的在线媒体流。onUserPublishStream
具体说明,请参见平台的回调文档。