输入在线媒体流

最近更新时间: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

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

    输入媒体流成功后,该媒体流会在直播频道内自动播放,频道内所有用户都会收到 onUserJoined(uid: share666) 回调,输入媒体流的主播同时还会收到 onStreamInjectedStatus 回调。

    如果输入媒体流失败,查阅 API 参考排查问题。

  2. 频道内主播调用 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 参考

开发注意事项

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