您的位置:首页 > 移动开发 > IOS开发

关于iOS平台监控和直播的实现

2016-10-07 18:12 344 查看
一、相关协议

(一)拉流

不同流式传输的实现需要不同的传输协议。目前来说,传输实时数据采用实时传

输协议/用户数据报协议(RTP/UDP),而控制信息采用 HTTP/TCP 来传输。

图 2-1 流媒体协议层次图

Fig 2-1 Streaming protocol hierarchy diagram

在异步传输传输过程中,将数据文件分解成为许多包,每个包根据网络的不同会

选择的不同的路由,所以到达客户端的时间也不一致,甚至发生先发的数据包比后面

的数据包还晚到。所以为了确保数据包顺序正确并且能够连续输出,一般通过缓存系

统来消除时延和抖动。

在流式传输过程中,为了重定向到一个客户机的目的地址,需要准备专门的服务

器和特制的播放器,使用了 RTP/UDP 和 RTSP/TCP 两种不同的通信协议与之建立连接。

图 2-2 流媒体传送图

Fig 2-2 Streaming transferring diagram

在目前流式传输的设计过程中,传输实时声音数据采用 RTP/UDP,而传输控制信

息采用 HTTP/TCP。

实时传输协议 RTP 和实时传输控制协议 RTCP。

RTP 是一种针对多媒体数据流的传输协议。RTP 可以在多种情况下进行传输工作,

解决了时间信息和流的同步。在 RTP 协议中使用 UDP 来传送数据。进行传输时会使用

两个端口,分别是 RTCP 和 RTP。它们通过互相协作,提供流量控制和拥塞控制服务

让传输效率可以达到最佳化。

RTSP(real-time streaming protocol)定义了一对多应用程序如何有效地通过

IP 网络传送多媒体数据。RTSP 协议是双向的,客户机和服务器都可以发出请求,更

多传送的事多媒体数据。HTTP 是单向的,请求由客户机发出,服务器作出响应,主

要传送超链接文档。

RVSP 是为了在网络中传输高质量的音视频信息而提出的,这种协议是 Internet

上的资源预订协议,在流媒体的传输过程中提供 Qos。RVSP 可以运行在视频会议工具

Vic 中。

(二)推流

1,RTMP协议

RTMP
是由 Adobe公司提出的。RTMP协议全称是Real
Time Messaging Protocol,即实时消息传送协议,用于在Flash平台之间传递视音频以及数据。与RTSP
+ RTP组合提供流媒体服务的方式不同,RTMP协议本身既可以传输多媒体数据也可以控制多媒体播放。RTMP协议使用TCP
协议作为其传输层的网络协议。TCP是面向连接的[3],提供可靠交付的协议,因此在互联网上传输时不会出现丢包情况,从而保证了用户体验(QoE)。但是TCP
协议提供可靠交付的代价就是增加了一些额外的开销,占用了一些带宽和处理机资源。随着网络带宽的提高和计算机硬件的发展,这些开销会显得越来越微不足道。因此RTMP协议在未来有很好的发展前景。

RTMP的传输延迟通常在1-3秒,符合手机直播对性能的要求,因此RTMP是手机直播中最常见的传输协议。

但是网络延迟和阻塞等问题的一直存在的,所以通过Quality of Servic一种网络机制将流数据推送到网络端,通过CDN分发是必要的。

另外,服务端还需要对数据流一定的处理,转码,使得数据流支持HLS,HTTP-FLV,RTMP等格式的拉流,支持一转多,适配不同网络、分辨率的终端。(当然这就是服务端要做的事情啦)


2,HLS协议

HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。是苹果公司QuickTime X和iPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8)
playlist文件,用于寻找可用的媒体流。

HLS只请求基本的HTTP报文,与实时传输协议(RTP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。

但是由于需要切片,会出现较大的延迟。

iOS集成推流
http://www.cnblogs.com/itlover2013/p/5668008.html
喵播App源码:
https://github.com/SunLiner/MiaowShow/tree/master/MiaowShow
高仿喵播:
http://www.jianshu.com/p/b8db6c142aad
iOS推流
http://www.jianshu.com/p/447df915984e
✨来疯iOS框架源码✨:
https://github.com/LaiFengiOS/LFLiveKit
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: