输入在线媒体流功能可以将音视频流作为一个发送端输入正在进行的直播房间。通过将正在播放的音视频输入到直播频道中,主播和观众可以一起收听和观看该媒体流并实时互动。
直播频道中的主播通过 Video Inject 服务器将在线媒体流拉到 Agora SD-RTN™ 中,输入到直播频道内。
开始前,请确保你已参考快速开始在你的项目中实现基本的实时音视频功能。
请确保已开通旁路推流的功能,详见前提条件。
参考如下步骤,在你的项目中实现输入在线媒体流功能:
频道内主播调用 AgoraRTCClient.addInjectStreamUrl
方法向直播频道内输入指定在线媒体流。你也可以修改 config
的参数设置媒体流输入的分辨率、码率和帧率等参数,详见 InjectStreamConfig。
- 频道内同一时间只允许输入一路在线媒体流。
- 输入媒体流成功后,该媒体流会在直播频道内自动播放,频道内所有用户都会收到
AgoraRTCClient.on("user-joined")
和AgoraRTCClient.on("user-published")
回调。
频道内主播调用 AgoraRTCClient.removeInjectStreamUrl
方法从直播频道内删除指定的已输入在线媒体流。
- 删除媒体流成功后,频道内所有用户都会收到
AgoraRTCClient.on("user-unpublished")
和AgoraRTCClient.on("user-left")
回调。- 主播退出频道后,无需再调用
removeInjectStreamUrl
接口。
以下示例代码中的 client
是指通过 AgoraRTC.createClient
创建的本地客户端对象。
const injectStreamConfig = {
width: 0,
height: 0,
videoGop: 30,
videoFramerate: 15,
videoBitrate: 400,
audioSampleRate: 44100,
audioChannels: 1,
};
// 开始输入在线媒体流。
client.addInjectStreamUrl("<YOUR URL>", injectStreamConfig).then(() => {
console.log("add inject stream url success");
}).catch(e => {
console.log("add inject stream failed", e);
});
client.removeInjectStreamUrl().then(() => {
console.log("remove inject stream url success");
}).catch(e => {
console.log("remove inject stream failed", e);
});
主播在直播过程中启用输入在线媒体流时,观众需要订阅主播才能观看外部视频。