功能描述
输入在线媒体流功能是将一路媒体流(可以是直播源(hls、m3u8、RTMP 、RTSP),也可以是录播的媒体文件(mp4,m3u8))作为一个发送端用户进入当前的频道,频道内的用户可以一起接听/观看该媒体流并实施互动。
使用场景
- 赛事直播中,主播直接拉比赛的音视频流,实现主播和观众边看比赛边点评的功能。
- 同一直播间内,主播与观众一同欣赏电影、音乐、演出,并实时交流讨论。
- 无人机或网络摄像头直接采集视频,该视频作为在线媒体流输入直播频道中。
工作原理
主播调用addInjectStreamUrl
方法将媒体流拉到 anyRTC GT-RTN 中,经过转码输入到直播频道中。
- 频道内的用户都可以听/看到该媒体流。
- 如果主播开启了 CDN 旁路推流,该媒体流也会被推送到 CDN 上, CDN 观众就可以听/看到这路媒体流。
频道内同一时间只允许输入一个在线媒体流。
支持的编码格式:音频 AAC,视频 H.264。
纯音频流也可作为在线媒体流输入直播频道。
只有主播可以输入/删除在线媒体流,普通观众和 CDN 观众都不可以。
实现方法
在实现输入在线媒体流功能前,请确保已实现基本的音视频功能。
请确保已开通旁路推流的功能。
操作步骤
-
频道内主播调用
addInjectStreamUrl
方法向直播频道内输入指定在线媒体流。你也可以修改 config 的参数设置媒体流输入的分辨率、码率和帧率等参数,详见InjectStreamConfig
。频道内同一时间只允许输入一个在线媒体流。
输入媒体流成功后,该媒体流会在直播频道内自动播放,频道内所有用户都会收到
onUserJoined(uid: share666)
回调,输入媒体流的主播同时还会收到onStreamInjectedStatus
回调。如果输入媒体流失败,查阅 API 参考排查问题。
-
频道内主播调用
removeInjectStreamUrl
方法从直播频道内删除指定的已输入在线媒体流。删除媒体流成功后,频道内所有用户都会收到
onUserOffline(uid: share666)
回调。主播退出频道后,无需再调用
removeInjectStreamUrl
接口。
示例代码
// 输入在线媒体流
String urlPath = "url"
LiveInjectStreamConfig config = new LiveInjectStreamConfig();
config.width = 0;
config.height = 0;
config.videoGop = 30;
config.videoFramerate = 15;
config.videoBitrate = 400;
config.audioSampleRate = LiveInjectStreamConfig.AudioSampleRateType.TYPE_48000;
config.audioBitrate = 48;
config.audioChannels = 1;
rtcEngine.addInjectStreamUrl(urlPath, config);
// 删除在线媒体流
String urlPath = "The same online RTMP/HLS url path added before"
rtcEngine.removeInjectStreamUrl(urlPath)
API 参考
开发注意事项
- 频道内同一时间只允许输入一个在线媒体流。
- 只有主播用户才能调用输入在线媒体流功能。