全平台網頁播放器兼容H5與Flash還帶播放列表


許久不發文了,2018年第一篇文章,寫點干貨——關於網頁播放器的問題。嗯,實際上我是在52破解首發的,當做新人貼。
目前來說,網頁播放器不少,隨便找找都能找到一大堆,然而好用的就那么幾個,比如ckplayer什么的。2017年底,自己想給這個小博客增加視頻播放功能,之前也發過幾篇關於typecho視頻播放器的帖子,奈何都是別人的成果,總想自己搞一個,並且同時支持PC+移動端+播放列表的功能,要想完成還是要費一番功夫的,巧的是當時逛谷歌的時候真的讓我找到了一個這樣的播放器,當然也是付費的!接下來的工作想必都能猜到O(∩_∩)O哈哈~

先放出實驗對象——Flash HTML5 Web Video Player我覺得一個正常的公司不會起一個這么直白的名字 -_-|| 還賣39美元!實際賣的是一個十幾兆的小軟件,自定義后可自動生成swf格式的播放器,只要在網頁上引用就可以實現播放功能了。官方提供試用版,但是播放視頻會在左上角帶有一個官網地址的標記,非常煩人,詳細見下圖。Flash HTML5 Web Video Player我要做的就是去掉這個鏈接,但是,我的做法不是破解注冊軟件本身,而是從生成的swf文件入手。很自然地想到對swf文件逆向,這確實可行,用AS3 Sorcerer的確可以拿到swf的源碼,並且源碼看上去還很正常,AS3 Sorcerer在很多地方都可以下載到,我嘗試了其他的逆向工具,無奈都失敗了,有些工具逆向出來的部分AS文件是空白的。逆向后會發現在所有文件架最外層有一個主文件,打開這個AS3文件真的算是大開眼界,代碼非常工整,很容易就找到了我們要找的地方:

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文件,里面指明了視頻地址和縮略圖。

我把自己修改好的播放器文件放出來:https://files.cnblogs.com/files/liuke-note/player.zip 至於使用方法,很簡單看看里面的html文件就懂了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM