iOS直播发展概述


浏览:389 次

1.要实现直播功能,iOS客户端需要经历以下过程:

采集-处理-编码-数据包-流传输-回放

收购:

视频由摄像头采集,需要iOS底层库AVCaptureSession,音频由麦克风采集,需要底层库AudioMedia

手柄:

openGL主要用于为视频添加美感和水印。GPUImage是一个基于openGL的强大的图像/视频处理框架。它封装了各种过滤器,还可以编写自定义过滤器。它内置了120多种常见的滤镜效果。

代码:

无论是视频还是音频,最好使用硬编码,这样可以降低手机的热量,效率也比较高。视频编码可以使用苹果自己的视频硬解码和硬编码API VideoToolbox,但只有在iOS 8之后才开放。音频采用苹果自己的音频硬解码和软编码API AudioToolbox。

数据包和流:

使用CDN分发网络向观众推送视频和音频,您可以看到实时内容。尽管分发网络与iOS客户端无关,但作为一款实时应用,仍有优化空间,例如动态比特率优化。如果比特率非常高,则需要大量的流量和快速的网络速度。当网络速度非常慢时,您需要在图像质量或分辨率之间进行选择,以降低比特率以适应恶劣的网络环境。

播放:

玩家可以进行一些优化。使用网卡时,主机仍在推送流。播放器缓存推送到流中的信息并播放。卡被卡住的频率越高,延迟越大。因此,应进行累积延迟优化。也就是说,当缓存了大量信息时,您可以选择性地丢弃一些中间的东西,因为实时性对于直播非常重要。

2.为了节省成本,您可以使用第三方SDK快速集成直播功能,如阿里云、百度直播云和七牛云。

使用第三方sdk实现该过程:

当主机直播时,客户端扮演捕获端的角色,将视频推送到实时流媒体网络;当观众观看直播时,客户端充当播放器,从网络地址提取音频和视频流以播放。这两个逻辑需要分别编写。

第一种:采集终端:

收集端将从服务服务器(我们自己的服务器)获得授权的流地址。服务服务器将判断该请求是否来自经批准的客户端,然后从第三方sdk请求流地址,该地址将返回给客户端。然后,客户端可以将流推送到实时流网络。

第二种类型:播放结束:

玩家需要请求业务服务器获取播放地址,该地址可以通过播放sdk来播放。回放时将使用不同的直播协议,如下图所示:

HLS是苹果公司推出的协议。虽然延迟相对较大,但在Mac下运行播放器会引起严重的热,但一个优点是它可以在不同的浏览器上跨平台播放

3.开发细节:

在几秒钟内启动第一个屏幕:单击进入直播间,在不到1秒的时间内播放第一帧渲染

实施原则:

目前,最流行的视频解码器是H.264 264编码,将有三种不同的帧,所谓的帧就是你看到的每一幅图像。我们看到了动态视频。你知道,当电影第一次用胶片拍摄时,它是每秒25帧,每秒25张图片在切换。对于H.264,I帧、P帧和B帧是常见的。I帧、B帧和P帧如何形成视频流?我们称之为图片组,简称GoP。IDR帧(关键帧)是I帧,但I帧不一定是IDR帧。在直播方面,我在随机时间点接收此视频流以供播放。在这个时间点我访问的帧可以获得第一帧的数据,第一帧可以是I帧、B帧或P帧。这是随机的。在这种情况下,我们可能会有一个黑屏。因为我得到了一个P帧,所以解码器侧的缓冲区对于P帧是空的。它不知道如何解码P帧,因此只能丢弃该帧。对于直播,我的每秒帧数是固定的。我只能在下一个关键帧到达时开始播放。当然,如果发生这种情况,在访问时获得的数据只是一个I帧。你可以在几秒钟内打开它。

因此,我们需要确保每次进来时,我们都从I帧开始播放。事实上,它在缓存服务器上。它将去缓存服务器提前解码帧,然后

解决方案:
相关资讯:
生鲜企业如何进行直播销售

生鲜企业如何进行直播销售

查看
教育APP直播软件外包发展分析

教育APP直播软件外包发展分析

查看
云宝直播系统源代码构建直播源代码构建定制

云宝直播系统源代码构建直播源代码构建定制

查看
发展教育直播APP的主要原因是什么?

发展教育直播APP的主要原因是什么?

查看
农村直播电商APP将对农业市场产生什么影响?

农村直播电商APP将对农业市场产生什么影响?

查看