随着直播市场的火热,市场大军都逐步进入直播市场 ,腾讯旗下的NOW直播也不例外
先说说直播设计底层
一 、流媒体
1 - 伪流媒体
1.1 扫盲:边下载边播放
1.2 伪流媒体:视频不是实时播放的,先把视频放在数据库,再供客户端访问,比如:优酷,爱奇艺等
1.3 特点:
边下边存,文件会保存.
遵守了 HTTP 协议,但是没有遵守 RTMP 和 HLS 协议
能够实现快进和快退的功能
实现简单,成本低
2 实时流媒体
2.1 真正的流媒体,边下边播,但不会保存下载的文件
2.2 特点:
下载的文件不会保存
遵守了 RTMP 或者 HLS 协议
只能实现实时播放,不能快进或者快退
实现成本比较高,实现复杂
3 常见的流媒体协议: HLS(苹果基于 HTTP 开发的流媒体协议),RTMP(Adobe 的私有协议),MMS (微软).
HLS协议
1 HLS: HTTP Live Streaming 是苹果公司实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用在iOS系统,为iOS设备提供音视频直播和点播方案.2 直播原理:通过相关设备采集摄像头的视频和麦克风的音频,并实时进行 H264视频编码和 AAC 音频音频编码,并按照 HLS协议规范,转换为标准的 TS文件以及m3u8(是一个地址,里面记录了服务器多对应的文件)索引文件.
3 HLS 点播:就是对 HTTP 进行分段播放,不同的就是在于对 HTTP 进行的分段非常小,因此可以说, HLS 点播的重点就是对 HTTP 进行分段.(现在的分段技术比较常见不在赘述)
4 HLS 直播原理:和其他的常见的直播协议(如: RTMP,RTSP,MMS)不同, 遵守HLS 协议的直播在客户端接收到的并不是完整的数据流. 即HLS 协议的服务器将最新获取到的片段进行分割为小片段,客户端获取服务器刚编好的最新的片段进行播放.这样服务器端不断的获取新的数据进行分割成新的片段,客户端不断的从服务器端获取最近的片段进行播放.由此可以说 HLS 是以点播的形式实现的直播.
5 HLS 的特点:由于数据是通过 HTTP 传输的,所以不用考虑防火墙和代理的问题,由于分割的时长很短,所以客户端可以很快的实现码率切换,以适应不同的带宽.HLS 协议的延迟一般会高于其他协议的流媒体直播.
6 HLS 实现步骤采取视频源和音频源数据对原始数据尽心 H264和 ACC 编码视频和音频数据封装为 MPEG-TS 包 HLS 分段生成策略以及 m3u8索引文件 HTTP 传输协议
注:需要说明的是 HLS 分段策略的分段时长以10S 为最好.
二 、RTMP 协议
流媒体的播放
1 HLS 的流媒体通过AVPlayer/AVPlayerViewController 和 MPMviePlayerController/MPMoviePlayerViewController 来实现.
2 RTMP 的流媒体要用第三方框架实现 如 FFMpeg ,IJKPlayer和 VLC 等
3 常用的流媒体框架:百度/阿里/腾讯/网易/斗鱼直播伴侣/七牛云等
-项目主要是基于ijkplayer 的. 最好是打包成framework
. 我也准备好了一份打包好的分享给大家
-百度云盘链接: http://pan.baidu.com/s/1pLjbecF 密码: 5eac
快速开发,整个demo仅用了一天时间
打开项目记得用真机测试哦,不然模拟器会有语言跟不上 失真的现象哦
github -> https://github.com/ChinaArJun/Tencent-NOW