You need to enable JavaScript to run this app.
导航
输入在线媒体流
最近更新时间:2025.06.24 17:06:02首次发布时间:2025.06.24 17:06:02
我的收藏
有用
有用
无用
无用

通过输入在线媒体流功能,您可以在服务端将一个第三方在线媒体流(如直播 RTMP 流、点播 HLS 视频等)拉取并输入到指定的 RTC 房间。为了让房间内的用户能够发现并订阅这个媒体流,系统会使用您发起任务时指定的 ID 创建一个“虚拟用户”。该媒体流会作为这个虚拟用户的音视频流进行发布,房间内的其他用户只需像订阅普通用户一样订阅这个虚拟用户,即可观看媒体流内容,实现一起看赛事、共享直播、音乐电台等多种互动场景。本文将介绍如何快速接入并使用在线媒体流功能。

alt

应用场景

典型应用场景如下:

  • 一起看:在语聊房或视频房中,同步播放电影、短剧或体育赛事直播。
  • 直播内容共享:将第三方平台的活动直播嵌入到在线会议或互动课堂中。
  • 背景氛围:为房间持续播放背景音乐,或模拟一个 24 小时音乐电台。

使用限制

  • 待输入线媒体流格式要求:HLS、RTMP、MP4、FLV、DASH、TS。
  • 编码格式要求:
    • 视频编码:H.264、ByteVC1。
    • 纯音频编码:AAC、Opus。
  • 如源流为海外地址,为保障最佳体验,建议联系技术支持获取网络优化方案。

快速使用

前提条件

已经集成 RTC SDK,实现了基本的音视频通话

操作步骤

  1. 开启服务与配置回调。

    1. 访问 RTC 控制台_功能配置,选择目标房间所属的应用(即 AppId)。
    2. 单击在线媒体流页签,启用在线媒体流服务。
    3. (推荐)配置任务回调,获取在线媒体流任务执行结果(如成功、失败、结束)。
      单击回调设置页签,单击添加配置,按照界面提示设置回调事件、URL、密钥等。
  2. 在服务端发起任务。
    在您的业务后台,调用 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
        }
    }
    
  3. 在客户端监听 onUserPublishStream,接收在线媒体流进房、发布等状态。

    当回调触发时,可通过检查参数 uid 是否为第 2 步中指定的 userId。如果是,则为服务端输入的在线媒体流。onUserPublishStream 具体说明,请参见平台的回调文档

更多操作

  • 更新在线媒体流输入:调用 UpdateRelayStream 对已设定的媒体流参数进行更新。
  • 停止在线媒体流输入:调用 StopRelayStream 主动终止正在推送的在线媒体流。
  • 查询输入媒体流任务:调用 ListRelayStream 获取特定房间内所有在线媒体流的任务列表。