输入在线媒体流功能可以将音视频流作为一个发送端输入正在进行的直播房间。通过将正在播放的音视频输入到直播频道中,主播和观众可以一起收听/观看该媒体流并实时互动。
直播频道中的主播通过 Video Inject 服务器将在线媒体流拉到 Agora SD-RTN 中,输入到直播频道内。
在实现输入在线媒体流功能前,请确保你已在项目中完成基本的实时音视频功能。详见开始互动直播。
请确保已开通旁路推流的功能,详见前提条件。
参考如下步骤,在你的项目中实现输入在线媒体流功能:
频道内主播调用 addInjectStreamUrl
方法向直播频道内输入指定在线媒体流。你也可以修改 config 的参数设置媒体流输入的分辨率、码率和帧率等参数,详见InjectStreamConfig
。
频道内同一时间只允许输入一路在线媒体流。
输入媒体流成功后,该媒体流会在直播频道内自动播放,频道内所有用户都会收到 Client.on("stream-added")
和 Client.on("peer-online")
回调,输入媒体流的主播同时还会收到 Client.on("streamInjectedStatus")
回调。
如果输入媒体流失败,查阅 API 文档排查问题。
频道内主播调用 removeInjectStreamUrl
方法从直播频道内删除指定的已输入在线媒体流。
删除媒体流成功后,频道内所有用户都会收到 Client.on("peer-leave")
和 Client.on("stream-removed")
回调。
主播退出频道后,无需再调用
removeInjectStreamUrl
接口。
// JavaScript
// 输入在线媒体流
var InjectStreamConfig = {
width: 0,
height: 0,
videoGop: 30,
videoFramerate: 15,
videoBitrate: 400,
audioSampleRate: 44100,
audioChannels: 1,
};
Client.addInjectStreamUrl(url, config);
// 删除在线媒体流
Client.removeInjectStreamUrl(url);
同时,我们在 GitHub 提供一个开源的 Live-Streaming-Injection 示例项目。你也可以在线体验我们的输入在线媒体流功能。
主播在直播过程中启用输入在线媒体流时,观众需要订阅主播才能观看外部视频。