流媒体知识(学自观止云)
2016-12-06 本文已影响250人
爱吃花栗鼠的猫
直播
- 概述
从古老的RTSP到RTMP,HTTP渐进式下载,到HTTP流,到HLS和HDS,到DASH,到私有的websocket。
点播
- http渐进式
mp4 flv文件比较合适,nginx也有对应的模块插件处理,性能都很不错。点播本质上是文件的分发,走的是http协议。 - 其他
DRM(Digital rights management),弹幕,分享,多终端转封装,文件调度,HTTP API调度,热点,mp4/flv-range请求,存储等等。大多都有了成熟的方案,和HTTP文件一样的技术,要么就是播放器支持,这些和流媒体一毛钱关系都没有。
协议选择
-
rtmp和hls并存
rtmp一般用于pc-flash播放直播,而hls用于移动端播放。 -
rtsp
监控行业的协议。不足是不支持推模式,只能是拉取的方式,使用起来不方便。
流媒体系统的层次包括:
网络层(socket或st)负责传输,
协议层(rtmp或http)负责网络打包,
封装层(flv、ts、hls、hds、adts、annexb)负责编解码数据的封装,
编码层(h.264和aac)负责图像压缩。
算法性能排名
- 视频
h.265(HEVC) > VP9 > H.264> VP8 > MPEG4 > H.263 > MPEG2 - 音频
AAC+ > MP3PRO > AAC> RealAudio > WMA > MP3
如何选择合适的协议?
1.延迟要求,是否要求低于5秒的延迟?如果是硬指标,就只能选择RTMP或HTTP-FLV流。移动端需要自己编译FFMPEG支持,无法直接播放。
2.终端适配,是否要求支持PC和移动端(IOS和Android)?如果需要广泛支持移动端,HLS是最好的选择。
3.节约带宽,是否要求支持WebP2P?如果需要支持FlashP2P,或者移动端P2P,选择HLS。
如果用一句话说流媒体直播:实时性要求高的用RTMP或HTTP-FLV,其他都用HLS。