Chinaunix首页 | 论坛 | 博客
  • 博客访问: 51044
  • 博文数量: 6
  • 博客积分: 73
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-08 16:28
文章分类

全部博文(6)

文章存档

2016年(1)

2011年(5)

我的朋友

分类: 服务器与存储

2016-06-21 16:33:36

最近支持了两个M3U8的高清点播服务,有些心得需要总结如下

问:为何点播要用M3U8来搞?存成一个文件不更好吗?

答:1. 下载速度: 一般下载对于高清视频总会出现观看不太流畅的问题(P2P除外)
      2. 磁盘:高清点播长视频一般都是G级别的,对于大文件下载来说,单盘的IO压力较大。如果能在磁盘上将大文件打散分片存储,单盘IO将会大大缓解
      3. 容错:下载或存储过程中,1G的文件中任一字节出错将导致 可能会导致改视频的失效,而被切成小碎片后,容错将变得相对简单,只需补全出错的切片即可。
     4. 分发:大文件分发起来相对小文件比较困难,下载耗时长,特别是在服务初期,源服务器需要承受极高的磁盘IO请求
     5. 简单:simple is beautiful~

问:CDN对m3u8点播需要做哪些支持?

答:受限于播放器与源站之间的交互行为的不确定性,给M3U8做缓存 加速服务时,最好先抓包 分析下 在播放器 与源站直接交互时的请求与响应头,这样会加速解决在经过CDN时遇到的故障。
     特别是需要注意:
      1.源站明确告诉播放器哪些内容不能缓存,明确cache-control:no-cache的,尽量不要与源站配置一致,如可能影响到播放器的xml控制文件及M3U8文件(分析其内容是否会变化)
     2.长连接:源站与播放器直接的交互是开启长连接,Connection:keep-alive,如果是长连接的话,在拿wireshark 打开包时,点击follow stream时,将可以看到一个stream流中有多次GET请求及响应,一般的播放及拖拽卡顿,很有可能是长连接没有打开,注意开启 CDN设备到 播放器,及CDN到源站的长连接。这样可以将miss时对用户的体验降到最低。

问: M3U8支持中遇到的一些问题,及优化措施

答:1.提前预加载,获取所有m3u8列表,跑个脚本,先全部预加载到CDN设备上。比较土,但不影响后续观看体验。
     2.实时预加载,在CDN设备上首次获取M3U8文件时,在CDN端对M3U8进行解析,自行在CDN内部完成对视频文件的预热。相对更理想,但在CDN端做解析,会让M3U8从源站到客户端加大延迟。相对1来说稍复杂点。


总结:CDN视频加速夹在播放器与服务端,总是要揣摩播放器的一些行为,如果播放器与服务器之间没有啥隐晦的规则还好,反之将在联调之际灰常蛋疼。

阅读(8467) | 评论(0) | 转发(0) |
0

上一篇:基于嵌入式linux和s32410平台的视频采集

下一篇:没有了

给主人留下些什么吧!~~