Android/iOS:通过流混合改善实时流媒体体验

Posted 小陈乱敲代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android/iOS:通过流混合改善实时流媒体体验相关的知识,希望对你有一定的参考价值。

通过流混合改善实时流媒体体验

流混合是一种在云端将多个音频或视频流组合成一个流的技术。广泛应用于直播、在线教育、直播间等场景。

开发者可以通过播放混流来查看屏幕并听到房间内所有成员的声音,而不需要管理房间中的每个流。

流混合的好处

由于对开发人员的以下好处,流混合可以广泛应用于音频和视频领域。

1. 低成本

在大型直播或在线教育场景中,如果多方在一个房间内共同主持,房间内的所有用户都需要播放多个流。

使用混流技术,只需要播放一个流。

即在两方共同托管的情况下,成本可以降低一半。在多方共同托管的情况下,可以降低成本(n - 1)/n。

如果使用审查机制,例如淫秽内容审核,还可以降低成本,(n - 1)/n因为只需要审查一个流的图像。

2.简单的代码逻辑

当多台主播合流使用混流时,无需播放和渲染多条流,观众只需播放混流并渲染即可。

3.不同平台之间轻松转发

在没有混流的情况下,我们无法在多方托管场景中将直播转发到个个直播平台,因为这些平台只有一个 RTMP 地址,我们无法将多个流转发到一个地址。

4. 移动客户端网页浏览器支持的多方共同托管

对于 iPhone 用户,Safari 不支持同时播放多个音频文件。播放多个流时,只能播放一个流。流混合可以解决这个问题。

由于手机性能和浏览器性能的限制,手机上的大部分网页浏览器一般最多可以播放四个流。

使用流混合技术,可以播放的最大流数显着增加,而无需额外的带宽或性能消耗。

什么是流混合

如下图所示,当房间内多个用户发布流时,服务器根据布局配置将两个流合并为一个流。观众播放混流观看用户A和用户B的屏幕。

流混合实现

1.流混合过程

  1. 服务器侦听房间中的流变化。
  2. 客户端上的主机发布流。
  3. 当服务器检测到第一个新流时,它开始进行流混合。
  4. 共同托管开始发布流。
  5. 服务器检测流添加并更新流混合布局配置。
  6. 共同主办停止。
  7. 服务器检测流减少并更新流混合布局配置。
  8. 房间解散,混流任务停止。

2.客户端逻辑

客户端不需要管理流混合逻辑。

只需要根据是否需要发布流来决定是播放原始流还是混合流,如下图所示。

3.服务器逻辑

服务器需要监听房间内的流变化,并在添加或减少流时更新流混合配置。

根据需求,布局配置随流的数量而变化。当流数为0时,需要停止混流。

4.布局配置

ZEGOCLOUD 提供了一个布局配置 API。开发者只需要设置每个流的位置和大小。以下示例显示了一些示例代码。

在以下示例中,视频屏幕布局的分辨率设置为 360 × 640。

布局1:并排的两个视图

布局 2:垂直平铺的四个视图

布局 3:一个大视图平铺,两个小视图暂停


输入流的层级由输入流在输入流列表中的位置决定。列表中的顺序越靠后,层级越高。

如下代码所示,输入流 2 和输入流 3 的层比输入流 1 的层高,所以流 2 和 3 悬停在输入流 1 的屏幕上。

你可知道?👏

**Like**, **Follow**, **share** is the biggest encouragement to me

**Follow me** to learn more technical knowledge

Thank you for reading :)

以上是关于Android/iOS:通过流混合改善实时流媒体体验的主要内容,如果未能解决你的问题,请参考以下文章

如何将多个 WebRTC 媒体流(屏幕捕获 + 网络摄像头)混合/组合成一个流?

Nginx-rtmp 直播媒体实时流实现

数字硬盘录像机接入GB28181流媒体服务(LiveGBS)设备录像实时查询

使用HLS协议连接nginx实现近实时流方式播放视频

实时音频流到移动设备 - 动态播放速度

将 FMS RTMP 直播流转换为 BlackBerry 的 RTSP