在多人音视频聊天中插入现场直播

2021-04-09  本文已影响0人  anyRTC

如何在聊天中插入现场直播呢?

今天我就教给大家怎样在我们的聊天中插入现场直播。(本文聊天以多人音视频为例)

首先,我们要知道现场直播是什么呢?

它是通过流媒体技术来实现实时在线播放

什么是流媒体呢?

随着互联网的迅猛发展与普及以及直播的崛起,我们对音视频服务的需求越来越高,并催生了流媒体(Streaming Media)技术。

是指将一连串的媒体数据压缩后,以流的方式在网络中分段传送,实现在网络上实时传输影音以供观赏的一种技术。

流媒体实际指的是一种新的媒体传送方式,有声音流、视频流、文本流、图像流、动画流等,而非一种新的媒体。被广泛用于在线直播、视频点播、远程教育、网络电台等互联网信息服务的方方面面,对我们的生活、工作产生了深远的影响

接下来,如何实现聊天呢?

使用 web RTC 等原生方法实现音视频聊天。哈哈,相信大家都没有那个精力!所以建议使用专业级提供音视频服务的企业—— anyRTC。

anyRTC 提供 web,微信小程序,flutter,ios, android,windows 等平台的 RTC SDK,本文将以 web 端为例,来实现聊天以及插入直播(其它端也可以实现哟)

引入 anyRTC 音视频相关服务

使用 anyRTC 实现多人音视频

/* 创建本地客户端 rtcClient 的实例 */
const rtcClient = ArRTC.createClient({ mode: "live", codec: "h264" }); 

/* 监听 anyRTC 服务回调 */
// 远端用户发布音视频
rtcClient.on("user-published",async (user, mediaType) => {
  // 订阅远端用户发布的音视频轨道
  await rtcClient.subscribe(user, mediaType); 
    if (mediaType === 'video') {
        // 播放远端视频到指定窗口
        user.videoTrack.play("<ELEMENT_ID>"); 
    } else if (mediaType === 'audio') {
        // 播放远端音频
        user.audioTrack.play(); 
    }
});
// 远端用户取消发布音视频
rtcClient.on("user-unpublished",async (user, mediaType) => {
  // 清除视图
  ...
});
// 用户加入频道成功
rtcClient.on("user-joined", (user) => {
 console.log("用户加入频道" + user.uid);
 ...
});
// 远端用户离开频道
rtcClient.on("user-left", (user) => {
 console.log("远端用户离开频道" + user.uid);
 // 清除离开用户的视图
 ...
});
// 当前在线媒体流状态
rtcClient.on("stream-inject-status", (status, uid, url) => {
  // 状态 status
  console.log("用户"+ uid +"地址"+ url+"状态"+status);
})
参数 含义 选择
appid 复制的 appid 必填
channel 频道名称(符合限制的字符串) 必填
token 更安全的鉴权(项目上线建议开启) 必填(可设为 null)
uid 本地用户(符合限制的字符串) 选填(可以不填,anyRTC 会自动分配)
 rtcClient.join(appid, channel, token, uid).then((uid) => { });
rtcClient.leave();
// 释放音视频采集设备
videoTrack && videoTrack.close();
audioTrack && audioTrack.close();

插入现场直播

// 直播地址
const url = "rtmp://58.200.131.2:1935/livetv/hunantv";
// 配置
const injectStreamConfig = {
      width: 0,
      height: 0,
      videoGop: 30,
      videoFramerate: 100,
      videoBitrate: 3500,
      audioSampleRate: 44100,
      audioChannels: 1,
  };
rtcClient.addInjectStreamUrl(url,injectStreamConfig)

以上便是如何在多人音视频聊天中插入现场直播的介绍,希望能对各位开发者有所帮助。

上一篇 下一篇

猜你喜欢

热点阅读