扩展JWPlayer Flash播放器功能的几个思路
扩展JWPlayer Flash播放器功能的几个思路
近期由于一个项目的需要,对Flash版本的播放器JWPlayer做了一些改进以支持一些功能,这里把中间用到的一些思路和做法记录下。
一)首先一个功能是:客户的很多flv视频都是完整的一个大视频,希望JWPlayer可以对flv视频文件播放时不全部载入,而是先只载入前面5分钟,等播放到4分钟左右时再去载入后面的5分钟视频。这样的好处显而易见就是可以节省很多服务器流量,避免用户只看2-3分钟暂停在那,也把整个视频给分发下去。 其实该功能很多视频网站,比如优酷他们的做法是将视频真的切分为每7分钟一段,这样的缺点是:文件被切分成碎片在服务器存放,不利于视频文件的管理。
为了实现上述功能,在JWPlayer中进行如下改造:
1) 增加一个NetStream,用于载入下一段数据;
2)服务器需要支持可以通过start和end参数,来索取任意一段视频。比如http://www.a.com/1.flv?start=0&end=1024999这种,用于获取指定关键帧区间的视频(比如5分钟的)。
3)然后播放时,首先通过获取到的metadata,找出第一个5分钟的视频的结尾关键帧位置,然后构造一个NetStream去播放前面5分钟,由于服务器就只给5分钟数据,因此该stream不会不停缓冲服务器数据。
4)等播放到4:20秒左右时,启动一个新的NetStream载入下一段5分钟视频,但此时将video层放在正在播放的视频的下面(不可见)。
5)等第一段视频播放完成后,将第二段的NetStream接着播放,并切换两个video的位置,将第二段放到舞台的前面。
6)等第二段播放快完成时,用第一段的NetStream预载入下一段视频,不停重复上述逻辑直到视频结束。
经过上述处理后,可以非常可控的以分段的效果播放单段视频,既节省了服务器流量,又不需要对视频真正进行切分。
二)另一个功能是:用户希望可以直接合并播放优酷等网站上的分段视频。分段视频如果单独来用JWPlayer播放是没问题的,但一段段的播放,用户体验不好。希望是将多段切开的视频用一体的方式播放,用户可以在2小时的视频中任意拖放,拖动到哪一段播放哪一段。
为了实现上述功能,需要做如下改造:
1)增加一个NetStream的数组Array
2)初始化jwplayer时,将所有分段一起传入jwplayer
3)根据传入的所有分段,构造相应数量的NetStream对象
4)根据功能一的思路,将这些NetStream对象连贯播放,在第一段快结束时载入第二段。
5)修改拖动事件的处理,需要判断出此时拖动到了第几段视频。
三)防盗链和权限控制:客户是做远程教育的,希望视频只能付费用户观看,不可下载和被非授权用户观看。为了实现这个目标,我们提供了两种方案的处理:
1)直接基于点量FLV Flash视频加密系统: http://blog.dolit.cn/dolit-flv-encrypt-introduction-html 。该系统可以做到不需要安装任何exe软件,就可以实现FLV视频文件的绝对加密;当然,我们也提供了exe模式,提供更强的加密等级,或者方便进行更多功能扩展。
2)不进行视频加密的方案(只做防盗链):直接基于JWPlayer进行改造,结合服务器配置。 jwplayer获取视频时传入一些token给服务器,服务器可以通过session等判断用户的权限,权限确认通过才发放flv文件,并且发放的flv文件是经过处理的,jwplayer收到flv数据后合并播放,用户即使下载到这些零散的flv文件,也很难形成完整的视频。http://www.dolit.cn/flv 上面有防盗链防下载系统的演示。 — 这种方案适合不希望做加密的客户需求,只是做了防盗链,但视频还是会有被下载到的风险,建议使用点量FLV视频加密系统,也完全可以不安装任何软件就能实现视频的加密。
以上作为这一段时间对JWPlayer改造的备忘。 如果您也有类似的需求,也可以考虑直接联系我们,我们可以提供JWPlayer的改造定制服务。
点量软件官方网站: http://www.dolit.cn 官方博客: http://blog.dolit.cn
欢迎转载,转载请注明来源于点量软件官方博客,多谢合作!