关于iOS平台监控和直播的实现
来源:互联网 发布:铁矿石持仓数据 编辑:程序博客网 时间:2024/05/21 18:36
一、相关协议
(一)拉流
不同流式传输的实现需要不同的传输协议。目前来说,传输实时数据采用实时传
输协议/用户数据报协议(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
- 关于iOS平台监控和直播的实现
- 关于直播的iOS开发
- iOS 直播功能的实现
- 关于自动化和流水线监控的WEB平台开发
- iOS 直播技术平台
- Flash 平台音视频直播的实现
- iOS关于直播
- 关于实现HLS直播的一些探究
- iOS平台基于ffmpeg的视频直播技术揭秘
- iOS平台基于ffmpeg的视频直播技术揭秘
- 安防监控直播中无插件web直播方案中实现快照抓取的功能
- IOS实现网络直播
- 监控摄像头进行网页直播和微信直播的技术方案
- iOS流媒体开发之三:HLS直播(M3U8)回看和下载功能的实现
- iOS流媒体开发之三:HLS直播(M3U8)回看和下载功能的实现
- iOS流媒体开发之三:HLS直播(M3U8)回看和下载功能的实现
- H.265 对直播和点播平台的意义
- 使用ucloud直播平台SDK和环信IM低仿映客直播APP的应用
- CodeForces 615B Longtail Hedgehog(长尾巴的刺猬) 动态规划
- Android拖动控件的实现,自定义可拖动的LinearLayout
- redis客户端(一)
- 持续更新的程序员必去网站Top20
- Blocks(弱校联盟十一专场)
- 关于iOS平台监控和直播的实现
- 远程通讯技术(Java)
- 信号及信号处理
- LeetCode||1.Two Sum
- git--博客地址
- Redis中国用户组|唯品会Redis cluster大规模生产实践经验
- matlab sliced variable
- PowerDesigner使用教程
- Django使用or条件查询和各种查询关键字