1.流媒体服务器端:用来接受视频端提供的视频源,同时提供给播放端流服务。目前开源的流媒体: RED5,CRTMPd,SRS
2.协议层 封装格式层 编解码层 像素层
封装格式层:将视频码流和音频码流按照一定格式存储在一个文件中。
3.Android 4.3 (api18) 以上硬编码,以下软编码
软编码 libffmeng 硬编码 mediacodec
1、协议
国内常见公开的直播协议有几个:RTMP、HDL(HTTP-FLV)、HLS、RTP。
1.RTMP 实时性比较好, flash播放,不需要安装插件。 不支持IOS浏览器播放,一般用这种上传视频流。 基于TCP
国内流行度高,
<1> 开源软件和开源库的支持稳定完整。
<2> 播放端安装率高。只要浏览器支持FlashPlayer就可以播放。相比较其他协议,初次握手协议过于复杂。
2.HTTP-FLV 使用HTTP协议流的传输媒体美容,直接向后台上传编码后的流媒体数据。
3.HLS: http live Streaming 由苹果提出基于HTTP的流媒体传输协议。h5可以直接播放。
4.RTP: real-time transport Protocol,是Intent上针对多媒体数据留的一种传输协议。
2.播放直播
HLS rtmp flv
码率:影响体积,和体积成正比;
帧率:影响流畅度,和画面流畅度成正比。 如果码率为变量,则帧率也会影响体积。帧率和体积成正比。
分辨率:影响图像大小,与图像大小成正比;
1.HLS:
对于H5视频播放,使用HLS协议播放直播流,IOS和Android均支持。直接使用video标签。
HLS协议在服务器端将直播数据存储为连续的、很短时长的媒体文件(MPEG-TS格式)。而客户端不断的在下载并播放这些小文件。
HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以不用考虑防火墙或者代理的问题。
而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。
每一个.m3u8文件(.m3u8 文件,其实就是以 UTF-8 编码的 m3u 文件,这个文件本身不能播放,只是存放了播放信息的文本文件),分别对应若干ts文件,ts是正常存储视频的数据,.m3u8存储了一些ts文件的配置和相关路径,当播放时.m3u8是动态改变的。video标签会解析这个文件,会找到对应的ts文件播放,所以一般为了加快速度,.m3u8放在web服务器上,ts文件放在CDN上。
支持的视频流编码为H.264 ,音频流编码为AAC
HLS优势
但是 H5 直播视频却有一些不可替代的优势:
传播性好,利于分享等操作。
可以动态发布,有利于实时迭代产品需求并迅速上线。
不用安装 App,直接打开浏览器即可。