0.起因
毕业后一直想做一个美剧类app,因此研究了一段时间的视频服务器方面的知识,在此记录一下学习心得。
1.简单介绍
现在网上各种资料参差不齐,我先说介绍一下现在主流直播、点播用到的技术,视频直播目前基本都是HTTP-FLV和RTMP,而视频点播一般用HLS协议居多,HLS也可以用用直播,但是延迟会比HTTP-FLV和RTMP大的多。他们的基本原理都是接受到请求后先推流到服务器,可以捕捉摄像头或者把本地的视频流化推送到服务器,现在用Nginx服务器居多,因为它有着超好的高并发能力,最后客户端拉流到本地,播放器最后播放视频,其中拉流到本地用到的协议就是上面介绍的HLS,RTMP、HTTP-FLV等。
对比.png
2.HLS
VOD也就是点播,通常点播的视频已经放在了服务器上只要不删除,用户就可以播放,优酷、土豆都是如此,我研究了优酷视频Android端、腾讯视频Android端、慕课网Android端基本上主流大家常用的app都是使用的HLS协议,少部分短视频用的是MP4,可见HLS是非常流行的,HLS协议把一个视频切割成若干个ts格式的视频并且生成了一个m3u8的文件,这个文件是记录切割视频的个数和地址的,是它们的一个索引,客户端首先下载m3u8然后根据m3u8文件下载ts格式的视频,相对于响应整个mp4这样省带宽的多,也稳定的多。虽然HLS在移动端能吃,应该说是目前最好的解决方案,但是HLS切割的视频又短又多在服务器上生成了许多小文件,这对于硬盘来说也是一件麻烦的事, 是把所有的视频切割好放到服务器指定目录,还是说客户端请求时再去切割视频?后来我发现许多支持点播的云服务器都是利用服务器集群瞬间切割视频放到内存当中,客户端请求直接从内存中返回数据,这方面技术要求是很高的,一般人也没有那么多服务器来实现,所以视频网站是很耗钱的。
hls.png
网友评论