近期因为一个项目的须要,对Flash版本的播放器JWPlayer作了一些改进以支持一些功能,这里把中间用到的一些思路和作法记录下。服务器
首先一个功能是:客户的不少flv视频都是完整的一个大视频,但愿JWPlayer能够对flv视频文件播放时不所有载入,而是先只载入前面5分钟,等播放到4分钟左右时再去载入后面的5分钟视频。这样的好处显而易见就是能够节省不少服务器流量,避免用户只看2-3分钟暂停在那,也把整个视频给分发下去。 其实该功能不少视频网站,好比优酷他们的作法是将视频真的切分为每7分钟一段,这样的缺点是:文件被切分红碎片在服务器存放,不利于视频文件的管理。
为了实现上述功能,在JWPlayer中进行以下改造:ide
1) 增长一个NetStream,用于载入下一段数据;网站
2)服务器须要支持能够经过start和end参数,来索取任意一段视频。好比http://www.a.com/1.flv?start=0&end=1024999这种,用于获取指定关键帧区间的视频(好比5分钟的)。视频
3)而后播放时,首先经过获取到的metadata,找出第一个5分钟的视频的结尾关键帧位置,而后构造一个NetStream去播放前面5分钟,因为服务器就只给5分钟数据,所以该stream不会不停缓冲服务器数据。stream
4)等播放到4:20秒左右时,启动一个新的NetStream载入下一段5分钟视频,但此时将video层放在正在播放的视频的下面(不可见)。meta
5)等第一段视频播放完成后,将第二段的NetStream接着播放,并切换两个video的位置,将第二段放到舞台的前面。方法
6)等第二段播放快完成时,用第一段的NetStream预载入下一段视频,不停重复上述逻辑直到视频结束。数据
通过上述处理后,能够很是可控的以分段的效果播放单段视频,既节省了服务器流量,又不须要对视频真正进行切分。关于JWPlayer Flash播放器分段载入视频以节省带宽的方法分享,但愿对你们有帮助!项目