全平台网页播放器兼容H5与Flash还带播放列表

许久不发文了,2018年第一篇文章,写点干货——关于网页播放器的问题。嗯,实际上我是在52破解首发的,当作新人贴。
目前来讲,网页播放器很多,随便找找都能找到一大堆,然而好用的就那么几个,好比ckplayer什么的。2017年末,本身想给这个小博客增长视频播放功能,以前也发过几篇关于typecho视频播放器的帖子,奈何都是别人的成果,总想本身搞一个,而且同时支持PC+移动端+播放列表的功能,要想完成仍是要费一番功夫的,巧的是当时逛谷歌的时候真的让我找到了一个这样的播放器,固然也是付费的!接下来的工做想必都能猜到O(∩_∩)O哈哈~html

先放出实验对象——Flash HTML5 Web Video Player我以为一个正常的公司不会起一个这么直白的名字 -_-|| 还卖39美圆!实际卖的是一个十几兆的小软件,自定义后可自动生成swf格式的播放器,只要在网页上引用就能够实现播放功能了。官方提供试用版,可是播放视频会在左上角带有一个官网地址的标记,很是烦人,详细见下图。Flash HTML5 Web Video Player我要作的就是去掉这个连接,可是,个人作法不是破解注册软件自己,而是从生成的swf文件入手。很天然地想到对swf文件逆向,这确实可行,用AS3 Sorcerer的确能够拿到swf的源码,而且源码看上去还很正常,AS3 Sorcerer在不少地方均可如下载到,我尝试了其余的逆向工具,无奈都失败了,有些工具逆向出来的部分AS文件是空白的。逆向后会发如今全部文件架最外层有一个主文件,打开这个AS3文件真的算是大开眼界,代码很是工整,很容易就找到了咱们要找的地方:html5

private function InitWatermark():void
       {
           var _local_1:*;
           var _local_2:TextFormat;
           var _local_3:*;
           if (cfgObject.demo)
           {
               _local_1 = new TextField();
               _local_1.multiline = true;
               _local_1.wordWrap = false;
               _local_1.selectable = false;
               _local_1.htmlText = "<a ><font face='Arial,Verdana'>http://www.magichtml.com</font></a>";
               _local_1.autoSize = TextFieldAutoSize.LEFT;
               _local_2 = new TextFormat();
               _local_2.align = TextFormatAlign.CENTER;
               _local_1.setTextFormat(_local_2);
               _local_1.x = 8;
               _local_1.y = 8;
               _local_3 = new Sprite();
               _local_3.graphics.beginFill(0xFFFFFF);
               _local_3.graphics.drawRoundRect(0, 0, (_local_1.width + 8), (_local_1.height + 8), 8, 8);
               _local_3.graphics.endFill();
               _local_3.x = 4;
               _local_3.y = 4;
               _local_3.alpha = 1;
               watermarkMC = new MovieClip();
               watermarkMC.addChild(_local_3);
               watermarkMC.addChild(_local_1);
               this.addChild(watermarkMC);
               watermarkMC.x = 8;
               watermarkMC.y = 8;
           };
       }

问题就集中在那个if判断里,本想着只要不进入if里就能够,修改后再编译成swf就行。可是,事情并无那么简单,本身尝试了不少次,虽然调用Flash SDK下的mxmlc确实能够不报错生成swf文件,可是彻底不能用,浏览器调用后只会显示一块黑色区域。PS:后来发现,那个公司最成功的一款产品是swf加密软件,估计在生成swf文件过程当中也加密了。
出现这种状况对我来说基本无解了,由于彻底不知道问题在哪。后来在使用另外一款软件ActionScriptViewer后发现,该款软件能够在不破坏swf文件的前提下直接编辑swf里的常量!看到但愿了\(^o^)/~
返回以前的源码,发如今if里的判断实际就是调用了常量demo,这个值实际是软件本身加上去的,跟第一张图右侧播放器的相关设置在一块儿(相似xml文件)放在主文件开头出,至关于一个全局常量。因此只要一开始设置播放器时给一个false常量而后把if判断指向这个常量就行了。我这里用到的是randomPlay。只要在ActionScriptViewer里将demo换成randomPlay就完成了。以后保存就好,浏览器再调用swf就正常了。至此,结束。至于调用的视频,swf播放器会调用一个同名的xml文件,里面指明了视频地址和缩略图。web

我把本身修改好的播放器文件放出来:https://files.cnblogs.com/files/liuke-note/player.zip 至于使用方法,很简单看看里面的html文件就懂了浏览器