Android/iOS:通过流混合改善实时流媒体体验
Posted 小陈乱敲代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android/iOS:通过流混合改善实时流媒体体验相关的知识,希望对你有一定的参考价值。
通过流混合改善实时流媒体体验
流混合是一种在云端将多个音频或视频流组合成一个流的技术。广泛应用于直播、在线教育、直播间等场景。
开发者可以通过播放混流来查看屏幕并听到房间内所有成员的声音,而不需要管理房间中的每个流。
流混合的好处
由于对开发人员的以下好处,流混合可以广泛应用于音频和视频领域。
1. 低成本
在大型直播或在线教育场景中,如果多方在一个房间内共同主持,房间内的所有用户都需要播放多个流。
使用混流技术,只需要播放一个流。
即在两方共同托管的情况下,成本可以降低一半。在多方共同托管的情况下,可以降低成本(n - 1)/n。
如果使用审查机制,例如淫秽内容审核,还可以降低成本,(n - 1)/n因为只需要审查一个流的图像。
2.简单的代码逻辑
当多台主播合流使用混流时,无需播放和渲染多条流,观众只需播放混流并渲染即可。
3.不同平台之间轻松转发
在没有混流的情况下,我们无法在多方托管场景中将直播转发到个个直播平台,因为这些平台只有一个 RTMP 地址,我们无法将多个流转发到一个地址。
4. 移动客户端网页浏览器支持的多方共同托管
对于 iPhone 用户,Safari 不支持同时播放多个音频文件。播放多个流时,只能播放一个流。流混合可以解决这个问题。
由于手机性能和浏览器性能的限制,手机上的大部分网页浏览器一般最多可以播放四个流。
使用流混合技术,可以播放的最大流数显着增加,而无需额外的带宽或性能消耗。
什么是流混合
如下图所示,当房间内多个用户发布流时,服务器根据布局配置将两个流合并为一个流。观众播放混流观看用户A和用户B的屏幕。
流混合实现
1.流混合过程
- 服务器侦听房间中的流变化。
- 客户端上的主机发布流。
- 当服务器检测到第一个新流时,它开始进行流混合。
- 共同托管开始发布流。
- 服务器检测流添加并更新流混合布局配置。
- 共同主办停止。
- 服务器检测流减少并更新流混合布局配置。
- 房间解散,混流任务停止。
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 媒体流(屏幕捕获 + 网络摄像头)混合/组合成一个流?