视频直播数据库
流媒体服务器
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 的特色
6 HLS 实现步骤
注:须要说明的是 HLS 分段策略的分段时长以10S 为最好.
RTMP 协议
1 RTMP 实时消息传输协议,是如今比较经常使用的协议
2 RTMP使用原理:首先推流到 RTMP 服务器,而后再有 RTMP 服务器提供 RTMP 视频服务.
注:需啊说明的是:RTMP 也提供 HLS, 将音视频切位 ts 流,而后用户能够直接播放 m3u8流媒体.
3 RTMP协议规定
3.1 创建一个网络链接
3.2 创建一个网络流(发送多媒体的通道)
注:只能创建一个网络链接,可是能够创建多个网络流
4 RTMP 协议使用步骤
4.1 握手:RTMP 协议都是以握手开始的
4.2 创建链接:创建客户端和服务器端的网络链接
> 客户端发送命令消息中的”connect”,到服务器,请求与一个服务器应用实例创建链接
> 服务器接收到请求后,发送确认消息,同时链接到请求中的链接实例
> 服务器发送设置带宽协议消息到客户端
> 客户端接收到 设置带宽 消息以后,发送确认消息到服务器
> 服务器发送用户控制消息中的”stream”消息到客户端
> 服务器发送消息命令中的”结果”消息到客户端
4.3 创建流:创建客户端和服务器端的”流链接”
> 客户端发送消息命令中的”建立流”到服务器
> 服务器接收到”建立流”命令后,发送”结果”命令到客户端
4.4 播放传输音视频数据
> 客户端发送”播放”命令到服务器
> 服务器收到消息后,发送 设置消息大小协议消息
> 服务器发送” streambegin”,告知客户端流 ID
> 若播放成功的话,服务器发送”响应状态”到客户端.告知客户端播放成功
> 服务器发送客户端要播放是数据
流媒体的播放
1 HLS 的流媒体经过AVPlayer/AVPlayerViewController 和 MPMviePlayerController/MPMoviePlayerViewController 来实现.
2 RTMP 的流媒体要用第三方框架实现 如 FFMpeg ,IJKPlayer和 VLC 等
3 经常使用的流媒体框架:百度/阿里/腾讯/网易等