功能描述
输入在线媒体流功能是将一路媒体流(可以是直播源(hls、m3u8、RTMP 、RTSP),也可以是录播的媒体文件(mp4,m3u8))作为一个发送端用户进入当前的频道,频道内的用户可以一起接听/观看该媒体流并实施互动。
使用场景
- 赛事直播中,主播直接拉比赛的音视频流,实现主播和观众边看比赛边点评的功能。
- 同一直播间内,主播与观众一同欣赏电影、音乐、演出,并实时交流讨论。
- 无人机或网络摄像头直接采集视频,该视频作为在线媒体流输入直播频道中。
工作原理
主播调用addInjectStreamUrl
方法将媒体流拉到 anyRTC GT-RTN 中,经过转码输入到直播频道中。
- 频道内的用户都可以听/看到该媒体流。
- 如果主播开启了 CDN 旁路推流,该媒体流也会被推送到 CDN 上, CDN 观众就可以听/看到这路媒体流。
频道内同一时间只允许输入一个在线媒体流。
支持的编码格式:音频 AAC,视频 H.264。
纯音频流也可作为在线媒体流输入直播频道。
只有主播可以输入/删除在线媒体流,普通观众和 CDN 观众都不可以。
实现方法
操作步骤
-
频道内主播调用
addInjectStreamUrl
方法向直播频道内输入指定在线媒体流。你也可以修改config
的参数设置媒体流输入的分辨率、码率和帧率等参数,详见InjectStreamConfig
。频道内同一时间只允许输入一个在线媒体流。
输入媒体流成功后,该媒体流会在直播频道内自动播放,频道内所有用户都会收到 ArRTCClient.on("user-published") 和 ArRTCClient.on("user-joined") 回调。
-
频道内主播调用
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
开发注意事项
- 频道内同一时间只允许输入一个在线媒体流。
- 只有主播用户才能调用输入在线媒体流功能。