输入在线媒体流

最近更新时间:2022-09-20 05:17:40

功能描述

输入在线媒体流功能是将一路媒体流(可以是直播源(hls、m3u8、RTMP 、RTSP),也可以是录播的媒体文件(mp4,m3u8))作为一个发送端用户进入当前的频道,频道内的用户可以一起接听/观看该媒体流并实施互动。

使用场景

  • 赛事直播中,主播直接拉比赛的音视频流,实现主播和观众边看比赛边点评的功能。
  • 同一直播间内,主播与观众一同欣赏电影、音乐、演出,并实时交流讨论。
  • 无人机或网络摄像头直接采集视频,该视频作为在线媒体流输入直播频道中。

工作原理

输入在线媒体流

主播调用addInjectStreamUrl方法将媒体流拉到 anyRTC GT-RTN 中,经过转码输入到直播频道中。

  • 频道内的用户都可以听/看到该媒体流。
  • 如果主播开启了 CDN 旁路推流,该媒体流也会被推送到 CDN 上, CDN 观众就可以听/看到这路媒体流。

频道内同一时间只允许输入一个在线媒体流。

支持的编码格式:音频 AAC,视频 H.264。

纯音频流也可作为在线媒体流输入直播频道。

只有主播可以输入/删除在线媒体流,普通观众和 CDN 观众都不可以。

实现方法

操作步骤

  1. 频道内主播调用 addInjectStreamUrl 方法向直播频道内输入指定在线媒体流。你也可以修改 config 的参数设置媒体流输入的分辨率、码率和帧率等参数,详见 InjectStreamConfig

    频道内同一时间只允许输入一个在线媒体流。

    输入媒体流成功后,该媒体流会在直播频道内自动播放,频道内所有用户都会收到 ArRTCClient.on("user-published")ArRTCClient.on("user-joined") 回调。

  2. 频道内主播调用 removeInjectStreamUrl 方法从直播频道内删除指定的已输入在线媒体流。

    删除媒体流成功后,频道内所有用户都会收到 ArRTCClient.on("user-left")ArRTCClient.on("user-unpublished") 回调。

    主播退出频道后,无需再调用 removeInjectStreamUrl 接口。

示例代码

const injectStreamConfig = {
  width: 0,
  height: 0,
  videoGop: 30,
  videoFramerate: 15,
  videoBitrate: 400,
  audioSampleRate: 44100,
  audioChannels: 1,
};
// 输入在线媒体流
rtcClient.addInjectStreamUrl('<URL>', injectStreamConfig).then(() => {
  console.log("add inject stream url success");
}).catch(e => {
  console.log("add inject stream failed", e);
});

// 删除在线媒体流
rtcClient.removeInjectStreamUrl().then(() => {
  console.log("remove inject stream url success");
}).catch(e => {
  console.log("remove inject stream failed", e);
});

API 参考

  • addInjectStreamUrl
  • removeInjectStreamUrl

开发注意事项

  • 频道内同一时间只允许输入一个在线媒体流。
  • 只有主播用户才能调用输入在线媒体流功能。