├── 2 ├── 6logo.png ├── 163logo.png ├── 1905logo.png ├── 56logo.png ├── cntvlogo.png ├── ku6logo.png ├── kuwologo.png ├── letvlogo.png ├── qqlogo.png ├── sinalogo.png ├── sohulogo.png ├── wasulogo.png ├── ifenglogo.png ├── kugoulogo.png ├── mtimelogo.png ├── newcommons.css ├── tudoulogo.png ├── youkulogo.png ├── baomihualogo.png ├── hunantvlogo.png ├── tangdoulogo.png ├── yinyuetailogo.png ├── kankannewslogo.png ├── swfobjects.js └── ckplayer.js ├── api ├── config │ ├── index.php │ ├── config_global.php │ └── config_player.php ├── function │ ├── index.php │ ├── md5.php │ ├── function_vod.php │ └── function_core.php ├── resource │ ├── key │ │ ├── index.php │ │ ├── ID_SINA.php │ │ ├── ID_BILIBILI.php │ │ ├── ID_9KU.php │ │ ├── ID_PPS.php │ │ ├── ID_YINYUETAI.php │ │ ├── ID_DAILYMOTION.php │ │ ├── ID_HUNANTV.php │ │ ├── ID_WASU.php │ │ ├── ID_YOUKU.php │ │ ├── ID_TUDOU.php │ │ ├── ID_SOHU.php │ │ ├── ID_PPTV.php │ │ ├── ID_56.php │ │ ├── ID_KU6.php │ │ ├── ID_LETV.php │ │ ├── ID_QQ.php │ │ ├── ID_IQIYI_.php │ │ ├── ID_IQIYI.php │ │ ├── ID_FUN.php │ │ └── ID_CNTV.php │ └── local │ │ ├── index.php │ │ ├── TV_56.php │ │ ├── TV_CNTV.php │ │ ├── TV_YINYUETAI.php │ │ ├── TV_KU6.php │ │ ├── TV_SOHU.php │ │ ├── TV_SINA.php │ │ ├── TV_FUN.php │ │ ├── TV_LETV.php │ │ └── TV_YOUKU.php └── index.php ├── player ├── style.swf ├── player.swf ├── share │ ├── qq.png │ ├── rr.png │ ├── msn.png │ ├── qq2.png │ ├── sina.png │ ├── sohu.png │ ├── feixin.png │ ├── google.png │ ├── qzone.png │ ├── tianya.png │ └── kaixin001.png ├── share.xml ├── language.xml ├── related.xml ├── ckplayer.xml └── ckplayer.js ├── license.txt ├── README.md ├── js └── offlights.js └── index.html /2/6logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/6logo.png -------------------------------------------------------------------------------- /2/163logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/163logo.png -------------------------------------------------------------------------------- /2/1905logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/1905logo.png -------------------------------------------------------------------------------- /2/56logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/56logo.png -------------------------------------------------------------------------------- /2/cntvlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/cntvlogo.png -------------------------------------------------------------------------------- /2/ku6logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/ku6logo.png -------------------------------------------------------------------------------- /2/kuwologo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/kuwologo.png -------------------------------------------------------------------------------- /2/letvlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/letvlogo.png -------------------------------------------------------------------------------- /2/qqlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/qqlogo.png -------------------------------------------------------------------------------- /2/sinalogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/sinalogo.png -------------------------------------------------------------------------------- /2/sohulogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/sohulogo.png -------------------------------------------------------------------------------- /2/wasulogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/wasulogo.png -------------------------------------------------------------------------------- /api/config/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /2/ifenglogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/ifenglogo.png -------------------------------------------------------------------------------- /2/kugoulogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/kugoulogo.png -------------------------------------------------------------------------------- /2/mtimelogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/mtimelogo.png -------------------------------------------------------------------------------- /2/newcommons.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/newcommons.css -------------------------------------------------------------------------------- /2/tudoulogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/tudoulogo.png -------------------------------------------------------------------------------- /2/youkulogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/youkulogo.png -------------------------------------------------------------------------------- /api/function/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /player/style.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/player/style.swf -------------------------------------------------------------------------------- /2/baomihualogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/baomihualogo.png -------------------------------------------------------------------------------- /2/hunantvlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/hunantvlogo.png -------------------------------------------------------------------------------- /2/tangdoulogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/tangdoulogo.png -------------------------------------------------------------------------------- /2/yinyuetailogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/yinyuetailogo.png -------------------------------------------------------------------------------- /api/resource/key/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /player/player.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/player/player.swf -------------------------------------------------------------------------------- /player/share/qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/player/share/qq.png -------------------------------------------------------------------------------- /player/share/rr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/player/share/rr.png -------------------------------------------------------------------------------- /2/kankannewslogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/2/kankannewslogo.png -------------------------------------------------------------------------------- /player/share/msn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/player/share/msn.png -------------------------------------------------------------------------------- /player/share/qq2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/player/share/qq2.png -------------------------------------------------------------------------------- /player/share/sina.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/player/share/sina.png -------------------------------------------------------------------------------- /player/share/sohu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/player/share/sohu.png -------------------------------------------------------------------------------- /player/share/feixin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/player/share/feixin.png -------------------------------------------------------------------------------- /player/share/google.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/player/share/google.png -------------------------------------------------------------------------------- /player/share/qzone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/player/share/qzone.png -------------------------------------------------------------------------------- /player/share/tianya.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/player/share/tianya.png -------------------------------------------------------------------------------- /player/share/kaixin001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/player/share/kaixin001.png -------------------------------------------------------------------------------- /api/resource/key/ID_SINA.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0oVicero0/rpvideo/master/api/resource/key/ID_SINA.php -------------------------------------------------------------------------------- /api/function/md5.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/index.php: -------------------------------------------------------------------------------- 1 | 5.1.0 以上版本!
'); 9 | }else { 10 | include_once(dirname(__FILE__).'/config/config_global.php'); 11 | include_once(dirname(__FILE__).'/function/function_core.php'); 12 | ob_start(); 13 | include_once(dirname(__FILE__).'/function/function_vod.php'); 14 | } 15 | ?> 16 | -------------------------------------------------------------------------------- /api/resource/key/ID_BILIBILI.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/key/ID_9KU.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/key/ID_PPS.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/key/ID_YINYUETAI.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/key/ID_DAILYMOTION.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/key/ID_HUNANTV.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/key/ID_WASU.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/key/ID_YOUKU.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/key/ID_TUDOU.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/key/ID_SOHU.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/key/ID_PPTV.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/key/ID_56.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/key/ID_KU6.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/key/ID_LETV.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/key/ID_QQ.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/key/ID_IQIYI_.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/local/index.php: -------------------------------------------------------------------------------- 1 | '.chr(13); 18 | $xml .= ' '.chr(13); 19 | $xml .= ''.chr(13); 20 | $xml .= ''.chr(13); 21 | $xml .= ' '; 22 | echo $xml; 23 | 24 | } 25 | 26 | //系统配置 27 | include_once('./config/global.php'); 28 | //载入核心文件 29 | include_once('./function/core.php'); 30 | ob_start(); 31 | //加载解析配置 32 | include_once('/function/vod.php'); 33 | 34 | ?> 35 | -------------------------------------------------------------------------------- /api/resource/key/ID_IQIYI.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api/resource/key/ID_FUN.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | @@ -0,0 +1,23 @@ 2 | +============================================== 3 | +This is a copy of the MIT license (MIT). 4 | +============================================== 5 | + 6 | +Copyright (c) 2014 rptec 7 | + 8 | +Permission is hereby granted, free of charge, to any person obtaining a copy 9 | +of this software and associated documentation files (the "Software"), to deal 10 | +in the Software without restriction, including without limitation the rights 11 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | +copies of the Software, and to permit persons to whom the Software is 13 | +furnished to do so, subject to the following conditions: 14 | + 15 | +The above copyright notice and this permission notice shall be included in 16 | +all copies or substantial portions of the Software. 17 | + 18 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | +THE SOFTWARE. 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## rpvideo 2 | ### 版本 3 | v1.5 说明:http://v.rpsofts.com/app/doc/rpv.html 4 | ### 简介 5 | http://v.rpsofts.com /源码。。。。 6 | 7 | ![网站截图](http://ww3.sinaimg.cn/large/6ff5e63ajw1f47izvip94j211t0hxwhb.jpg) 8 | 9 | 支持youku,音乐台等国内一大批网站 不一一列举了。 10 | 11 | ### 单视频演示: 12 | 例如:http://v.rpsofts.com/v.php?url=http://v.youku.com/v_show/id_XMTI4NTY3MTY1Mg==.html 13 | 14 | ![](http://ww1.sinaimg.cn/large/6ff5e63ajw1f47j0hozdvj20z10hxwhx.jpg) 15 | 16 | ### 部署要求: 17 | php解析国内视频站点解析源码。。。普通php空间即可运行,,无额外要求。。。 18 | ### 皮肤说明: 19 | 播放器使用ckplayer,,皮肤是以前仿芒果台做的,,此外如需更换播放器logo,,及版权显示的话,,,请player\style.swf及播放器js文件 20 | 。。 21 | 22 | ## 站外调用: 23 | 24 | 25 | 26 | 或者http://v.rpsofts.com/i.php?url=http://v.youku.com/v_show/id_XMTQyMTQ1ODE4NA==.html 27 | 28 | ## 版权: 29 | 你有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软件及软件的副本。 30 | 当然如果你使用时可以加上我们的源地址或者我的博客地址链接最好。不过既然开源发出了,就是为了更多人能方便使用,你加不加随便了。 31 | ## 后续计划: 32 | v1.5 增加m3u8直播播放,,例如 CCTV5+ 演示 http://v.rpsofts.com/api/tv.php?url=http://cctv5plus.vtime.cntv.cloudcdn.net:8500/cache/257_/seg0/index.m3u8 33 | 34 | 战旗tv解析:(已经支持全部战旗tv解析(任意房间),,手机版采用m3u8,后续同斗鱼tv解析一起发布,你可以一键整合到你的app或者网站之中,让你的网站支持在线直播) 35 | 36 | 下一步会增加 国内主流网盘解析,,, 37 | 例如:乐视云盘 ,,http://v.rpsofts.com/api/le.php?url=49788354 360,天翼等。 38 | -------------------------------------------------------------------------------- /api/resource/local/TV_56.php: -------------------------------------------------------------------------------- 1 | "normal",1 => "clear",2 => "super"); 17 | 18 | $video['Nowhds'] = $hdstyle >= 0 && $hdstyle < 3 ? $hdstyle : 2; 19 | 20 | $video['mixhds'] = 2; 21 | 22 | for($i=0; $i<3; $i++){ 23 | 24 | $info = getfile('http://vxml.56.com/json/'.$key.'/?src=out', 'http://vxml.56.com' , null); 25 | 26 | if(!empty($info))break; 27 | 28 | } 29 | 30 | $json = json_decode($info); 31 | $data = $json->info; 32 | 33 | if(!empty($data->Subject))$video['subject'] = $data->Subject; 34 | $i= 0; 35 | foreach ($data->rfiles as $value) { 36 | if(!empty($value->filesize))$video['data'][$i]['bytes'] = $value->filesize; 37 | if(!empty($value->totaltime))$video['data'][$i]['duration'] = $value->totaltime; 38 | if(!empty($value->url))$video['data'][$i]['src'] = $value->url; 39 | } 40 | if(empty($video['data'][0]['src']))return false; 41 | 42 | return $video; 43 | } 44 | 45 | 46 | ?> -------------------------------------------------------------------------------- /api/resource/key/ID_CNTV.php: -------------------------------------------------------------------------------- 1 | /i', $c, $keyStr); 44 | if(!empty($keyStr[1]))preg_match('/videoCenterId\",\"([0-9a-z]+)\"/i', $c, $keyStr); 45 | if(!empty($keyStr[1]))preg_match('/([0-9a-z]+)/i', $c, $keyStr); 46 | 47 | if(!empty($keyStr[1]))$key = $keyStr[1]; 48 | 49 | if(empty($key))return false; 50 | 51 | return $key; 52 | } 53 | ?> -------------------------------------------------------------------------------- /api/config/config_global.php: -------------------------------------------------------------------------------- 1 | flvxzapi->flvxzurl->flvcd->local] 20 | $_config['extractor']['order'] = 'local->api'; 21 | 22 | // 程序容可通过的视频原档解析 只要URL包含以下字眼便会立即输出 23 | $_config['Passage'] = '.flv,.m3u8,.mp4,.m4v'; 24 | 25 | // PROXY Setting - Auto 等于自动获取代理 26 | 27 | $_config['PROXY']['Address'] = ''; 28 | $_config['PROXY']['Port'] = ''; 29 | $_config['PROXY']['USER'] = ''; 30 | $_config['PROXY']['PWD'] = ''; 31 | 32 | // 是否打开PHP简单防盗连 [0=关 , 1=开] 33 | $_config['Anti-hotlinking']['IO'] = '0'; 34 | 35 | // 防盗连 - 黑名单 36 | $_config['Anti-hotlinking']['Blacklist'] = ''; 37 | // 防盗连 - 白名单 38 | $_config['Anti-hotlinking']['Whitelist'] = '127.0.0.1,http://qtzr.net'; 39 | 40 | 41 | // 禁止进入 - 文字 42 | $_config['Anti-hotlinking']['TexT'] = "Access Denied . I'm sorry"; 43 | // 禁止进入时进行网页转跳 - 时间 44 | $_config['Anti-hotlinking']['Time'] = '1'; 45 | // 禁止进入时进行网页转跳 - 网址/路径 46 | $_config['Anti-hotlinking']['Url'] = 'http://72blog.com'; 47 | 48 | 49 | ?> -------------------------------------------------------------------------------- /player/share.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {embed src="贵站网址,在ckplayer/share.xml里修改/ckplayer/ckplayer.swf" flashvars="[$share]" quality="high" width="480" height="400" align="middle" allowScriptAccess="always" allowFullscreen="true" type="application/x-shockwave-flash"}{/embed} 5 | 6 | 7 | 贵站网址/ckplayer/ckplayer.swf?[$share] 8 | 9 | 10 | f,my_url,my_pic,a 11 | 12 | ckplayer/share/ 13 | 14 | 15 | 1 16 | 17 | c25cf02c-1705-412d-bd4b-77a10b380f08 18 | 19 | 20 | 21 | qqmb 22 | qq.png 23 | 20,50 24 | 25 | 26 | sinaminiblog 27 | sina.png 28 | 101,50 29 | 30 | 31 | qzone 32 | qzone.png 33 | 182,50 34 | 35 | 36 | renren 37 | rr.png 38 | 263,50 39 | 40 | 41 | kaixin001 42 | kaixin001.png 43 | 20,85 44 | 45 | 46 | tianya 47 | tianya.png 48 | 101,85 49 | 50 | 51 | feixin 52 | feixin.png 53 | 182,85 54 | 55 | 56 | msn 57 | msn.png 58 | 263,85 59 | 60 | 61 | -------------------------------------------------------------------------------- /api/resource/local/TV_CNTV.php: -------------------------------------------------------------------------------- 1 | "lowChapters",1 => "chapters"); 18 | 19 | $video['Nowhds'] = $hds = $hdstyle >= 0 && $hdstyle < 3 ? $hdstyle : 2; 20 | 21 | $video['mixhds'] = 2; 22 | 23 | for($i=0; $i<3; $i++){ 24 | 25 | $info = getfile('http://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid='.$key, 'http://www.cntv.cn' , null); 26 | 27 | if(!empty($info))break; 28 | 29 | } 30 | 31 | $json = json_decode($info); 32 | $data = $json; 33 | 34 | if(!empty($data->title))$video['subject'] = $data->title; 35 | $i= 0; 36 | $data = $data->video->$hdstr[$hds]; 37 | foreach ($data as $value) { 38 | // if(!empty($value->filesize))$video['data'][$i]['bytes'] = $value->filesize; 39 | if(!empty($value->duration))$video['data'][$i]['duration'] = $value->duration; 40 | if(!empty($value->url))$video['data'][$i]['src'] = $value->url; 41 | $i++; 42 | } 43 | if(empty($video['data'][0]['src']))return false; 44 | 45 | return $video; 46 | } 47 | 48 | function GetVideo_HTML5($key, $hdstyle){ 49 | 50 | for($i=0; $i<3; $i++){ 51 | 52 | $info = getfile('http://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid='.$key, 'http://www.cntv.cn' , null); 53 | 54 | if(!empty($info))break; 55 | 56 | } 57 | 58 | $json = json_decode($info); 59 | $data = $json; 60 | 61 | $video['data'][0]['bpsrc'] = $data->hls_url; 62 | 63 | if(empty($video['data'][0]['src'])){ 64 | 65 | $video['data'][0]['src'] = $data->hls_url; 66 | 67 | $video['data'][0]['bpsrc'] = null; 68 | 69 | } 70 | 71 | if(empty($video['data'][0]['src']))return false; 72 | 73 | return $video; 74 | 75 | } 76 | ?> -------------------------------------------------------------------------------- /api/resource/local/TV_YINYUETAI.php: -------------------------------------------------------------------------------- 1 | "hc",1 => "hd",2 => "he"); 19 | 20 | $video['Nowhds'] = $hdstyle >= 0 && $hdstyle < 3 ? $hdstyle : 2; 21 | 22 | for($i=0; $i<3; $i++){ 23 | 24 | $c = getfile('http://www.yinyuetai.com/insite/get-video-info?flex=true&videoId='.$key, 'http://www.yinyuetai.com', null); 25 | 26 | if(strpos($c, '.flv') !== false)break; 27 | 28 | } 29 | 30 | for($s=0, $mhds = 0;$s 2 || $s > 2)break; 35 | 36 | } 37 | 38 | $video['mixhds'] = isset($mhds) ? $mhds : null; 39 | 40 | $video['Nowhds'] = min($video['mixhds']-1, $video['Nowhds']); 41 | 42 | preg_match_all('#http:\/\/h.*?sc=[0-9A-Za-z]+\&br=[0-9A-Za-z]+#is', $c, $flv); 43 | if(empty($flv[0][0]))preg_match_all('#http:\/\/h.*?sc=[0-9A-Za-z]+#is', $c, $flv); 44 | if(empty($flv[0][0]))preg_match_all('#http:\/\/h.*?\.flv#is', $c, $flv); 45 | 46 | if(!empty($flv[0][$video['Nowhds']]))$video['data'][0]['src'] = $flv[0][$video['Nowhds']]; 47 | 48 | return $video; 49 | } 50 | 51 | function GetVideo_HTML5($key, $hdstyle){ 52 | 53 | for($i=0; $i<3; $i++){ 54 | 55 | $c = getfile('http://m.yinyuetai.com/video/'.$key, 'http://m.yinyuetai.com', null); 56 | 57 | preg_match('/videoUrl[\s]:[\s]\"(.*?)\",/', $c, $mp4); 58 | if(empty($mp4[1]))preg_match('/window\.location\.herf[\s]=[\s]\"(.*?)\";/', $c, $mp4); 59 | if(empty($mp4[1]))preg_match('/video[\s]preload[\s]controls[\s]x-webkit-airplay=\"allow\" src=\"(.*?)\"/', $c, $mp4); 60 | if(empty($mp4[1]))preg_match('/a class=\"video-cover\"[^>]*href=\"(.*?)\">/', $c, $mp4); 61 | if(empty($mp4[1]))preg_match('/source src=\"(.*?)\"/', $c, $mp4); 62 | 63 | if(!empty($mp4[1]))break; 64 | 65 | } 66 | 67 | if(!empty($mp4[1]))$video['data'][0]['src'] = $mp4[1]; 68 | 69 | 70 | return $video; 71 | } 72 | 73 | ?> -------------------------------------------------------------------------------- /api/resource/local/TV_KU6.php: -------------------------------------------------------------------------------- 1 | "normal",2 => "clear",3 => "super"); 17 | 18 | $video['Nowhds'] = $hdstyle >= 0 && $hdstyle < 4 ? $hdstyle : 3; 19 | 20 | $video['mixhds'] = 3; 21 | 22 | for($i=0; $i<3; $i++){ 23 | 24 | $info = getfile('http://v.ku6.com/fetchVideo4Player/'.$key.'.html', 'http://v.ku6.com' , null); 25 | 26 | if(!empty($info))break; 27 | 28 | } 29 | 30 | $json = json_decode($info); 31 | $data = $json; 32 | if(!empty($data->data->t))$video['subject'] = $data->data->t; 33 | // 34 | 35 | // $vtimems = $data->vtimems; 36 | // $vtime = $data->vtime; 37 | // $f = $data->f; 38 | // $vtimems = explode(',',$vtimems); 39 | // $vtime = explode(',',$vtime); 40 | // $f = explode(',',$f); 41 | 42 | // foreach ($vtime as $value1){ 43 | // $video['data'][$i]['bytes'] = $vtimems; 44 | // $video['data'][$i]['duration'] = $vtime; 45 | // $video['data'][$i]['src'] = $f; 46 | // $i++; 47 | // } 48 | // if(!empty($vtimems))$video['data'][$i]['bytes'] = $vtimems; 49 | // if(!empty($vtime))$video['data'][$i]['duration'] = $vtime; 50 | // if(!empty($f))$video['data'][$i]['src'] = $f; 51 | // $i++; 52 | 53 | // if(!empty($vtime))$video['data'][$i]['duration'] = $vtime; 54 | // if(!empty($f))$video['data'][$i]['src'] = $f; 55 | 56 | // $data->data->vtime = explode(',',$data->data->vtime); 57 | // $data->data->vtimems = explode(',',$data->data->vtimems); 58 | $data->data->f = explode(',',$data->data->f); 59 | 60 | $i= 0; 61 | foreach ($data as $value){ 62 | for($i=0; $if); $i++){ 63 | // if(!empty($value->vtimems[$i]))$video['data'][$i]['bytes'] = $value->vtimems[$i]; 64 | // if(!empty($value->vtime[$i]))$video['data'][$i]['duration'] = $value->vtime[$i]; 65 | if(!empty($value->f[$i]))$video['data'][$i]['src'] = $value->f[$i]; 66 | 67 | // $i++; 68 | } 69 | } 70 | if(empty($video['data'][0]['src']))return false; 71 | 72 | return $video; 73 | } 74 | 75 | ?> -------------------------------------------------------------------------------- /player/language.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 73 | -------------------------------------------------------------------------------- /api/resource/local/TV_SOHU.php: -------------------------------------------------------------------------------- 1 | "clear",1 =>"normal",2 => "vga",3 => "super"); 18 | 19 | $video['Nowhds'] = $hds = $hdstyle >= 0 && $hdstyle < 3 ? $hdstyle : 2; 20 | 21 | $video['mixhds'] = 3; 22 | 23 | for($i=0; $i<3; $i++){ 24 | 25 | $content = getfile('http://hot.vrs.sohu.com/vrs_flash.action?vid='.$key,'http://tv.sohu.com'); 26 | 27 | //if(!empty($content))break; 28 | 29 | //$content =getfile('http://my.tv.sohu.com/videinfo.jhtml?m=viewnew&vid='.$key,'http://tv.sohu.com'); 30 | 31 | if(!empty($content))break; 32 | 33 | } 34 | 35 | // decode json data 36 | $json = json_decode($content); 37 | 38 | // get the su object, which is the uri list of the video clips 39 | $clips = $json->data->su; 40 | 41 | // if we get one or more video resource(s), we handle it(them) 42 | // continue to ge more detail like file size, video duration, uri, ect. 43 | if($clips > 0){ 44 | // the video files host 45 | $host = 'http://sohu.vodnew.lxdns.com'; 46 | 47 | // the clips bytes, which are the file size of the video clips 48 | $bytes = $json->data->clipsBytes; 49 | 50 | // the clips duration, which are the duration of the video clips 51 | $duration = $json->data->clipsDuration; 52 | 53 | // the ck object, that are the list of the keys, they are not required here. 54 | // if the server needs them, then we will use them 55 | //$key = $json->data->ck; 56 | 57 | for($i = 0; $i < count($clips); $i++){ 58 | $video['data'][$i]['bytes'] = $bytes[$i]; 59 | $video['data'][$i]['duration'] = $duration[$i]; 60 | $video['data'][$i]['src'] = $host.$clips[$i]; 61 | } 62 | } 63 | return $video; 64 | // Done. 65 | } 66 | function GetVideo_HTML5($key, $hdstyle, $userkey){ 67 | 68 | if(hostmd5key()!=$userkey){ 69 | $video['data'][0]['src']='对不起您的授权码错误,暂不能提供解析!';return $video;exit(); 70 | } else { 71 | for($i=0; $i<3; $i++){ 72 | $token=getfile('http://api.lyhaoyu.cn/Index.php/Index/index/License/token/'.$userkey, '' , null); 73 | if(!empty($token))break; 74 | } 75 | $token = json_decode($token); 76 | $keytime=$token[0]->keytime; 77 | if ($keytime <= (date('Y-m-d'))){$video['data'][0]['src']='对不起您的许可码已过期,暂不能提供解析!';return $video;exit();} 78 | $whtime=$token[0]->whtime; 79 | $banben="2015-04-24"; 80 | if ($whtime <= $banben){$video['data'][0]['src']='对不起您的维护期已过期,暂不能使用此版本!';return $video;exit();} 81 | } 82 | 83 | $um3u8 = 'http://hot.vrs.sohu.com/ipad'; 84 | $um3u8 .= $key; 85 | $um3u8 .= '.m3u8'; 86 | 87 | $video['data'][0]['src'] = $um3u8; 88 | 89 | if(empty($video['data'][0]['src']))return false; 90 | 91 | return $video; 92 | } 93 | //客户端 94 | ?> -------------------------------------------------------------------------------- /api/resource/local/TV_SINA.php: -------------------------------------------------------------------------------- 1 | "720P",1 => "350",2 => "1080P",3 => "1000"); 20 | 21 | $video['Nowhds'] = $hds = $hdstyle >= 0 && $hdstyle < 4 ? $hdstyle : 2; 22 | 23 | $video['mixhds'] = 4; 24 | 25 | //加载信息 26 | $url=geturl($key); 27 | 28 | for($i=0; $i<3; $i++){ 29 | 30 | $info = getfile($url,'http://video.sina.com.cn' , null); 31 | 32 | if(!empty($info))break; 33 | 34 | } 35 | preg_match('#\\<\!\[CDATA\[(.*?)\]\>\<\/vname\>#i', $info, $subject); 36 | //preg_match_all('#\(.*?)\<\/filesize\>#i', $info, $bytes); 37 | //preg_match_all('#\(.*?)\<\/length\>#i', $info, $duration); 38 | preg_match_all('#\\<\!\[CDATA\[(.*?)\]\]\>\<\/url\>#i', $info, $vurl); 39 | 40 | $i=0; 41 | if(!empty($subject))$video['subject'] = $subject[1]; 42 | // if(!empty($bytes))$video['data'][$i]['bytes'] = $bytes[$ia]; 43 | // if(!empty($duration))$video['data'][$i]['duration'] = $duration[$ia]; 44 | 45 | foreach($vurl[1] as $value){ 46 | 47 | if(!empty($value))$video['data'][$i]['src'] = $value; 48 | 49 | $i++; 50 | } 51 | if(empty($video['data'][0]['src']))return false; 52 | 53 | return $video; 54 | } 55 | 56 | function GetVideo_HTML5($key, $hdstyle){ 57 | 58 | 59 | //加载信息 60 | $url=geturl($key); 61 | 62 | for($i=0; $i<3; $i++){ 63 | 64 | $info = getfile($url,'http://video.sina.com.cn' , null); 65 | 66 | if(!empty($info))break; 67 | 68 | } 69 | 70 | preg_match_all('#\\<\!\[CDATA\[(.*?)\]\]\>\<\/url\>#i', $info, $vurl); 71 | 72 | $i=0; 73 | 74 | 75 | foreach($vurl[1] as $value){ 76 | 77 | if(!empty($value))$video['data'][$i]['src'] = $value; 78 | 79 | $i++; 80 | } 81 | if(empty($video['data'][0]['src']))return false; 82 | 83 | return $video; 84 | } 85 | 86 | 87 | /* function GetVideo_HTML5($key, $hdstyle){ 88 | 89 | $info = 'http://v.iask.com/v_play_ipad.php?vid='.$key; 90 | $isfile = get_headers($info); 91 | $result = str_replace("Location: ","",$isfile[6]); 92 | 93 | if(!empty($result))$video['data'][0]['src'] = $result; 94 | 95 | if(empty($video['data'][0]['src']))return false; 96 | 97 | return $video; 98 | }*/ 99 | 100 | 101 | function geturl($vid){ 102 | function code(){} 103 | $rand = rand(0,100000)/100000; 104 | $code1 = code(time() /1000); 105 | $str1 = "Z6prk18aWxP278cVAH"; 106 | $str = $vid.$str1.$code1.$rand; 107 | $hash = md5($str); 108 | $k = substr($hash,0,16).$code1; 109 | $url='http://v.iask.com/v_play.php?vid='.$vid .'&referrer=http://v.iask.com&ran='.$rand.'&p=i&k='.$k.'&r=video.sina.com.cn&v=4.1.43.10'; 110 | return $url; 111 | } 112 | 113 | ?> -------------------------------------------------------------------------------- /api/config/config_player.php: -------------------------------------------------------------------------------- 1 | 不使用任意拖动,1=>按关键帧进行拖动,2=>是按关键时间点进行拖动,3=>是自动判断(如果视频格式是.mp4就按关键时间点,.flv就按关键帧),4=>是自动判断(只要包含字符mp4就按关键时间点,只要包含字符flv就按关键帧)) 48 | // 如果不设定就 = null; 49 | $_player['ckplayer'][0]['DragMethod'] = '3'; 50 | 51 | // 视频结束后的动作 (0=>调用js函数function playerstop(),1=>循环播放,2=>暂停播放并且不调用暂停广告,3=>调用视频推荐列表的插件,4=>是清除视频流并调用js、功能和0差不多,5=>暂停并且同时调用暂停广告,6=>调用js函数(参考=0时),并且会退出全屏) 52 | // 如果不设定就 = null; 53 | $_player['ckplayer'][0]['EndAction'] = '0'; 54 | 55 | // 视频默认播放/暂停/不加载 (0=>暂停,1=>自动播放,2=>默认不加载视频,点击时才加载视频) 56 | // 如果不设定就 = null; 57 | $_player['ckplayer'][0]['DefaultAction'] = '1'; 58 | // 初始图片地址,就是在播放器默认是暂停(DefaultAction = 0)或默认不加载(DefaultAction = 2)的情况下先给一张图片遮在播放器前面,让其看起来不会一片黑。 如:http://xxx.com/xx.jpg 59 | $_player['ckplayer'][0]['DefaultAction_MASK'] = ''; 60 | 61 | // 视频直接g秒开始播放,这个功能类似跳过片头的功能。 62 | // 如果不设定就 = null; 63 | $_player['ckplayer'][0]['StartSeconds'] = null; 64 | // 视频提前j秒结束,跳过片尾的功能 (>0时,视频大于j秒时跳转至结束, <0时,视频大于(总时间-j秒)时跳转) 65 | // 如果不设定就 = null; 66 | $_player['ckplayer'][0]['EndSeconds'] = null; 67 | 68 | // 提示点时间 如 30|60鼠标经过进度栏30秒,60秒会提示CuePoints_TEXT指定的相应的文字 69 | // 如果不设定就 = null; 70 | $_player['ckplayer'][0]['CuePoints_TIME'] = null; 71 | // 提示点文字 如:提示点1|提示点2 72 | $_player['ckplayer'][0]['CuePoints_TEXT'] = ''; 73 | 74 | // 是否是直播视频流。 0不是,1是,当=1时,播放器会自动锁定进度栏和快进快退按钮 75 | $_player['ckplayer'][0]['Live'] = '0'; 76 | 77 | //固定视频比例,比如wh:'16:9',则视频将会以16:9的比例进行计算 78 | $_player['ckplayer'][0]['Proportion'] = null; 79 | 80 | // 视频拖动所需的文字定义值 81 | $_player['ckplayer'][0]['VideoDragStr'] = 'start'; 82 | ?> -------------------------------------------------------------------------------- /api/resource/local/TV_FUN.php: -------------------------------------------------------------------------------- 1 | data->fsps->mult; 24 | 25 | if(!empty($vodkey)){ 26 | $i=0; 27 | //得到集数 28 | foreach($data as $value){ 29 | $serialid[$i] = $value->serialid; 30 | $hashid[$i] = $value->hashid; 31 | $full[$i] = $value->full; 32 | $i++; 33 | } 34 | //得到full 35 | $full = array_combine($serialid, $full); 36 | $full = $full[$videoid]; 37 | //得到集数的hashid 38 | $data = array_combine($serialid, $hashid); 39 | $data = $data[$videoid]; 40 | }else{ 41 | $full = $data[0]->name; 42 | $data = $data[0]->hashid; 43 | } 44 | //组建json 45 | $content = getfile('http://jobsfe.funshion.com/query/v1/mp4/'.$data.'.json','http://api.funshion.com'); 46 | $json = json_decode($content); 47 | //得到标题 48 | if(!empty($full))$video['subject'] = $full; 49 | //得到bytes 50 | $bits = $json->playlist[0]->bits; 51 | $video['data'][0]['bytes'] = $bits; 52 | //得到duration 53 | $size = $json->playlist[0]->size; 54 | $video['data'][0]['duration'] = $size; 55 | //得到MP4 56 | $mp4 = $json->playlist[0]->urls[0]; 57 | $video['data'][0]['src'] = $mp4; 58 | 59 | if(empty($video['data'][0]['src']))return false; 60 | 61 | return $video; 62 | 63 | } 64 | 65 | function GetVideo_HTML5($key, $hdstyle){ 66 | 67 | list($videoid_str, $key_str) = explode('_', strrev($key), 2); 68 | $vodkey = strrev($key_str); 69 | $videoid = strrev($videoid_str); 70 | //获取数据 71 | $content = getfile('http://api.funshion.com/ajax/vod_panel/'.$key.$vodkey.'/w-1','api.funshion.com'); 72 | $data = json_decode($content); 73 | $data = $data->data->fsps->mult; 74 | 75 | if(!empty($vodkey)){ 76 | $i=0; 77 | //得到集数 78 | foreach($data as $value){ 79 | $serialid[$i] = $value->serialid; 80 | $hashid[$i] = $value->hashid; 81 | $full[$i] = $value->full; 82 | $i++; 83 | } 84 | //得到full 85 | $full = array_combine($serialid, $full); 86 | $full = $full[$videoid]; 87 | //得到集数的hashid 88 | $data = array_combine($serialid, $hashid); 89 | $data = $data[$videoid]; 90 | }else{ 91 | $full = $data[0]->name; 92 | $data = $data[0]->hashid; 93 | } 94 | //组建json 95 | $content = getfile('http://jobsfe.funshion.com/query/v1/mp4/'.$data.'.json','http://api.funshion.com'); 96 | $json = json_decode($content); 97 | //得到标题 98 | if(!empty($full))$video['subject'] = $full; 99 | //得到bytes 100 | $bits = $json->playlist[0]->bits; 101 | $video['data'][0]['bytes'] = $bits; 102 | //得到duration 103 | $size = $json->playlist[0]->size; 104 | $video['data'][0]['duration'] = $size; 105 | //得到MP4 106 | $mp4 = $json->playlist[0]->urls[0]; 107 | $video['data'][0]['src'] = $mp4; 108 | 109 | if(empty($video['data'][0]['src']))return false; 110 | 111 | return $video; 112 | } 113 | 114 | ?> -------------------------------------------------------------------------------- /player/related.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | {font color="#FFDD00" face="新宋体"}精彩视频推荐{/font} 4 | 5 | 600,400,0xFFDD00,20 6 | 14 | 120,90 15 | 16 | 150,175,100 17 | 23 | {a href="[url]" target="_blank"}{font color="#FFFFFF" face="新宋体"}[title]{/font}{/a} 24 | 25 | 26 | 27 | 120,42,3 28 | 29 | 30 | 31 | temp/1.jpg 32 | http://www.ckplayer.com/index.php?id=1 33 | 1:这里调用的文件配置在ckplayer/related.xml里 34 | 35 | 36 | temp/2.jpg 37 | http://www.ckplayer.com/index.php?id=2 38 | 2:支持多页调用 39 | 40 | 41 | temp/3.jpg 42 | http://www.ckplayer.com/index.php?id=3 43 | 3:文本请保持在二行,不能多于三行,多于三行将不显示 44 | 45 | 46 | temp/4.jpg 47 | http://www.ckplayer.com/index.php?id=3 48 | 4:支持多行调用,多页调用 49 | 50 | 51 | temp/5.jpg 52 | http://www.ckplayer.com/index.php?id=2 53 | 5:感谢对ckplayer的支持 54 | 55 | 56 | temp/6.jpg 57 | http://www.ckplayer.com/index.php?id=1 58 | 6:最多两行,请不要超过二行 59 | 60 | 61 | temp/3.jpg 62 | http://www.ckplayer.com/index.php?id=1 63 | 7:这里调用的文件配置在ckplayer/related.xml里 64 | 65 | 66 | temp/5.jpg 67 | http://www.ckplayer.com/index.php?id=2 68 | 8:支持多页调用 69 | 70 | 71 | temp/4.jpg 72 | http://www.ckplayer.com/index.php?id=3 73 | 9:文本请保持在二行,不能多于三行,多于三行将不显示 74 | 75 | 76 | temp/1.jpg 77 | http://www.ckplayer.com/index.php?id=3 78 | 10:支持多行调用,多页调用 79 | 80 | 81 | temp/2.jpg 82 | http://www.ckplayer.com/index.php?id=2 83 | 11:感谢对ckplayer的支持 84 | 85 | 86 | temp/6.jpg 87 | http://www.ckplayer.com/index.php?id=1 88 | 12:最多两行,请不要超过二行 89 | 90 | 91 | temp/5.jpg 92 | http://www.ckplayer.com/index.php?id=1 93 | 13:这里调用的文件配置在ckplayer/related.xml里 94 | 95 | 96 | temp/4.jpg 97 | http://www.ckplayer.com/index.php?id=2 98 | 14:支持多页调用 99 | 100 | 101 | temp/6.jpg 102 | http://www.ckplayer.com/index.php?id=3 103 | 15:文本请保持在二行,不能多于三行,多于三行将不显示 104 | 105 | 106 | temp/3.jpg 107 | http://www.ckplayer.com/index.php?id=3 108 | 16:支持多行调用,多页调用 109 | 110 | 111 | temp/1.jpg 112 | http://www.ckplayer.com/index.php?id=2 113 | 17:感谢对ckplayer的支持 114 | 115 | 116 | temp/2.jpg 117 | http://www.ckplayer.com/index.php?id=1 118 | 18:最多两行,请不要超过二行 119 | 120 | 121 | -------------------------------------------------------------------------------- /js/offlights.js: -------------------------------------------------------------------------------- 1 | /* 2 | 该文件是从网上收集的方法,用来做开关灯的,相对于原来的程序做了一些改变,兼容了IE10 3 | */ 4 | var Offlights = { 5 | create: function() { 6 | return function() { 7 | this.initialize.apply(this, arguments) 8 | } 9 | } 10 | } 11 | var OverLay = Offlights.create(); 12 | OverLay.prototype = { 13 | initialize: function(options) { 14 | this.SetOptions(options); 15 | this.browser = (function(ua){ 16 | var a=new Object(); 17 | var b = { 18 | msie: /msie/.test(ua) && !/opera/.test(ua), 19 | opera: /opera/.test(ua), 20 | safari: /webkit/.test(ua) && !/chrome/.test(ua), 21 | firefox: /firefox/.test(ua), 22 | chrome: /chrome/.test(ua) 23 | }; 24 | var vMark = ""; 25 | for (var i in b) { 26 | if (b[i]) { vMark = "safari" == i ? "version" : i; break; } 27 | } 28 | b.version = vMark && RegExp("(?:" + vMark + ")[\\/: ]([\\d.]+)").test(ua) ? RegExp.$1 : "0"; 29 | b.ie = b.msie; 30 | b.ie6 = b.msie && parseInt(b.version, 10) == 6; 31 | b.ie7 = b.msie && parseInt(b.version, 10) == 7; 32 | b.ie8 = b.msie && parseInt(b.version, 10) == 8; 33 | a.B=vMark; 34 | a.V=b.version; 35 | return a; 36 | })(window.navigator.userAgent.toLowerCase()); 37 | this.isIE = this.browser['B']=='msie' ? true : false; 38 | this.isIE6 = (this.isIE && this.browser['V']==6)?true:false; 39 | this._K_ = function(id) {return "string" == typeof id ? document.getElementById(id) : id}; 40 | this.Lay = this._K_(this.options.Lay) || document.body.insertBefore(document.createElement("div"), document.body.childNodes[0]); 41 | this.Color = this.options.Color; 42 | this.Opacity = parseInt(this.options.Opacity); 43 | this.zIndex = parseInt(this.options.zIndex); 44 | with(this.Lay.style) { 45 | display = "none"; 46 | zIndex = this.zIndex; 47 | left = top = 0; 48 | position = "fixed"; 49 | width = height = "100%" 50 | } 51 | if (this.isIE6) { 52 | this.Lay.style.position = "absolute"; 53 | this._resize = this.Bind(this, 54 | function() { 55 | this.Lay.style.width = Math.max(document.documentElement.scrollWidth, document.documentElement.clientWidth) + "px"; 56 | this.Lay.style.height = Math.max(document.documentElement.scrollHeight, document.documentElement.clientHeight) + "px" 57 | }); 58 | this.Lay.innerHTML = '' 59 | } 60 | }, 61 | Bind:function(object, fun) { 62 | return function() { 63 | return fun.apply(object, arguments) 64 | } 65 | }, 66 | Extend :function(destination, source) { 67 | for (var property in source) { 68 | destination[property] = source[property] 69 | } 70 | }, 71 | SetOptions: function(options) { 72 | this.options = { 73 | Lay: null, 74 | Color: "#000", 75 | Opacity: 100, 76 | zIndex: 50 77 | }; 78 | this.Extend(this.options, options || {}) 79 | }, 80 | Show: function() { 81 | if (this.isIE6) { 82 | this._resize(); 83 | window.attachEvent("onresize", this._resize) 84 | } 85 | with(this.Lay.style) { 86 | this.isIE ? filter = "alpha(opacity:" + this.Opacity + ")": opacity = this.Opacity / 100; 87 | backgroundColor = this.Color; 88 | display = "block" 89 | } 90 | }, 91 | Close: function() { 92 | this.Lay.style.display = "none"; 93 | if (this.isIE6) { 94 | window.detachEvent("onresize", this._resize) 95 | } 96 | } 97 | }; 98 | var LightBox = Offlights.create(); 99 | LightBox.prototype = { 100 | initialize: function(options) { 101 | this.OverLay = new OverLay(options); 102 | }, 103 | Show: function(options) { 104 | this.OverLay.Show(); 105 | }, 106 | Close: function() { 107 | this.OverLay.Close(); 108 | } 109 | }; 110 | -------------------------------------------------------------------------------- /api/resource/local/TV_LETV.php: -------------------------------------------------------------------------------- 1 | "720P",1 => "350",2 => "1080P",3 => "1000"); 19 | 20 | $video['Nowhds'] = $hds = $hdstyle >= 0 && $hdstyle < 4 ? $hdstyle : 3; 21 | 22 | $video['mixhds'] = 4; 23 | 24 | //许可 25 | $url = 'http://api.letv.com/time?tn='.microtime(); 26 | $content = getfile($url,'http://www.letv.com'); 27 | $content = json_decode($content); 28 | if(empty($content->stime)) return; 29 | $tkey = GenerateKey($content->stime); 30 | //GenerateKey(time()) 31 | if(!is_numeric($tkey)) return; 32 | //加载信息 33 | $info = getfile('http://api.letv.com/mms/out/video/playJson?id='.$key.'&platid=1&splatid=101&domain=www.letv.com&tkey='.$tkey,'http://www.letv.com' , null); 34 | $json = json_decode($info); 35 | $playurl = $json->playurl; 36 | //视频标题 37 | if(!empty($playurl->title))$video['subject'] = $playurl->title; 38 | 39 | //视频路径 40 | $hd = $hdstr[$hds]; 41 | $i=0; 42 | if(!empty($playurl->duration))$video['data'][$i]['duration'] = $playurl->duration; 43 | 44 | $domain = $playurl->domain[0]; 45 | 46 | $ur = $json->playurl->dispatch; 47 | $dispatch = get_object_vars($ur); 48 | //Ultra-clear format 49 | if(array_key_exists("1000", $dispatch)) 50 | $vurl = $dispatch["1000"][0]; 51 | //1080P format 52 | elseif(array_key_exists("1080P", $dispatch)) 53 | $vurl = $dispatch["1080P"][0]; 54 | //720p format 55 | elseif(array_key_exists("720P", $dispatch)) 56 | $vurl = $dispatch["720P"][0]; 57 | //ormal format 58 | else 59 | $vurl = $dispatch["350"][0]; 60 | $url = str_replace("tss=ios", "tss=no", $vurl).'&format=1&sign=letv&expect=3000&rateid='.$hd; 61 | $dour= $domain.$url; 62 | $vid = getfile($dour,'http://www.letv.com'); 63 | $content = json_decode($vid); 64 | $video['data'][$i]['src'] = $content->location; 65 | 66 | if(empty($video['data'][0]['src']))return false; 67 | 68 | return $video; 69 | } 70 | 71 | function GetVideo_HTML5($key, $hdstyle){ 72 | 73 | 74 | 75 | //高清格式信息 76 | $hdstr = array(0 => "720P",1 => "350",2 => "1080P",3 => "1000"); 77 | 78 | $video['Nowhds'] = $hds = $hdstyle >= 0 && $hdstyle < 4 ? $hdstyle : 0; 79 | 80 | $video['mixhds'] = 4; 81 | 82 | //许可 83 | $url = 'http://api.letv.com/time?tn='.microtime(); 84 | $content = getfile($url,'http://www.letv.com'); 85 | $content = json_decode($content); 86 | if(empty($content->stime)) return; 87 | $tkey = GenerateKey($content->stime); 88 | //GenerateKey(time()) 89 | if(!is_numeric($tkey)) return; 90 | //加载信息..// http://api.letv.com/mms/out/common/geturl/http://api.letv.com/mms/out/video/playJson 91 | $info = getfile('http://api.letv.com/mms/out/video/playJson?id='.$key.'&platid=1&splatid=101&domain=www.letv.com&tkey='.$tkey,'http://m.letv.com' , null); 92 | $json = json_decode($info); 93 | $playurl = $json->playurl; 94 | //视频路径 95 | $hd = $hdstr[$hds]; 96 | 97 | //乐视域名 98 | $domain = $playurl->domain[0]; 99 | $ur = $json->playurl->dispatch; 100 | $dispatch = get_object_vars($ur); 101 | //Ultra-clear format 102 | if(array_key_exists("1000", $dispatch)) 103 | $vurl = $dispatch["1000"][0]; 104 | //1080P format 105 | elseif(array_key_exists("1080P", $dispatch)) 106 | $vurl = $dispatch["1080P"][0]; 107 | //720p format 108 | elseif(array_key_exists("720P", $dispatch)) 109 | $vurl = $dispatch["720P"][0]; 110 | //ormal format 111 | else 112 | $vurl = $dispatch["350"][0]; 113 | $url = str_replace("tss=ios", "tss=no", $vurl).'&format=1&sign=letv&expect=3000&rateid='.$hd; 114 | $dour= $domain.$url; 115 | $vid = getfile($dour,'http://www.letv.com'); 116 | $content = json_decode($vid); 117 | $video['data'][0]['src'] = $content->location; 118 | 119 | if(empty($video['data'][0]['src']))return false; 120 | 121 | return $video; 122 | } 123 | /* 124 | function GenerateKey($t){ 125 | for($e, $s = 0; $s < 8; $s++){ 126 | $e = 1 & $t; 127 | $t >>= 1; 128 | $e <<= 31; 129 | $t += $e; 130 | } 131 | return $t^185025305; 132 | }*/ 133 | 134 | 135 | /* 136 | function GenerateKeyRor($value, $key) { 137 | $i = 0; 138 | while ( $i < $key ) { 139 | $value = (0x7fffffff & ($value >> 1)) | (($value & 1) << 31); 140 | ++ $i; 141 | } 142 | return $value; 143 | } 144 | function GenerateKey($stime) { 145 | $key = 773625421; 146 | $value = GenerateKeyRor ( $stime, $key % 13 ); 147 | $value = $value ^ $key; 148 | $value = GenerateKeyRor ( $value, $key % 17 ); 149 | return $value; 150 | } 151 | 152 | */ 153 | 154 | 155 | function GenerateKeyRor($value, $key){ 156 | $i = 0; 157 | while($i < $key){ 158 | $value = (2147483647 & ($value >> 1)) | (($value & 1) << 31); 159 | ++ $i; 160 | } 161 | return $value; 162 | } 163 | 164 | function GenerateKey($stime){ 165 | $key = 773625421; 166 | $value = GenerateKeyRor($stime, $key % 13); 167 | $value = $value ^ $key; 168 | $value = GenerateKeyRor($value, $key % 17); 169 | return $value; 170 | } 171 | 172 | 173 | 174 | ?> -------------------------------------------------------------------------------- /api/function/function_vod.php: -------------------------------------------------------------------------------- 1 | = 0 && intval($_GET['hdstyle']) <= 10 ? intval($_GET['hdstyle']) : $defHds; 18 | //if (isMobile()) { $player='download'; $mobile = 1;} 19 | if (isset($_GET['mobile'])) { $player='download'; $mobile = 1;} 20 | 21 | if(empty($key) && empty($url) && empty($skey))die(); 22 | 23 | header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 24 | header('Last-Modified: '.gmdate( 'D, d M Y H:i:s' ).' GMT'); 25 | header('Cache-Control: no-store, no-cache, must-revalidate'); 26 | header('Cache-Control: post-check=0, pre-check=0', false); 27 | header('Pragma: no-cache'); 28 | 29 | if(empty($mobile) && empty($download)&& empty($mp4))header('Content-Type: text/xml'); 30 | 31 | $video = $video2 = $video3 = array(); 32 | 33 | if(!empty($skey)){ 34 | 35 | list($type_str, $key_str) = explode('_', strrev($skey), 2); 36 | 37 | if(!empty($key_str)){ 38 | 39 | if(b64UrlCheck(strrev($key_str)) == true){ 40 | 41 | $url = strpos(base64_decode(strrev($key_str)), '://')? base64_decode(strrev($key_str)) : 'http://'. base64_decode(strrev($key_str)); 42 | 43 | }else{ 44 | 45 | $key = strrev($key_str); 46 | 47 | if(!empty($_config['vodkey']))$key = passport_decrypt($key,$_config['vodkey']); 48 | 49 | } 50 | 51 | } 52 | 53 | if(strpos($type_str, '.')){ 54 | 55 | list($type, $hds) = explode('.', strrev($type_str), 2); 56 | 57 | }else{ 58 | 59 | $type = strtolower(strrev($type_str)); 60 | 61 | } 62 | 63 | } 64 | 65 | if(!empty($url)){ 66 | 67 | if(!empty($_config['vodkey']))$url = passport_decrypt($url,$_config['vodkey']); 68 | 69 | if(strpos($url, '.')){ 70 | 71 | $host = parse_url($url, PHP_URL_HOST); 72 | if(empty($host))$host = parse_url('http://'.$url, PHP_URL_HOST); 73 | 74 | }else{ 75 | 76 | if(b64UrlCheck($url) == true){ 77 | 78 | $url = strpos(base64_decode($url), '://')? base64_decode($url) : 'http://'. base64_decode($url); 79 | 80 | }else{ 81 | header("Content-Type: text/html;charset=utf-8"); 82 | echo '对不起!我们暂时不提供该网站的解析.'.die(); 83 | 84 | } 85 | 86 | } 87 | 88 | $host = parse_url($url, PHP_URL_HOST); 89 | 90 | $array = array_slice(explode(".", $host), -2, 1); 91 | 92 | $video['videourl'] = $url; 93 | 94 | $video['videotype'] = $type = strtolower($array[0]); 95 | 96 | } 97 | 98 | if((!empty($key) && !empty($type)) || !empty($url)){ 99 | 100 | if(kms_strpos($url, explode(',', $_config['Passage']))){ 101 | 102 | $video['data'][0]['src'] = $url; 103 | 104 | }else{ 105 | 106 | 107 | 108 | if(!empty($type)){ 109 | 110 | if(empty($video['videotype']))$video['videotype'] = $type; 111 | 112 | $_extractorFile = './resource/key/ID_'.strtoupper($type).'.php'; 113 | 114 | if(file_exists($_extractorFile))include_once($_extractorFile); 115 | 116 | } 117 | 118 | if(!empty($url) && function_exists('GetVid') && empty($key))$key = GetVid($url); 119 | 120 | 121 | 122 | if(!empty($key) && function_exists('GetUrls')){ 123 | 124 | $_url = GetUrls($key); 125 | 126 | @$video['videourl'] = $url = !empty($_url) ? $_url : $url; 127 | 128 | } 129 | 130 | if(empty($video['videourl']))$video['videourl'] = !empty($url) ? $url : null; 131 | 132 | $listmode = explode("->", $_config['extractor']['order']); 133 | 134 | $userkey=$_config['userkey']; 135 | 136 | foreach($listmode as $value){ 137 | 138 | $videos = _LoadOder($value, $url, $type, $key, $hds, $_extractor, $mobile); 139 | 140 | if(!empty($videos))break; 141 | 142 | } 143 | 144 | if(!empty($videos))$video = array_merge($video, $videos); 145 | 146 | } 147 | if(!empty($_config['vodkey']))$key = passport_encrypt($key,$_config['vodkey']); 148 | 149 | if(empty($videos['data'][0]['src']))die(); 150 | 151 | if(!empty($mobile)){ 152 | 153 | switch($player){ 154 | 155 | case 'ckplayer': 156 | echo CreateMobile($video, $_player); 157 | break; 158 | 159 | case 'ckm': 160 | echo CreateMobile($video, $_player); 161 | break; 162 | 163 | case 'mp4': 164 | echo CreateMp4($video, $_player); 165 | break; 166 | 167 | case 'download': 168 | header("location:".$video['data'][0]['src']); 169 | break; 170 | 171 | default: 172 | header("Content-Type: text/html;charset=utf-8"); 173 | echo '对不起,我们没有提供这样的调试方法!'; 174 | 175 | } 176 | 177 | }else{ 178 | 179 | switch($player){ 180 | 181 | case 'cmp4': 182 | echo get_cmp4_merge($video, $key, $type); 183 | break; 184 | 185 | case 'ckplayer': 186 | echo get_ckplayer_xml($video, $url, $key, $type, $_player); 187 | break; 188 | 189 | case 'mp4': 190 | echo CreateMp4($video, $_player); 191 | break; 192 | 193 | case 'download': 194 | header("location:".$video['data'][0]['src']); 195 | break; 196 | 197 | default: 198 | header("Content-Type: text/html;charset=utf-8"); 199 | echo '对不起,我们没有提供这样的调试方法!'; 200 | 201 | } 202 | 203 | } 204 | 205 | } 206 | ob_end_flush(); 207 | ?> -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 72视频破解 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 37 | 38 | 39 | 40 | 41 | 42 |
43 | 82 |
83 | 84 |
85 |
86 | 87 |
88 | 89 |
90 |
91 |
92 |
93 |
94 | 现已支持以下网站视频播放: 95 |
96 |
97 |
98 |
乐视TV视频
99 |
100 |
101 |
102 |
腾讯视频
103 |
104 |
105 |
106 |
优酷视频
107 |
108 |
109 |
110 |
土豆视频
111 |
112 |
113 |
114 |
56视频
115 |
116 |
117 |
118 |
酷6视频
119 |
120 |
121 |
122 |
WASU华数视频
123 |
124 |
125 |
126 |
音悦台MV
127 |
128 |
129 |
130 |
芒果TV视频
131 |
132 |
133 |
134 |
新浪视频
135 |
136 |
137 |
138 |
网易视频
139 |
140 |
141 |
142 |
搜狐视频
143 |
144 |
145 |
146 |
6间房视频
147 |
148 |
149 |
150 |
酷狗MV视频
151 |
152 |
153 |
154 |
爆米花视频
155 |
156 |
157 |
158 |
凤凰视频
159 |
160 |
161 |
162 |
看看新闻网视频
163 |
164 |
165 |
166 |
时光网视频
167 |
168 |
169 |
170 |
酷我音乐MV视频
171 |
172 |
173 |
174 |
1905电影网视频
175 |
176 |
177 |
178 |
糖豆视频
179 |
180 |
181 |
182 |
央视网
183 |
184 |
近期开放更多,敬请关注...
185 |
186 | 187 |
188 | 189 | 190 | 231 |
232 | 233 | 234 | -------------------------------------------------------------------------------- /player/ckplayer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 265 | -------------------------------------------------------------------------------- /2/swfobjects.js: -------------------------------------------------------------------------------- 1 | /* SWFObject v2.2 2 | is released under the MIT License 3 | */ 4 | var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y0){for(var af=0;af0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad'}}aa.outerHTML='"+af+"";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab "0") { 17 | $ykvid = checkyk($url); 18 | $ykdata = getyk($ykvid,$qxd); 19 | getckxml($ykdata); 20 | exit; 21 | } 22 | } 23 | $id = $_GET["id"]; 24 | if ($id && $id != "") { 25 | $ykid = stripos($id, "youku"); 26 | if ($ykid > "0") { 27 | $ykidlists = explode(SG, $id);//cq_XOTE4NjE2MzQ4_youku 28 | $arrlen = count($ykidlists);//3 29 | // 判断分割后数组的长度,原本(cq_XOTE4NjE2MzQ4_youku)的长度为3 30 | if ($arrlen != 3) {//如果不等于3,就直接获取id的值,也就是下标为0的值 31 | $ykid = $ykidlists[0]; 32 | $ykdata = getyk($ykid,$qxd); 33 | getckxml($ykdata); 34 | //不管有没有清晰度,默认传个空参数,避免有些空间会出错 35 | exit; 36 | } 37 | $qxd = $ykidlists[0]; 38 | $ykid = $ykidlists[1]; 39 | $ykdata = getyk($ykid,$qxd); 40 | getckxml($ykdata); 41 | exit; 42 | } 43 | } 44 | //调用出错 45 | Get_CW(); 46 | //利用分割符来取出优酷vid值 47 | function checkyk($url){ 48 | //根据优酷网址的特征,利用下划线来分割,并且取到下标为2的值 49 | $vid = explode('_', $url); 50 | if ($vid[2]){ 51 | //接着用点来分割,取出下标为0的值。也就是VID了 52 | $id = explode('.', $vid[2]); 53 | } 54 | if ($id[0]){ 55 | //将VID传入取优酷视频信息的方法进行下一步操作 56 | return $id[0]; 57 | } 58 | return; 59 | } 60 | function getyk($vid, $qxd){ 61 | $api = "http://play.youku.com/play/get.json"; 62 | $app = "&ran="; 63 | $ctype = "&ct=".chr(dechex(bindec(X))).chr(dechex(bindec(Y))); 64 | $kurl ="http://k.youku.com/player/getFlvPath/sid/"; 65 | $url = $api . "?vid=" . $vid . $ctype . $app . rand(0,9999); 66 | $html = get_curl_contents($url); 67 | $jdata = json_decode($html); 68 | $jdata1 = $jdata->data; 69 | $oip = $jdata1->security->ip; 70 | $ep = $jdata1->security->encrypt_string; 71 | if ($ep =="") { 72 | return "视频不存在!"; 73 | exit; 74 | } 75 | $stream = $jdata1->stream; 76 | $st = explode('_', yk_e('becaf9be', yk_na($ep))); 77 | $sid = $st[0]; 78 | $token = $st[1]; 79 | if ($sid=="") { 80 | echo "sidnull"; 81 | return; 82 | } 83 | if ($token=="") { 84 | echo "tokennull"; 85 | return; 86 | } 87 | $definition = $stream; 88 | // 当没有传指定清晰度的值的时候,默认输出最高清晰度,所以需要循环视频所有清晰度,然后再取最后一个清晰度。 89 | // 定义一个数组用来存放清晰度数据 90 | $types = array(); 91 | // 用foreach循环来把获得的清晰度数据加入到指定数组中 可以用来智能识别清晰度的值 92 | foreach ($definition as $key => $v) { 93 | $stream_type = $v->stream_type; 94 | $audio_lang = $v->audio_lang; 95 | if ($stream_type == "3gphd") { 96 | //3gp清晰度一般用不到,因为是分段的,改成手机端也放不了,所以这里直接跳过 97 | continue; 98 | } 99 | if ($audio_lang == "default" || $audio_lang == "guoyu") { 100 | array_push($types, $stream_type); 101 | } 102 | } 103 | $xhcs = count($types); 104 | $hden2 = array("bq","gq","cq","hd2"); 105 | if ($qxd == "") { 106 | $vtype = $hden2[count($types)-1]; 107 | $qxurl = $vtype.SG.$vid.HZ; 108 | $vtype = $types[count($types)-1]; 109 | }else{ 110 | $vtype2 = $qxd; 111 | $qxurl = $vtype2.SG.$vid.HZ; 112 | } 113 | 114 | // 判断是否存在该清晰度 115 | // 重置清晰度的值 将传过来的参数cq/gq/bq/转化成原始清晰度数据 116 | /*如果传的参数含有清晰度则需要进一步判断*/ 117 | // 加个if判断,提高效率,如果不加if不管参数是否带清晰度都会执行一次。 118 | if ($vtype2 != "") { 119 | for ($i=0; $i < count($types); $i++) { 120 | if ($hden2[$i] == $vtype2) { 121 | $num = $i; 122 | $vtype = $types[$num]; 123 | break; 124 | } 125 | } 126 | // 判断是否存在该清晰度 127 | if ($vtype == "") { 128 | $vtype = $types[count($types)-1];//如果不存在指定的清晰度,则默认输出该视频存在的最高清晰度 129 | } 130 | } 131 | $yktypes = array("flvhd","mp4hd","mp4hd2","mp4hd3"); 132 | $ykhd = array("0","1","2","3"); 133 | $ykformatname = array("flv","mp4","flv","flv"); 134 | $ykclear = array("标清","高清","超清","1080"); 135 | $ykarr = array("type"=>$yktypes,"hd"=>$ykhd,"fn"=>$ykformatname,"cl"=>$ykclear); 136 | $title = $jdata1->show->title; 137 | if ($title=="") { 138 | $title = $jdata1->video->title; 139 | } 140 | $xml["data"]["qxurl"] = $qxurl; 141 | $xml["data"]["defa"] = getdefa($xhcs,$vid); 142 | $xml["data"]["deft"] = getdeft($xhcs); 143 | $xml["data"]["phpself"] = $_SERVER['PHP_SELF']; 144 | $xml["data"]["title"] = $title; 145 | foreach ($stream as $key => $v) { 146 | $stream_fileid = $v->stream_fileid; 147 | $stream_type = $v->stream_type; 148 | if ($stream_type == $vtype) { 149 | $segs = $v->segs; 150 | $fileid_1 = substr($stream_fileid, 0, 8); 151 | $fileid_2 = substr($stream_fileid, 10); 152 | for ($i=0; $i < count($types); $i++) { 153 | if ($stream_type == $ykarr["type"][$i]) { 154 | $hd = $ykarr["hd"][$i]; 155 | $formatname = $ykarr["fn"][$i]; 156 | $clear = $ykarr["cl"][$i]; 157 | break; 158 | } 159 | } 160 | $xml["data"]["clear"] = $clear; 161 | foreach ($segs as $k => $value) { 162 | $hex = strtoupper(dechex($k)) .""; 163 | if (strlen($hex) < 2) 164 | $hex = '0' . $hex; 165 | $fileid = $fileid_1 . $hex . $fileid_2; 166 | $ep1 = urlencode(iconv("gbk", "UTF-8", yk_d(yk_e('bf7e5f01', $sid . '_' . $fileid . '_' . $token)))); 167 | $key = $value->key; 168 | $ts = $value->total_milliseconds_video; 169 | $downlink = $kurl . $sid ."_".$hex."/st/" . $formatname . "/fileid/" . $fileid. "?K=" . $key . "&hd=".$hd."&myp=0&ts=".intval($ts/1E3). "&ypp=0&ymovie=1&ctype=".str_replace("&ct=", "", $ctype)."&ev=1&token=". $token ."&oip=". $oip ."&ep=". $ep1; 170 | $xml["data"]["url"][$k]["downlink"] = $downlink; 171 | $xml["data"]["url"][$k]["size"] = $value->size; 172 | $xml["data"]["url"][$k]["ts"] = intval($ts/1E3); 173 | } 174 | return $xml; 175 | } 176 | } 177 | return; 178 | } 179 | function getckxml($data){ 180 | $ckxml .= "\n"; 181 | $ckxml .= "\n"; 182 | if ($data["data"]["qxurl"] != "") { 183 | $ckxml .= " \n"; 184 | $ckxml .= "{h->3}{a->".$data["data"]["qxurl"]."}{defa->".$data["data"]["defa"]."}{deft->".$data["data"]["deft"]."}{f->".$data["data"]["phpself"]."?id=[\$pat]}\n"; 185 | $ckxml .= " \n"; 186 | } 187 | if ($data["data"]["title"] != "") { 188 | $ckxml .= " \n"; 189 | $ckxml .= " \n"; 190 | $ckxml .= " \n"; 191 | } 192 | if ($data["data"]["clear"] != "") { 193 | $ckxml .= " \n"; 194 | $ckxml .= " \n"; 195 | $ckxml .= " \n"; 196 | } 197 | if ($data["data"]["createtime"] != "") { 198 | $ckxml .= " \n"; 201 | } 202 | foreach ($data["data"]["url"] as $k => $value) { 203 | $downlink = $value["downlink"]; 204 | $size = $value["size"]; 205 | $ts = $value["ts"]; 206 | $ckxml .= " \n"; 215 | } 216 | $ckxml .= ""; 217 | echo $ckxml; 218 | } 219 | function getdefa($xhcs,$vid){ 220 | $hden2 = array("bq","gq","cq","hd2"); 221 | for ($i=0; $i < $xhcs; $i++) { 222 | if ($i>0) { 223 | $defa .= "|".$hden2[$i].SG.$vid.HZ; 224 | }else{ 225 | $defa .= $hden2[$i].SG.$vid.HZ; 226 | } 227 | } 228 | return $defa; 229 | } 230 | function getdeft($xhcs){ 231 | $hdcn = array("标清","高清","超清","1080P"); 232 | for ($i=0; $i < $xhcs; $i++) { 233 | if ($i>0) { 234 | $qxd .= "|".$hdcn[$i]; 235 | }else{ 236 | $qxd .= $hdcn[$i]; 237 | } 238 | } 239 | return $qxd; 240 | } 241 | function yk_na($a){ 242 | if (!$a) 243 | return ""; 244 | $sz = "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1"; 245 | $h = explode(',', $sz); 246 | $i = strlen($a); 247 | $f = 0; 248 | for ($e = ""; $f < $i;) { 249 | do 250 | $c = $h[charCodeAt($a, $f++) & 255]; while ($f < $i && -1 == $c); 251 | if (-1 == $c) 252 | break; 253 | do 254 | $b = $h[charCodeAt($a, $f++) & 255]; while ($f < $i && -1 == $b); 255 | if (-1 == $b) 256 | break; 257 | $e .= fromCharCode($c << 2 | ($b & 48) >> 4); 258 | do { 259 | $c = charCodeAt($a, $f++) & 255; 260 | if (61 == $c) 261 | return $e; 262 | $c = $h[$c]; 263 | } while ($f < $i && -1 == $c); 264 | if (-1 == $c) 265 | break; 266 | $e .= fromCharCode(($b & 15) << 4 | ($c & 60) >> 2); 267 | do { 268 | $b = charCodeAt($a, $f++) & 255; 269 | if (61 == $b) 270 | return $e; 271 | $b = $h[$b]; 272 | } while ($f < i && -1 == $b); 273 | if (-1 == $b) 274 | break; 275 | $e .= fromCharCode(($c & 3) << 6 | $b); 276 | } 277 | return $e; 278 | } 279 | function yk_d($a){ 280 | if (!$a) 281 | return ''; 282 | $zm = "abcdefghijklmnopqrstuvwxyz"; 283 | $f = strlen($a); 284 | $b = 0; 285 | $str = strtoupper($zm) . strtolower($zm) . '0123456789+/'; 286 | for ($c = ''; $b < $f;) { 287 | $e = charCodeAt($a, $b++) & 255; 288 | if ($b == $f) { 289 | $c .= charAt($str, ($e >> 2)); 290 | $c .= charAt($str, (($e & 3) << 4)); 291 | $c .= "=="; 292 | break; 293 | } 294 | $g = charCodeAt($a, $b++); 295 | if ($b == f) { 296 | $c .= charAt($str, ($e >> 2)); 297 | $c .= charAt($str, (($e & 3) << 4 | ($g & 240) >> 4)); 298 | $c .= charAt($str, (($g & 15) << 2)); 299 | $c .= "="; 300 | break; 301 | } 302 | $h = charCodeAt($a, $b++); 303 | $c .= charAt($str, ($e >> 2)); 304 | $c .= charAt($str, (($e & 3) << 4 | ($g & 240) >> 4)); 305 | $c .= charAt($str, (($g & 15) << 2 | ($h & 192) >> 6)); 306 | $c .= charAt($str, ($h & 63)); 307 | } 308 | return $c; 309 | } 310 | function yk_e($a, $c){ 311 | for ($f = 0, $i, $e = '', $h = 0; 256 > $h; $h++) 312 | $b[$h] = $h; 313 | for ($h = 0; 256 > $h; $h++) { 314 | $f = ($f + $b[$h] + charCodeAt($a, $h % strlen($a))) % 256; 315 | $i = $b[$h]; 316 | $b[$h] = $b[$f]; 317 | $b[$f] = $i; 318 | } 319 | for ($q = $f = $h = 0; $q < strlen($c); $q++) { 320 | $h = ($h + 1) % 256; 321 | $f = ($f + $b[$h]) % 256; 322 | $i = $b[$h]; 323 | $b[$h] = $b[$f]; 324 | $b[$f] = $i; 325 | $e .= fromCharCode(charCodeAt($c, $q) ^ $b[($b[$h] + $b[$f]) % 256]); 326 | } 327 | return $e; 328 | } 329 | //接受一个指定的 Unicode 值,然后返回一个字符串 330 | function fromCharCode($codes){ 331 | if (is_scalar($codes)) 332 | $codes = func_get_args(); 333 | $str = ''; 334 | foreach ($codes as $code) 335 | $str .= chr($code); 336 | return $str; 337 | } 338 | //返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。 339 | function charCodeAt($str, $index){ 340 | static $charCode = array(); 341 | $key = md5($str); 342 | $index = $index + 1; 343 | if (isset($charCode[$key])) { 344 | return $charCode[$key][$index]; 345 | } 346 | $charCode[$key] = unpack("C*", $str); 347 | return $charCode[$key][$index]; 348 | } 349 | /*等价于as3的charAt*/ 350 | function charAt($str, $index = 0){ 351 | return substr($str, $index, 1); 352 | } 353 | //curl方法 354 | function get_curl_contents($url){ 355 | if(!function_exists('curl_init')) die('php.ini未开启php_curl.dll'); 356 | $cweb = curl_init(); 357 | curl_setopt($cweb,CURLOPT_URL,$url); 358 | curl_setopt($cweb,CURLOPT_USERAGENT,"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"); 359 | curl_setopt($cweb,CURLOPT_HEADER,0); 360 | curl_setopt($cweb,CURLOPT_RETURNTRANSFER, 1); 361 | curl_setopt($cweb,CURLOPT_REFERER,"http://static.youku.com/v1.0.0595/v/swf/player_yknpsv.swf"); 362 | curl_setopt($cweb,CURLOPT_COOKIE,base64_decode("Il9feXN1aWQ9Ii50aW1lKCkuIjsi")); 363 | $cnt = curl_exec($cweb); 364 | curl_close($cweb); 365 | return $cnt; 366 | } 367 | function Get_CW(){ 368 | header("Content-Type:text/html;charset=utf-8"); 369 | echo "illegal parameters!"; 370 | exit; 371 | } 372 | ?> 373 | -------------------------------------------------------------------------------- /api/function/function_core.php: -------------------------------------------------------------------------------- 1 | $v ) 29 | { 30 | $headerArr[] = $n . ':' . $v; 31 | } 32 | $ch = curl_init($url); 33 | curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11"); 34 | curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArr); 35 | curl_setopt($ch, CURLOPT_HEADER, 1); 36 | curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 37 | $result = curl_exec($ch); 38 | 39 | 40 | return $c; 41 | }else{ 42 | $user_agent = $_SERVER['HTTP_USER_AGENT']; 43 | $url = eregi_replace('^http://', '', $url); 44 | $temp = explode('/', $url); 45 | $host = array_shift($temp); 46 | $path = '/'.implode('/', $temp); 47 | $temp = explode(':', $host); 48 | $host = $temp[0]; 49 | $port = isset($temp[1]) ? $temp[1] : 80; 50 | $fp = @fsockopen($host, $port, $errno, $errstr, 30); 51 | if ($fp){ 52 | @fputs($fp, "GET $path HTTP/1.1\r\nHost: $host\r\nAccept: */*\r\nReferer:$url\r\nUser-Agent: $user_agent\r\nConnection: Close\r\n\r\n"); 53 | } 54 | $content = ''; 55 | while ($str = @fread($fp, 4096)){ 56 | $content .= $str; 57 | } 58 | @fclose($fp); 59 | 60 | if(preg_match("/^HTTP\/\d.\d 301 Moved Permanently/is", $content)){ 61 | if(preg_match("/Location:(.*?)\r\n/is", $content, $murl)){ 62 | return getfile($murl[1]); 63 | } 64 | } 65 | 66 | if(preg_match("/^HTTP\/\d.\d 200 OK/is", $content)){ 67 | preg_match("/Content-Type:(.*?)\r\n/is", $content, $murl); 68 | $contentType = trim($murl[1]); 69 | $content = explode("\r\n\r\n", $content, 2); 70 | $content = $content[1]; 71 | } 72 | return $content; 73 | } 74 | }else{ 75 | $ip=getIP(); 76 | $ch = curl_init(); 77 | $timeout = 30; 78 | curl_setopt($ch, CURLOPT_URL, $url); 79 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 80 | curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 81 | curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-FORWARDED-FOR:$ip", "CLIENT-IP:$ip")); //构造IP 82 | curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 83 | @$ProxyAddress = !empty($proxy['Address']) ? $proxy['Address'] : PROXY_Address; 84 | if(!empty($ProxyAddress)){ 85 | curl_setopt($ch, CURLOPT_PROXY, $ProxyAddress); 86 | @$ProxyPort = !empty($proxy['Address']) ? $proxy['PORT'] : PROXY_PORT; 87 | if(!empty($ProxyPort))curl_setopt($ch, CURLOPT_PROXYPORT, $ProxyPort); 88 | @$Proxy_USER = !empty($proxy['Address']) ? $proxy['USER'] : PROXY_USER; 89 | @$Proxy_PWD = !empty($proxy['Address']) ? $proxy['PWD'] : PROXY_PWD; 90 | if(!empty($Proxy_USER))curl_setopt($ch, CURLOPT_PROXYUSERPWD, $Proxy_USER.':'.$Proxy_PWD); 91 | } 92 | if(!empty($referer))curl_setopt($ch, CURLOPT_REFERER, $referer); 93 | $c = curl_exec($ch); 94 | curl_close($ch); 95 | return $c; 96 | } 97 | } 98 | 99 | function getIP() { 100 | if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { 101 | $realip = $_SERVER['HTTP_X_FORWARDED_FOR']; 102 | } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) { 103 | $realip = $_SERVER['HTTP_CLIENT_IP']; 104 | } else { 105 | $realip = $_SERVER['REMOTE_ADDR']; 106 | } 107 | return $realip; 108 | } 109 | 110 | function proxySet($config){ 111 | 112 | define('PROXY_Address', $config['Address']); 113 | define('PROXY_PORT', $config['Port']); 114 | define('PROXY_USER', $config['USER']); 115 | define('PROXY_PWD', $config['PWD']); 116 | } 117 | 118 | function getTimestamp($digits = false){ 119 | $digits = $digits > 10 ? $digits : 10; 120 | $digits = $digits - 10; 121 | if((!$digits) || ($digits == 10)){ 122 | return time(); 123 | }else{ 124 | return number_format(microtime(true), $digits, '', ''); 125 | } 126 | } 127 | 128 | function kms_iconv($str, $charset_b, $charset_f){ 129 | if(!$charset_b || !$charset_f || !$str)return false; 130 | 131 | $charset_b = strtolower($charset_b); 132 | $charset_f = strtolower($charset_f); 133 | 134 | if($charset_b == $charset_f){ 135 | return $str; 136 | }else{ 137 | $charset_b = $charset_b == 'gbk' ? 'GB18030' : $charset_b; 138 | $charset_f = $charset_f == 'gbk' ? 'GB18030' : $charset_f; 139 | $str = iconv($charset_b, $charset_f, $str); 140 | return $str; 141 | } 142 | } 143 | 144 | function get_ckplayer_xml($video, $url, $key, $type, $_player){ 145 | 146 | foreach($_player['ckplayer'] as $config){ 147 | $video['flashvars'] = ''; 148 | if(isset($config['Proportion']))$video['flashvars'] .= '{wh->'.$config['Proportion'].'}'; 149 | if(empty($config['Live']))$video['flashvars'] .= '{lv->'.$config['Live'].'}'; 150 | if(isset($config['Volume']))$video['flashvars'] .= '{v->'.$config['Volume'].'}'; 151 | if(isset($config['StartSeconds']))$video['flashvars'] .= '{g->'.$config['StartSeconds'].'}'; 152 | if(isset($config['EndSeconds']))$video['flashvars'] .= '{j->'.$config['EndSeconds'].'}'; 153 | if(isset($config['CuePoints_TIME']))$video['flashvars'] .= '{k->'.$config['CuePoints_TIME'].'}'; 154 | if(!empty($config['CuePoints_TEXT']))$video['flashvars'] .= '{n->'.$config['CuePoints_TEXT'].'}'; 155 | if(!empty($config['PauseAD_SRC']))$video['flashvars'] .= '{d->'.$config['PauseAD_SRC'].'}'; 156 | if(!empty($config['PauseAD_IMGURL']))$video['flashvars'] .= '{u->'.$config['PauseAD_IMGURL'].'}'; 157 | if(!empty($config['BufferAD']))$video['flashvars'] .= '{z->'.$config['BufferAD'].'}'; 158 | if(isset($config['EndAction']))$video['flashvars'] .= '{e->'.$config['EndAction'].'}'; 159 | if(isset($config['DefaultAction']))$video['flashvars'] .= '{p->'.$config['DefaultAction'].'}'; 160 | if(!empty($config['DefaultAction_MASK']))$video['flashvars'] .= '{i->'.$config['DefaultAction_MASK'].'}'; 161 | $config['VideoDragStr'] = !empty($video['VideoDragStr']) ? $video['VideoDragStr'] : $config['VideoDragStr']; 162 | if(isset($config['VideoDragStr']))$video['flashvars'] .= '{q->'.$config['VideoDragStr'].'}'; 163 | $config['DragMethod'] = !empty($video['DragMethod']) ? $video['DragMethod'] : $config['DragMethod']; 164 | if(isset($config['DragMethod']))$video['flashvars'] .= '{h->'.$config['DragMethod'].'}'; 165 | if($config['Plugins']['hds']['IO'] == 1){ 166 | if(!isset($video['Nowhds']))$video['Nowhds'] = 3; 167 | if(!isset($video['mixhds']))$video['mixhds'] = 3; 168 | $video['Nowhds'] = min($video['Nowhds'], $video['mixhds']); 169 | $video['mixhds'] = min($video['mixhds'],4); 170 | if(!empty($key)){ 171 | if($config['Plugins']['hds']['Developer'] == 2){ 172 | $video['flashvars'] .= '{f->'.HOST_URL.'?v=[$pat]}'; 173 | }else{ 174 | $video['flashvars'] .= '{f->'.HOST_URL.'?v=[$pat'.$video['Nowhds'].']}'; 175 | } 176 | 177 | switch($video['mixhds']){ 178 | 179 | case '1': 180 | $a = $key.'_'.$type.'.0'; 181 | break; 182 | case '2': 183 | $a = $key.'_'.$type.'.0|'.$key.'_'.$type.'.1'; 184 | break; 185 | case '3': 186 | $a = $key.'_'.$type.'.0|'.$key.'_'.$type.'.1|'.$key.'_'.$type.'.2'; 187 | break; 188 | case '4': 189 | $a = $key.'_'.$type.'.0|'.$key.'_'.$type.'.1|'.$key.'_'.$type.'.2|'.$key.'_'.$type.'.3'; 190 | break; 191 | default: 192 | $a = $key.'_'.$type; 193 | break; 194 | } 195 | }else{ 196 | if($config['Plugins']['hds']['Developer'] == 2){ 197 | $video['flashvars'] .= '{f->'.HOST_URL.'?v=[$pat]}'; 198 | }else{ 199 | $video['flashvars'] .= '{f->'.HOST_URL.'?v=[$pat'.$video['Nowhds'].']}'; 200 | } 201 | switch($video['mixhds']){ 202 | case '1': 203 | $a = base64_encode($url).'&hdstyle=0'; 204 | break; 205 | case '2': 206 | $a = base64_encode($url).'&hdstyle=0|'.base64_encode($url).'&hdstyle=1'; 207 | break; 208 | case '3': 209 | $a = base64_encode($url).'&hdstyle=0|'.base64_encode($url).'&hdstyle=1|'.base64_encode($url).'&hdstyle=2'; 210 | break; 211 | case '4': 212 | $a = base64_encode($url).'&hdstyle=0|'.base64_encode($url).'&hdstyle=1|'.base64_encode($url).'&hdstyle=2|'.base64_encode($url).'&hdstyle=3'; 213 | break; 214 | default: 215 | $a = base64_encode($url); 216 | break; 217 | 218 | } 219 | } 220 | }else{ 221 | $video['flashvars'] .= '{f->'.HOST_URL.'?v=[$pat]}'; 222 | 223 | $a = !empty($key) ? $key.'_'.$type : base64_encode($url); 224 | } 225 | if($config['Plugins']['hds']['Developer'] == 2){ 226 | if(!empty($key)){ 227 | $ra = $key.'_'.$type.'.'.$video['Nowhds']; 228 | }else{ 229 | $ra = base64_encode($url).'&hdstyle='.$video['Nowhds']; 230 | } 231 | $Tcount = min(count($config['Plugins']['hds']['name']), $video['mixhds']); 232 | switch($Tcount){ 233 | case '1': 234 | $deft = base64_decode($config['Plugins']['hds']['name'][0]); 235 | break; 236 | case '2': 237 | $deft = base64_decode($config['Plugins']['hds']['name'][0]).'|'.base64_decode($config['Plugins']['hds']['name'][1]); 238 | break; 239 | case '3': 240 | $deft =base64_decode($config['Plugins']['hds']['name'][0]).'|'.base64_decode($config['Plugins']['hds']['name'][1]).'|'.base64_decode($config['Plugins']['hds']['name'][2]); 241 | break; 242 | case 4: 243 | $deft = base64_decode($config['Plugins']['hds']['name'][0]).'|'.base64_decode($config['Plugins']['hds']['name'][1]).'|'.base64_decode($config['Plugins']['hds']['name'][2]).'|'.base64_decode($config['Plugins']['hds']['name'][3]); 244 | break; 245 | default: 246 | $deft = base64_decode($config['Plugins']['hds']['name'][0]); 247 | break; 248 | } 249 | $video['flashvars'] .= '{a->'.$ra.'}{defa->'.$a.'}{deft->'.$deft.'}'; 250 | }else{ 251 | $video['flashvars'] .= '{a->'.$a.'}'; 252 | } 253 | } 254 | $xml .= ''.chr(13); 255 | $xml .= ' '.chr(13); 256 | if(!empty($video['name']))$xml .= ' '.chr(13); 257 | $xml .= ' '.chr(13); 258 | if(!empty($video['subject']))$xml .= ' <![CDATA['.$video['subject'].']]>'.chr(13); 259 | if(!empty($video['videourl']))$xml .= ' '.chr(13); 260 | $xml .= ' '.chr(13); 261 | $xml .= ' '.chr(13); 264 | $xml .= ' '.chr(13); 271 | $xml .= ' '; 272 | 273 | return $xml; 274 | } 275 | 276 | function get_cmp4_merge($video, $key, $type){ 277 | 278 | $starttype = 0; 279 | 280 | $xml = ''.chr(13); 281 | 282 | @$xml .= ''.chr(13); 283 | foreach($video['data'] as $value){ 284 | @$xml .= ' '.chr(13); 285 | } 286 | $xml .= ''; 287 | 288 | return $xml; 289 | } 290 | 291 | function kms_matchs($haystack, $needle){ 292 | if(is_array($needle)){ 293 | foreach($needle as $need){ 294 | if($haystack === $need)return true; 295 | } 296 | }else{ 297 | if($haystack === $needle)return true; 298 | } 299 | 300 | return false; 301 | } 302 | 303 | 304 | function kms_strpos($haystack, $needle){ 305 | if(is_array($needle)){ 306 | foreach($needle as $need){ 307 | if(strpos($haystack, $need) !== false)return true; 308 | } 309 | }else{ 310 | if(strpos($haystack, $needle) !== false)return true; 311 | } 312 | 313 | return false; 314 | } 315 | 316 | function timedtos($val){ 317 | 318 | $timelongarr = array_reverse(explode(":", $val)); 319 | 320 | $cx = array(1,60,3600); 321 | for($i=0; $ivideo/mp4'; 422 | $list = $backup.$video['data'][0]['src']; 423 | return $list; 424 | } 425 | 426 | function CreateMp4($video, $_player){ 427 | if(empty($video['data'][0]['src']) && empty($video['data'][0]['bpsrc']))die(); 428 | $backup = !empty($video['data'][0]['bpsrc']) ? $video['data'][0]['bpsrc'] : null; 429 | if(!empty($backup))$backup = !empty($video['data'][0]['src']) ? $backup.',' : $backup; 430 | if(strpos($video['data'][0]['src'], '.m3u8') === false)$video['data'][0]['src'] = $video['data'][0]['src']; 431 | $list = $backup.$video['data'][0]['src']; 432 | return $list; 433 | } 434 | 435 | function b64UrlCheck($url){ 436 | $check = parse_url(base64_decode($url)); 437 | if(empty($check['host']) || empty($check['path']))$ckeck = parse_url('http://'.base64_decode($url)); 438 | if(!empty($check['host']) && !empty($check['path']))return true; 439 | return false; 440 | } 441 | 442 | function isMobile(){ 443 | $useragent=isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; 444 | $useragent_commentsblock=preg_match('|\(.*?\)|',$useragent,$matches)>0?$matches[0]:''; 445 | function CheckSubstrs($substrs,$text){ 446 | foreach($substrs as $substr) 447 | if(false!==strpos($text,$substr)){ 448 | return true; 449 | } 450 | return false; 451 | } 452 | $mobile_os_list=array('Google Wireless Transcoder','Windows CE','WindowsCE','Symbian','Android','armv6l','armv5','Mobile','CentOS','mowser','AvantGo','Opera Mobi','J2ME/MIDP','Smartphone','Go.Web','Palm','iPAQ'); 453 | $mobile_token_list=array('Profile/MIDP','Configuration/CLDC-','160×160','176×220','240×240','240×320','320×240','UP.Browser','UP.Link','SymbianOS','PalmOS','PocketPC','SonyEricsson','Nokia','BlackBerry','Vodafone','BenQ','Novarra-Vision','Iris','NetFront','HTC_','Xda_','SAMSUNG-SGH','Wapaka','DoCoMo','iPhone','iPod'); 454 | 455 | $found_mobile=CheckSubstrs($mobile_os_list,$useragent_commentsblock) || 456 | CheckSubstrs($mobile_token_list,$useragent); 457 | 458 | if ($found_mobile){ 459 | return true; 460 | }else{ 461 | return false; 462 | } 463 | } 464 | 465 | ?> -------------------------------------------------------------------------------- /2/ckplayer.js: -------------------------------------------------------------------------------- 1 | function ckcpt() { 2 | var cpt = ''; 3 | cpt += 'definition.swf,2,2,-275,-61,2,1|'; 4 | cpt += 'share.swf,1,1,-180,-100,3,0|'; 5 | cpt += 'adjustment.swf,1,1,-180,-100,3,0|'; 6 | return cpt; 7 | } 8 | function ckstyle() { 9 | var ck = { 10 | cpath: '', 11 | language: '', 12 | flashvars: '', 13 | setup: '1,1,1,1,1,2,0,1,0,0,0,1,200,0,2,1,0,1,1,1,2,10,3,0,1,2,3000,0,0,0,0,1,1,1,1,1,1,250,0,90,0,0,0', 14 | pm_bg: '0x000000,100,230,180', 15 | mylogo: 'logo.swf', 16 | pm_mylogo: '1,1,-175,-80', 17 | logo: 'cklogo.png', 18 | pm_logo: '2,0,-140,0', 19 | control_rel: 'related.swf,ckplayer/related.xml,0', 20 | control_pv: 'Preview.swf,105,2000', 21 | pm_repc: '', 22 | pm_spac: '|', 23 | pm_fpac: 'file->f', 24 | pm_advtime: '2,0,-110,10,0,300,0', 25 | pm_advstatus: '1,2,2,-200,-40', 26 | pm_advjp: '1,1,2,2,-100,-40', 27 | pm_padvc: '2,0,-10,-10', 28 | pm_advms: '2,2,-46,-56', 29 | pm_zip: '1,1,-20,-8,1,0,0', 30 | pm_advmarquee: '1,2,50,-60,50,20,0,0x000000,50,0,20,1,30,2000', 31 | pm_glowfilter:'1,0x01485d, 100, 6, 3, 10, 1, 0, 0', 32 | advmarquee: escape('{a href="http://www.72blog.com"}{font color="#FFFFFF" size="12"}72blog欢迎您的光临!{/font}{/a}'), 33 | mainfuntion:'', 34 | flashplayer:'', 35 | calljs:'ckplayer_status,ckadjump,playerstop,ckmarqueeadv', 36 | myweb: escape(''), 37 | cpt_lights: '1', 38 | cpt_share: 'ckplayer/share.xml', 39 | cpt_list: ckcpt() 40 | } 41 | return ck; 42 | } 43 | (function() { 44 | var CKobject = { 45 | _K_: function(d){return document.getElementById(d);}, 46 | _T_: false, 47 | _M_: false, 48 | _G_: false, 49 | _Y_: false, 50 | _I_: null, 51 | _J_: 0, 52 | _O_: {}, 53 | uaMatch:function(u,rMsie,rFirefox,rOpera,rChrome,rSafari,rSafari2,mozilla,mobile){ 54 | var match = rMsie.exec(u); 55 | if (match != null) { 56 | return { 57 | b: 'IE', 58 | v: match[2] || '0' 59 | } 60 | } 61 | match = rFirefox.exec(u); 62 | if (match != null) { 63 | return { 64 | b: match[1] || '', 65 | v: match[2] || '0' 66 | } 67 | } 68 | match = rOpera.exec(u); 69 | if (match != null) { 70 | return { 71 | b: match[1] || '', 72 | v: match[2] || '0' 73 | } 74 | } 75 | match = rChrome.exec(u); 76 | if (match != null) { 77 | return { 78 | b: match[1] || '', 79 | v: match[2] || '0' 80 | } 81 | } 82 | match = rSafari.exec(u); 83 | if (match != null) { 84 | return { 85 | b: match[2] || '', 86 | v: match[1] || '0' 87 | } 88 | } 89 | match = rSafari2.exec(u); 90 | if (match != null) { 91 | return { 92 | b: match[1] || '', 93 | v: match[2] || '0' 94 | } 95 | } 96 | match = mozilla.exec(u); 97 | if (match != null) { 98 | return { 99 | b: match[1] || '', 100 | v: match[2] || '0' 101 | } 102 | } 103 | match = mobile.exec(u); 104 | if (match != null) { 105 | return { 106 | b: match[1] || '', 107 | v: match[2] || '0' 108 | } 109 | } 110 | else { 111 | return { 112 | b: 'unknown', 113 | v: '0' 114 | } 115 | } 116 | }, 117 | browser: function() { 118 | var u = navigator.userAgent, 119 | rMsie = /(msie\s|trident.*rv:)([\w.]+)/, 120 | rFirefox = /(firefox)\/([\w.]+)/, 121 | rOpera = /(opera).+version\/([\w.]+)/, 122 | rChrome = /(chrome)\/([\w.]+)/, 123 | rSafari = /version\/([\w.]+).*(safari)/, 124 | rSafari2 = /(safari)\/([\w.]+)/, 125 | mozilla = /(mozilla)\/([\w.]+)/, 126 | mobile = /(mobile)\/([\w.]+)/; 127 | var c = u.toLowerCase(); 128 | var d = this.uaMatch(c,rMsie,rFirefox,rOpera,rChrome,rSafari,rSafari2,mozilla,mobile); 129 | if (d.b) { 130 | b = d.b; 131 | v = d.v; 132 | } 133 | return {B: b, V: v}; 134 | }, 135 | Platform: function() { 136 | var w = ''; 137 | var u = navigator.userAgent, 138 | app = navigator.appVersion; 139 | var b = { 140 | iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, 141 | iPad: u.indexOf('iPad') > -1, 142 | ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), 143 | android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, 144 | webKit: u.indexOf('AppleWebKit') > -1, 145 | trident: u.indexOf('Trident') > -1, 146 | gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, 147 | presto: u.indexOf('Presto') > -1, 148 | mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/), 149 | webApp: u.indexOf('Safari') == -1 150 | }; 151 | for (var k in b) { 152 | if (b[k]) { 153 | w = k; 154 | break; 155 | } 156 | } 157 | return w; 158 | }, 159 | isHTML5:function(){ 160 | return !!document.createElement('video').canPlayType; 161 | }, 162 | getType:function(){ 163 | return this._T_; 164 | }, 165 | getVideo: function() { 166 | var v = ''; 167 | var s = this._E_['v']; 168 | if (s && s.length>1) { 169 | for (var i = 0; i < s.length; i++) { 170 | var a = s[i].split('->'); 171 | if (a.length >= 1 && a[0] != '') { 172 | v += '= 2 && a[1] != '') { 175 | v += ' type="' + a[1] + '"'; 176 | } 177 | v += '>'; 178 | } 179 | } 180 | return v; 181 | }, 182 | getVars: function(k) { 183 | var o=this._A_; 184 | if (typeof(o) == 'undefined') { 185 | return null; 186 | } 187 | if (k in o) { 188 | return o[k]; 189 | } else { 190 | return null; 191 | } 192 | }, 193 | getParams: function() { 194 | var p = ''; 195 | if (this._A_) { 196 | if (parseInt(this.getVars('p')) == 1) { 197 | p += ' autoplay="autoplay"'; 198 | } 199 | if (parseInt(this.getVars('e')) == 1) { 200 | p += ' loop="loop"'; 201 | } 202 | if (parseInt(this.getVars('p')) == 2) { 203 | p += ' preload="metadata"'; 204 | } 205 | if (this.getVars('i')) { 206 | p += ' poster="' + this.getVars('i') + '"'; 207 | } 208 | } 209 | return p; 210 | }, 211 | getpath: function(z) { 212 | var f='CDEFGHIJKLMNOPQRSTUVWXYZcdefghijklmnopqrstuvwxyz'; 213 | var w=z.substr(0,1); 214 | if(f.indexOf(w)>-1 && (z.substr(0,4)==w+'://' || z.substr(0,4)==w+':\\')){ 215 | return z; 216 | } 217 | var d = unescape(window.location.href).replace('file:///', ''); 218 | var k = parseInt(document.location.port); 219 | var u = document.location.protocol + '//' + document.location.hostname; 220 | var l = '', 221 | e = '', 222 | t = ''; 223 | var s = 0; 224 | var r = unescape(z).split('//'); 225 | if (r.length > 0) { 226 | l = r[0] + '//' 227 | } 228 | var h = 'http|https|ftp|rtsp|mms|ftp|rtmp|file'; 229 | var a = h.split('|'); 230 | if (k != 80 && k) { 231 | u += ':' + k; 232 | } 233 | for (i = 0; i < a.length; i++) { 234 | if ((a[i] + '://') == l) { 235 | s = 1; 236 | break; 237 | } 238 | } 239 | if (s == 0) { 240 | if (z.substr(0, 1) == '/') { 241 | t = u + z; 242 | } else { 243 | e = d.substring(0, d.lastIndexOf('/') + 1).replace('\\', '/'); 244 | var w = z.replace('../', './'); 245 | var u = w.split('./'); 246 | var n = u.length; 247 | var r = w.replace('./', ''); 248 | var q = e.split('/'); 249 | var j = q.length - n; 250 | for (i = 0; i < j; i++) { 251 | t += q[i] + '/'; 252 | } 253 | t += r; 254 | } 255 | } else { 256 | t = z; 257 | } 258 | return t; 259 | }, 260 | getXhr: function() { 261 | var x; 262 | try { 263 | x = new ActiveXObject('Msxml2.XMLHTTP'); 264 | } catch(e) { 265 | try { 266 | x = new ActiveXObject('Microsoft.XMLHTTP'); 267 | } catch(e) { 268 | x = false; 269 | } 270 | } 271 | if (!x && typeof XMLHttpRequest != 'undefined') { 272 | x = new XMLHttpRequest(); 273 | } 274 | return x; 275 | }, 276 | getX: function(){ 277 | var f='ckstyle()'; 278 | if (this.getVars('x') && parseInt(this.getVars('c'))!=1 ) { 279 | f=this.getVars('x')+'()'; 280 | } 281 | try { 282 | if (typeof(eval(f)) == 'object') { 283 | this._X_ = eval(f); 284 | } 285 | } catch(e) { 286 | try { 287 | if (typeof(eval(ckstyle)) == 'object') { 288 | this._X_ = ckstyle(); 289 | } 290 | } catch(e) { 291 | this._X_ = ckstyle(); 292 | } 293 | } 294 | }, 295 | getSn: function(s, n) { 296 | if(n>=0){ 297 | return this._X_[s].split(',')[n]; 298 | } 299 | else{ 300 | return this._X_[s]; 301 | } 302 | }, 303 | getUrl: function(L, B) { 304 | var b = ['get', 'utf-8']; 305 | if (L && L.length == 2) { 306 | var a = L[0]; 307 | var c = L[1].split('/'); 308 | if (c.length >= 2) { 309 | b[0] = c[1]; 310 | } 311 | if (c.length >= 3) { 312 | b[1] = c[2]; 313 | } 314 | this.ajax(b[0], b[1], a, 315 | function(s) { 316 | var C = CKobject; 317 | if (s && s != 'error') { 318 | var d = '', 319 | e = s; 320 | if (s.indexOf('}') > -1) { 321 | var f = s.split('}'); 322 | for (var i = 0; i < f.length - 1; i++) { 323 | d += f[i] + '}'; 324 | var h = f[i].replace('{', '').split('->'); 325 | if (h.length == 2) { 326 | C._A_[h[0]] = h[1]; 327 | } 328 | } 329 | e = f[f.length - 1]; 330 | } 331 | C._E_['v'] = e.split(','); 332 | if (B) { 333 | C.showHtml5(); 334 | } else { 335 | C.changeParams(d); 336 | C.newAdr(); 337 | } 338 | } 339 | }); 340 | } 341 | }, 342 | getflashvars: function(s) { 343 | var v = '', 344 | i = 0; 345 | if (s) { 346 | for (var k in s) { 347 | if (i > 0) { 348 | v += '&'; 349 | } 350 | if (k == 'f' && s[k] && ! this.getSn('pm_repc',-1)) { 351 | s[k] = this.getpath(s[k]); 352 | if (s[k].indexOf('&') > -1) { 353 | s[k] = encodeURIComponent(s[k]); 354 | } 355 | } 356 | if (k == 'y' && s[k]) { 357 | s[k] = this.getpath(s[k]); 358 | } 359 | v += k + '=' + s[k]; 360 | i++; 361 | } 362 | } 363 | return v; 364 | }, 365 | getparam: function(s) { 366 | var w = '', 367 | v = '', 368 | o = { 369 | allowScriptAccess: 'always', 370 | allowFullScreen: true, 371 | quality: 'high', 372 | bgcolor: '#000' 373 | }; 374 | if (s) { 375 | for (var k in s) { 376 | o[k] = s[k]; 377 | } 378 | } 379 | for (var e in o) { 380 | w += e + '="' + o[e] + '" '; 381 | v += ''; 382 | } 383 | w = w.replace('movie=', 'src='); 384 | return { 385 | w: w, 386 | v: v 387 | }; 388 | }, 389 | getObjectById: function(s) { 390 | if (this._T_) { 391 | return this; 392 | } 393 | var x = null, 394 | y = this._K_(s), 395 | r = 'embed'; 396 | if (y && y.nodeName == 'OBJECT') { 397 | if (typeof y.SetVariable != 'undefined') { 398 | x= y; 399 | } else { 400 | var z = y.getElementsByTagName(r)[0]; 401 | if (z) { 402 | x= z; 403 | } 404 | } 405 | } 406 | return x; 407 | }, 408 | ajax: function(b, u, s, f) { 409 | var x = this.getXhr(); 410 | var a = [], 411 | m = ''; 412 | if (b == 'get') { 413 | if (s.indexOf('?') > -1) { 414 | m = s + '&t=' + new Date().getTime(); 415 | } else { 416 | m = s + '?t=' + new Date().getTime(); 417 | } 418 | x.open('get', m); 419 | } else { 420 | a = s.split('?'); 421 | s = a[0], 422 | m = a[1]; 423 | x.open('post', s, true); 424 | } 425 | x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 426 | x.setRequestHeader('charset', u); 427 | if (b == 'post') { 428 | x.send(m); 429 | } else { 430 | x.send(null); 431 | } 432 | x.onreadystatechange = function() { 433 | if (x.readyState == 4) { 434 | var g = x.responseText; 435 | if (g != '') { 436 | f(g); 437 | } else { 438 | f(null); 439 | } 440 | } 441 | } 442 | }, 443 | addListener: function(e, f) { 444 | var o=CKobject._V_; 445 | if (o.addEventListener) { 446 | try{ 447 | o.addEventListener(e, f, false); 448 | } 449 | catch (e) { 450 | this.getNot(); 451 | } 452 | } 453 | else if (o.attachEvent) { 454 | try{ 455 | o.attachEvent('on' + e, f); 456 | } 457 | catch(e){ 458 | this.getNot(); 459 | } 460 | } 461 | else { 462 | o['on' + e] = f; 463 | } 464 | }, 465 | removeListener: function( e, f) { 466 | var o=CKobject._V_; 467 | if (o.removeEventListener) { 468 | try{ 469 | o.removeEventListener(e, f, false); 470 | } 471 | catch(e){ 472 | this.getNot(); 473 | } 474 | } 475 | else if (o.detachEvent) { 476 | try{ 477 | o.detachEvent('on' + e, f); 478 | } 479 | catch(e){ 480 | this.getNot(); 481 | } 482 | } 483 | else { 484 | o['on' + e] = null; 485 | } 486 | }, 487 | Flash: function() { 488 | var f = false,v = 0; 489 | if (document.all || this.browser()['B'].toLowerCase().indexOf('ie')>-1) { 490 | try { 491 | var s = new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); 492 | f = true; 493 | var z = s.GetVariable('$version'); 494 | v = parseInt(z.split(' ')[1].split(',')[0]); 495 | } catch(e) {} 496 | } else { 497 | if (navigator.plugins && navigator.plugins.length > 0) { 498 | var s = navigator.plugins['Shockwave Flash']; 499 | if (s) { 500 | f = true; 501 | var w = s.description.split(' '); 502 | for (var i = 0; i < w.length; ++i) { 503 | if (isNaN(parseInt(w[i]))) continue; 504 | v = parseInt(w[i]); 505 | } 506 | } 507 | } 508 | } 509 | return { 510 | f: f, 511 | v: v 512 | }; 513 | }, 514 | embed:function(f,d,i,w,h,b,v,e,p,j){ 515 | var s=['all']; 516 | if(b){ 517 | if(this.isHTML5()){ 518 | this.embedHTML5(d,i,w,h,e,v,s,j); 519 | } 520 | else{ 521 | this.embedSWF(f,d,i,w,h,v,p); 522 | } 523 | } 524 | else{ 525 | if(this.Flash()['f'] && parseInt(this.Flash()['v'])>10){ 526 | this.embedSWF(f,d,i,w,h,v,p); 527 | } 528 | else if(this.isHTML5()){ 529 | this.embedHTML5(d,i,w,h,e,v,s,j); 530 | } 531 | else{ 532 | this.embedSWF(f,d,i,w,h,v,p); 533 | } 534 | } 535 | }, 536 | embedSWF: function(C, D, N, W, H, V, P) { 537 | if (!N) { 538 | N = 'ckplayer_a1' 539 | } 540 | if (!P) { 541 | P = { 542 | bgcolor: '#FFF', 543 | allowFullScreen: true, 544 | allowScriptAccess: 'always', 545 | wmode:'transparent' 546 | }; 547 | } 548 | this._A_=V; 549 | this.getX(); 550 | var u = 'undefined', 551 | g = false, 552 | j = document, 553 | r = 'http://www.macromedia.com/go/getflashplayer', 554 | t = '请点击此处下载安装最新的flash插件', 555 | error = { 556 | w: '您的网页不符合w3c标准,无法显示播放器', 557 | f: '您没有安装flash插件,无法播放视频,' + t, 558 | v: '您的flash插件版本过低,无法播放视频,' + t 559 | }, 560 | w3c = typeof j.getElementById != u && typeof j.getElementsByTagName != u && typeof j.createElement != u, 561 | i = 'id="' + N + '" name="' + N + '" ', 562 | s = '', 563 | l = ''; 564 | P['movie'] = C; 565 | P['flashvars'] = this.getflashvars(V); 566 | if(W==-1){ 567 | d=true; 568 | this._K_(D).style.width='100%'; 569 | W='100%'; 570 | } 571 | s += ''; 583 | s += ''; 584 | if (!w3c) { 585 | l = error['w']; 586 | g = true; 587 | } else { 588 | if (!this.Flash()['f']) { 589 | l = error['f']; 590 | g = true; 591 | } else { 592 | if (this.Flash()['v'] < 11) { 593 | l = error['v']; 594 | g = true; 595 | } else { 596 | l = s; 597 | this._T_=false; 598 | } 599 | } 600 | } 601 | if (l) { 602 | this._K_(D).innerHTML = l; 603 | } 604 | if (g){ 605 | this._K_(D).style.color = '#0066cc'; 606 | this._K_(D).style.lineHeight = this._K_(D).style.height; 607 | this._K_(D).style.textAlign= 'center'; 608 | } 609 | }, 610 | embedHTML5: function(C, P, W, H, V, A, S, J) { 611 | this._E_ = { 612 | c: C, 613 | p: P, 614 | w: W, 615 | h: H, 616 | v: V, 617 | s: S, 618 | j: J==undefined || J?true:false 619 | }; 620 | this._A_ = A; 621 | this.getX(); 622 | b = this.browser()['B'], 623 | v = this.browser()['V'], 624 | x = v.split('.'), 625 | t = x[0], 626 | m = b + v, 627 | n = b + t, 628 | w = '', 629 | s = false, 630 | f = this.Flash()['f'], 631 | a = false; 632 | if (!S) { 633 | S = ['iPad', 'iPhone', 'ios']; 634 | } 635 | for (var i = 0; i < S.length; i++) { 636 | w = S[i]; 637 | if (w.toLowerCase() == 'all') { 638 | s = true; 639 | break; 640 | } 641 | if (w.toLowerCase() == 'all+false' && !f) { 642 | s = true; 643 | break; 644 | } 645 | if (w.indexOf('+') > -1) { 646 | w = w.split('+')[0]; 647 | a = true; 648 | } else { 649 | a = false; 650 | } 651 | if (this.Platform() == w || m == w || n == w || b == w) { 652 | if (a) { 653 | if (!f) { 654 | s = true; 655 | break; 656 | } 657 | }else { 658 | s = true; 659 | break; 660 | } 661 | } 662 | } 663 | if (s) { 664 | if (V) { 665 | var l = V[0].split('->'); 666 | if (l && l.length == 2 && l[1].indexOf('ajax') > -1) { 667 | this.getUrl(l, true); 668 | return; 669 | } 670 | } 671 | this.showHtml5(); 672 | } 673 | }, 674 | status: function() { 675 | this._H_ = parseInt(this.getSn('setup', 20)); 676 | var f='ckplayer_status'; 677 | if (this.getSn('calljs', 0)!='') { 678 | f=this.getSn('calljs', 0); 679 | } 680 | try { 681 | if (typeof(eval(f)) == 'function') { 682 | this._L_=eval(f); 683 | this._M_=true; 684 | return true; 685 | } 686 | } catch(e) { 687 | try { 688 | if (typeof(eval(ckplayer_status)) == 'function') { 689 | this._L_=ckplayer_status; 690 | this._M_=true; 691 | return true; 692 | } 693 | } catch(e) { 694 | return false; 695 | } 696 | } 697 | return false; 698 | }, 699 | showHtml5: function() { 700 | var C = CKobject; 701 | var p = C._E_['p'], 702 | a = C._E_['v'], 703 | c = C._E_['c'], 704 | j = '', 705 | b = false; 706 | var s = this._E_['v']; 707 | var w=C._E_['w'],h=C._E_['h']; 708 | var d=false; 709 | var r=''; 710 | if(s.length==1){ 711 | r=' src="'+s[0].split('->')[0]+'"'; 712 | } 713 | if(w==-1){ 714 | d=true; 715 | C._K_(c).style.width='100%'; 716 | w='100%'; 717 | } 718 | if(w.toString().indexOf('%')>-1){ 719 | w='100%'; 720 | } 721 | if(h.toString().indexOf('%')>-1){ 722 | h='100%'; 723 | } 724 | if(C._E_['j']){ 725 | j='controls="controls"'; 726 | } 727 | var v = ''; 728 | C._K_(c).innerHTML = v; 729 | C._K_(c).style.backgroundColor = '#000'; 730 | C._V_ = C._K_(p); 731 | if(!d){ 732 | C._K_(c).style.width=C._E_['w'].toString().indexOf('%')>-1?(C._K_(c).offsetWidth*parseInt(C._E_['w'])*0.01)+'px':C._V_.width+'px'; 733 | C._K_(c).style.height=C._E_['h'].toString().indexOf('%')>-1?(C._K_(c).offsetHeight*parseInt(C._E_['h'])*0.01)+'px':C._V_.height+'px'; 734 | } 735 | C._P_ = false; 736 | C._T_ = true; 737 | if (C.getVars('loaded')!='') { 738 | var f=C.getVars('loaded')+'()'; 739 | try { 740 | if (typeof(eval(f)) == 'function') { 741 | eval(f); 742 | } 743 | } catch(e) { 744 | try { 745 | if (typeof(eval(loadedHandler)) == 'function') { 746 | loadedHandler(); 747 | } 748 | } catch(e) { 749 | } 750 | } 751 | } 752 | C.status(); 753 | C.addListener('play', C.playHandler); 754 | C.addListener('pause', C.playHandler); 755 | C.addListener('error', C.errorHandler); 756 | C.addListener('emptied', C.errorHandler); 757 | C.addListener('loadedmetadata', C.loadedMetadataHandler); 758 | C.addListener('ended', C.endedHandler); 759 | C.addListener('volumechange', C.volumeChangeHandler); 760 | if((C.getVars('m')!='' && C.getVars('m')!=null) || parseInt( C.getSn('setup', 0))>0){ 761 | C._K_(c).style.cursor='pointer'; 762 | } 763 | if((C.getVars('m')!='' && C.getVars('m')!=null) || parseInt( C.getSn('setup', 1))==1){ 764 | C.addListener('click', C.html5Click); 765 | } 766 | }, 767 | videoPlay: function() { 768 | if (this._T_) { 769 | this._V_.play(); 770 | } 771 | }, 772 | videoPause: function() { 773 | if (this._T_) { 774 | this._V_.pause(); 775 | } 776 | }, 777 | playOrPause: function() { 778 | if (this._T_) { 779 | if (this._V_.paused) { 780 | this._V_.play(); 781 | } else { 782 | this._V_.pause(); 783 | } 784 | } 785 | }, 786 | fastNext: function() { 787 | if (this._T_) { 788 | this._V_['currentTime'] = this._V_['currentTime'] + 10; 789 | } 790 | }, 791 | fastBack: function() { 792 | if (this._T_) { 793 | this._V_['currentTime'] = this._V_['currentTime'] - 10; 794 | } 795 | }, 796 | changeVolume: function(n) { 797 | if (this._T_) { 798 | this._V_['volume'] = n * 0.01; 799 | } 800 | }, 801 | videoSeek: function(t) { 802 | if (this._T_) { 803 | this._V_['currentTime'] = t; 804 | } 805 | }, 806 | newAddress: function(u) { 807 | var s = []; 808 | if (u) { 809 | s = this.isHtml5New(u); 810 | } else { 811 | return; 812 | } 813 | if (s && this._T_) { 814 | this.changeParams(u); 815 | var l = s[0].split('->'); 816 | if (l && l.length == 2 && l[1].indexOf('ajax') > -1) { 817 | this.getUrl(l, false); 818 | return; 819 | } 820 | this._E_['v'] = s; 821 | this.newAdr(); 822 | } 823 | }, 824 | quitFullScreen:function() { 825 | if(document.cancelFullScreen) { 826 | document.cancelFullScreen(); 827 | } 828 | else if(document.mozCancelFullScreen) { 829 | document.mozCancelFullScreen(); 830 | } else if(document.webkitCancelFullScreen) { 831 | document.webkitCancelFullScreen(); 832 | } 833 | 834 | }, 835 | changeStatus:function(n){ 836 | this._H_=n; 837 | }, 838 | newAdr: function() { 839 | var s = this._E_['v']; 840 | this._V_.pause(); 841 | if(s.length==1){ 842 | this._V_.src=s[0].split('->')[0]; 843 | } 844 | else{ 845 | this._V_['innerHTML'] = this.getVideo(); 846 | } 847 | this._V_.load(); 848 | }, 849 | isHtml5New: function(s) { 850 | if (s.indexOf('html5') == -1) { 851 | return false; 852 | } 853 | var a = s.replace(/{/g, ''); 854 | var b = a.split('}'); 855 | var c = ''; 856 | for (var i = 0; i < b.length; i++) { 857 | if (b[i].indexOf('html5') > -1) { 858 | c = b[i].replace('html5->', '').split(','); 859 | break; 860 | } 861 | } 862 | return c; 863 | }, 864 | changeParams: function(f) { 865 | if (f) { 866 | var a = f.replace(/{/g, ''); 867 | var b = a.split('}'); 868 | var c = ''; 869 | for (var i = 0; i < b.length; i++) { 870 | var d = b[i].split('->'); 871 | if(d.length == 2){ 872 | switch(d[0]){ 873 | case 'p': 874 | if(parseInt(d[1]) == 1){ 875 | this._V_.autoplay = true; 876 | } 877 | else if(parseInt(d[1]) == 2){ 878 | this._V_.preload = 'metadata'; 879 | } 880 | else{ 881 | this._V_.autoplay = false; 882 | if(this._I_!=null){ 883 | clearInterval(this._I_); 884 | this._I_=null; 885 | } 886 | } 887 | break; 888 | case 'e': 889 | if(parseInt(d[1]) == 1){ 890 | this._V_.loop = true; 891 | } 892 | else{ 893 | this._V_.loop = false; 894 | } 895 | break; 896 | case 'i': 897 | this._V_.poster = d[1]; 898 | break; 899 | default: 900 | break; 901 | } 902 | } 903 | } 904 | } 905 | }, 906 | frontAdPause: function(s) { 907 | this.getNot(); 908 | }, 909 | frontAdUnload: function() { 910 | this.getNot(); 911 | }, 912 | changeFace: function(s) { 913 | this.getNot(); 914 | }, 915 | plugin: function(a, b, c, d, e, f, g) { 916 | this.getNot(); 917 | }, 918 | videoClear: function() { 919 | this.getNot(); 920 | }, 921 | videoBrightness: function(s) { 922 | this.getNot(); 923 | }, 924 | videoContrast: function(s) { 925 | this.getNot(); 926 | }, 927 | videoSaturation: function(s) { 928 | this.getNot(); 929 | }, 930 | videoSetHue: function(s) { 931 | this.getNot(); 932 | }, 933 | videoWAndH: function(a, b) { 934 | this.getNot(); 935 | }, 936 | videoWHXY: function(a, b, c, d) { 937 | this.getNot(); 938 | }, 939 | changeFlashvars: function(a) { 940 | this.getNot(); 941 | }, 942 | changeMyObject: function(a, b) { 943 | this.getNot(); 944 | }, 945 | getMyObject: function(a, b) { 946 | this.getNot(); 947 | }, 948 | changeeFace: function() { 949 | this.getNot(); 950 | }, 951 | changeStyle: function(a, b) { 952 | this.getNot(); 953 | }, 954 | promptLoad: function() { 955 | this.getNot(); 956 | }, 957 | promptUnload: function() { 958 | this.getNot(); 959 | }, 960 | marqueeLoad: function(a,b) { 961 | this.getNot(); 962 | }, 963 | marqueeClose: function(s) { 964 | this.getNot(); 965 | }, 966 | getNot: function() { 967 | var s='The ckplayer\'s API for HTML5 does not exist'; 968 | return s; 969 | }, 970 | volumeChangeHandler: function() { 971 | var C = CKobject; 972 | if (C._V_.muted) { 973 | C.returnStatus('volumechange:0', 1); 974 | C._O_['volume'] = 0; 975 | C._O_['mute'] = true; 976 | } else { 977 | C._O_['mute'] = false; 978 | C._O_['volume'] = C._V_['volume'] * 100; 979 | C.returnStatus('volumechange:'+C._V_['volume'] * 100, 1); 980 | } 981 | }, 982 | endedHandler: function() { 983 | var C = CKobject; 984 | var e=parseInt(C.getVars('e')); 985 | C.returnStatus('ended', 1); 986 | if(C._I_){ 987 | clearInterval(C._I_); 988 | C._I_=null; 989 | } 990 | if ( e!= 0 && e !=4 && e !=6) { 991 | return; 992 | } 993 | if(e==6){ 994 | this.quitFullScreen(); 995 | } 996 | var f='playerstop()'; 997 | if (C.getSn('calljs', 2)!='') { 998 | f=C.getSn('calljs', 2)+'()'; 999 | } 1000 | try { 1001 | if (typeof(eval(f)) == 'function') { 1002 | eval(f); 1003 | return; 1004 | } 1005 | } catch(e) { 1006 | try { 1007 | if (typeof(eval(playerstop)) == 'function') { 1008 | playerstop(); 1009 | return; 1010 | } 1011 | } catch(e) { 1012 | return; 1013 | } 1014 | } 1015 | }, 1016 | loadedMetadataHandler: function() { 1017 | var C = CKobject; 1018 | C.returnStatus('loadedmetadata', 1); 1019 | C._O_['totaltime'] = C._V_['duration']; 1020 | C._O_['width'] = C._V_['width']; 1021 | C._O_['height'] = C._V_['height']; 1022 | C._O_['awidth'] = C._V_['videoWidth']; 1023 | C._O_['aheight'] = C._V_['videoHeight']; 1024 | if (C._V_.defaultMuted) { 1025 | C.returnStatus('volumechange:0', 1); 1026 | C._O_['mute'] = true; 1027 | C._O_['volume'] = 0; 1028 | } else { 1029 | C._O_['mute'] = false; 1030 | C._O_['volume'] = C._V_['volume'] * 100; 1031 | C.returnStatus('volumechange:'+C._V_['volume'] * 100, 1); 1032 | } 1033 | if (parseInt(C.getVars('p')) == 1) { 1034 | C.playHandler(); 1035 | } 1036 | }, 1037 | errorHandler: function() { 1038 | CKobject.returnStatus('error', 1); 1039 | }, 1040 | playHandler: function() { 1041 | var C = CKobject; 1042 | if (C._V_.paused) { 1043 | C.returnStatus('pause', 1); 1044 | C.addO('play', false); 1045 | if(C._I_!=null){ 1046 | clearInterval(C._I_); 1047 | C._I_=null; 1048 | } 1049 | } else { 1050 | C.returnStatus('play', 1); 1051 | C.addO('play', true); 1052 | if (!C._P_) { 1053 | C.returnStatus('play', 1); 1054 | C._P_ = true; 1055 | } 1056 | C._I_ = setInterval(C.playTime, parseInt( C.getSn('setup', 37))); 1057 | if(!C._G_){ 1058 | C._G_=true; 1059 | for(var k in C._A_){ 1060 | if(k=='g' && C._A_[k]){ 1061 | var g=parseInt(C._A_[k]); 1062 | C.videoSeek(g); 1063 | } 1064 | } 1065 | } 1066 | if(!C._Y_){ 1067 | C._Y_=true; 1068 | for(var k in C._A_){ 1069 | if(k=='j' && C._A_[k]){ 1070 | var j=parseInt(C._A_[k]); 1071 | if(j>0){ 1072 | C._J_=j; 1073 | } 1074 | else{ 1075 | C._J_=parseInt(C._O_['totaltime'])+j; 1076 | } 1077 | } 1078 | } 1079 | } 1080 | } 1081 | }, 1082 | html5Click: function(){ 1083 | var C = CKobject; 1084 | if(C.getVars('m')!='' && C.getVars('m')!=null){ 1085 | window.open(C.getVars('m')); 1086 | } 1087 | }, 1088 | returnStatus: function(s, j) { 1089 | var h = s; 1090 | if (this._H_ == 3) { 1091 | h = this._E_['p'] +'->'+ h; 1092 | } 1093 | if (this._M_ && j <= this._H_ ) { 1094 | this._L_(h); 1095 | } 1096 | }, 1097 | addO: function(s, z) { 1098 | this._O_[s] = z; 1099 | }, 1100 | getStatus: function() { 1101 | return this._O_; 1102 | }, 1103 | playTime: function() { 1104 | var C = CKobject; 1105 | var t = C._V_['currentTime']; 1106 | C._O_['time'] = t; 1107 | if(C._J_>0 && t>C._J_){ 1108 | C._J_=0; 1109 | C.videoSeek(C._O_['totaltime']); 1110 | } 1111 | C.returnStatus('time:' + t, 1); 1112 | } 1113 | } 1114 | window.CKobject = CKobject; 1115 | })(); -------------------------------------------------------------------------------- /player/ckplayer.js: -------------------------------------------------------------------------------- 1 | /* 2 | /* 3 | ------------------------------------------------------------------------- 4 | 说明: 5 | 正式使用时可以把该文件的注释全部去掉,节省加载时间 6 | ckplayer6.5,有问题请访问http://www.ckplayer.com 7 | 请注意,该文件为UTF-8编码,不需要改变编码即可使用于各种编码形式的网站内 8 | ------------------------------------------------------------------------- 9 | 第一部分,加载插件 10 | 以下为加载的插件部份 11 | 插件的设置参数说明: 12 | 1、插件名称 13 | 2、水平对齐方式(0左,1中,2右) 14 | 3、垂直对齐方式(0上,1中,2下) 15 | 4、水平方向位置偏移量 16 | 5、垂直方向位置偏移量 17 | 6、插件的等级,0=普通图片插件且跟随控制栏隐藏而隐藏,显示而显示,1=普通图片插件且永久显示,2=swf插件,默认显示,3=swf插件,默认隐藏,swf插件都可以交互 18 | 7、插件是否绑定在控制栏上,0不绑定,1绑定,当值是1的时候该插件将会随着控制栏一起隐藏或缓动 19 | 8、插件为swf并且可交互时,默认调用的类所在的包名称,详细说明可以到帮助手册里查看,默认无 20 | 插件名称不能相同,对此的详细说明请到网站查看 21 | */ 22 | function ckcpt() { 23 | var cpt = ''; 24 | cpt+='definition.swf,2,2,-169,-28,2,1|'; 25 | return cpt; 26 | } 27 | /* 28 | 插件的定义结束 29 | 以下是对播放器功能进行配置 30 | */ 31 | function ckstyle() { //定义总的风格 32 | var ck = { 33 | cpath: '', 34 | /* 35 | 播放器风格压缩包文件的路径,默认的是style.swf 36 | 如果调用不出来可以试着设置成绝对路径试试 37 | 如果不知道路径并且使用的是默认配置,可以直接留空,播放器会 38 | */ 39 | language: '', 40 | /*播放器所使用的语言配置文件,需要和播放器在同目录下,默认是language.xml*/ 41 | flashvars: '', 42 | /* 43 | 这里是用来做为对flashvars值的补充,除了c和x二个参数以外的设置都可以在这里进行配置 44 | 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 45 | 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0*/ 46 | setup: '1,1,1,1,1,2,0,1,2,0,0,1,200,0,2,1,0,1,1,1,2,10,3,0,1,1,3000,0,0,0,0,1,1,1,1,1,1,250,0,90', 47 | /* 48 | 这是配置文件里比较重要的一个参数,共有N个功能控制参数,并且以后会继续的增加,各控制参数以英文逗号(,)隔开。下面列出各参数的说明: 49 | 1、鼠标经过按钮是否使用手型,0普通鼠标,1手型鼠标,2是只有按钮手型,3是控制栏手型 50 | 2、是否支持单击暂停,0不支持,1是支持 51 | 3、是否支持双击全屏,0不支持,1是支持 52 | 4、在播放前置广告时是否同时加载视频,0不加载,1加载 53 | 5、广告显示的参考对象,0是参考视频区域,1是参考播放器区域 54 | 6、广告大小的调整方式,只针对swf和图片有效,视频是自动缩放的 55 | =0是自动调整大小,意思是说大的话就变小,小的话就变大 56 | =1是大的化变小,小的话不变 57 | =2是什么也不变,就这么大 58 | =3是跟参考对像(第5个控制)参数设置的一样宽高 59 | 7、前置广告播放顺序,0是顺序播放,1是随机播放,>1则随机取所有广告中的(N-1)个进行播放 60 | 8、对于视频广告是否采用修正,0是不使用,1是使用,如果是1,则用户在网速慢的情况下会按设定的倒计时进行播放广告,计时结束则放正片(比较人性化),设置成0的话,则强制播放完广告才能播放正片 61 | 9、是否开启滚动文字广告,0是不开启,1是开启且不使用关闭按钮,2是开启并且使用关闭按钮,开启后将在加载视频的时候加载滚动文字广告 62 | 10、视频的调整方式 63 | =0是自动调整大小,意思是说大的话就变小,小的话就变大,同时保持长宽比例不变 64 | =1是大的化变小,小的话不变 65 | =2是什么也不变,就这么大 66 | =3是跟参考对像(pm_video的设置)参数设置的一样宽高 67 | 11、是否在多视频时分段加载,0不是,1是 68 | 12、缩放视频时是否进行平滑处理,0不是,1是 69 | 13、视频缓冲时间,单位:毫秒,建议不超过300 70 | 14、初始图片调整方式( 71 | =0是自动调整大小,意思是说大的话就变小,小的话就变大,同时保持长宽比例不变 72 | =1是大的化变小,小的话不变 73 | =2是什么也不变,就这么大 74 | =3是跟pm_video参数设置的一样宽高 75 | 15、暂停广告调整方式( 76 | =0是自动调整大小,意思是说大的话就变小,小的话就变大,同时保持长宽比例不变 77 | =1是大的化变小,小的话不变 78 | =2是什么也不变,就这么大 79 | =3是跟pm_video参数设置的一样宽 80 | 16、暂停广告是否使用关闭广告设置,0不使用,1使用 81 | 17、缓冲时是否播放广告,0是不显示,1是显示并同时隐藏掉缓冲图标和进度,2是显示并不隐藏缓冲图标 82 | 18、是否支持键盘空格键控制播放和暂停0不支持,1支持 83 | 19、是否支持键盘左右方向键控制快进快退0不支持,1支持 84 | 20、是否支持键盘上下方向键控制音量0不支持,1支持 85 | 21、播放器返回js交互函数的等级,0-2,等级越高,返回的参数越多 86 | 0是返回少量常用交互 87 | 1返回播放器在播放的时候的参数,不返回广告之类的参数 88 | 2返回全部参数 89 | 3返回全部参数,并且在参数前加上"播放器ID->",用于多播放器的监听 90 | 22、快进和快退的秒数 91 | 23、界面上图片元素加载失败重新加载次数 92 | 24、开启加载皮肤压缩文件包的加载进度提示 93 | 25、使用隐藏控制栏时显示简单进度条的功能,0是不使用,1是使用,2是只在普通状态下使用 94 | 26、控制栏隐藏设置(0不隐藏,1全屏时隐藏,2都隐藏 95 | 27、控制栏隐藏延时时间,即在鼠标离开控制栏后多少毫秒后隐藏控制栏 96 | 28、左右滚动时是否采用无缝,默认0采用,1是不采用 97 | 29、0是正常状态,1是控制栏默认隐藏,播放状态下鼠标经过播放器显示控制栏,2是一直隐藏控制栏 98 | 30、在播放rtmp视频时暂停后点击播放是否采用重新链接的方式,这里一共分0-2三个等级 99 | 31、当采用网址形式(flashvars里s=1/2时)读取视频地址时是采用默认0=get方法,1=post方式 100 | 32、是否启用播放按钮和暂停按钮 101 | 33、是否启用中间暂停按钮 102 | 34、是否启用静音按钮 103 | 35、是否启用全屏按钮 104 | 36、是否启用进度调节栏 105 | 37、是否启用调节音量 106 | 38、计算时间的间隔,毫秒 107 | 39、前置logo至少显示的时间,单位:毫秒 108 | 40、前置视频广告的默认音量 109 | */ 110 | pm_bg: '0x000000,100,230,180', 111 | /*播放器整体的背景配置,请注意,这里只是一个初始化的设置,如果需要真正的改动播放器的背景和最小宽高,需要在风格文件里找到相同的参数进行更改。 112 | 1、整体背景颜色 113 | 2、背景透明度 114 | 3、播放器最小宽度 115 | 4、播放器最小高度 116 | 这里只是初始化时的设置,最终加载完播放器后显示的效果需要在style.swf/style.xml里设置该参数 117 | */ 118 | mylogo: 'logo.swf', 119 | /* 120 | 视频加载前显示的logo文件,不使用设置成null,即ck.mylogo='null'; 121 | */ 122 | pm_mylogo: '1,1,-100,-55', 123 | /* 124 | 视频加载前显示的logo文件(mylogo参数的)的位置 125 | 本软件所有的四个参数控制位置的方式全部都是统一的意思,如下 126 | 1、水平对齐方式,0是左,1是中,2是右 127 | 2、垂直对齐方式,0是上,1是中,2是下 128 | 3、水平偏移量,举例说明,如果第1个参数设置成0左对齐,第3个偏移量设置成10,就是离左边10个像素,第一个参数设置成2,偏移量如果设置的是正值就会移到播放器外面,只有设置成负值才行,设置成-1,按钮就会跑到播放器外面 129 | 4、垂直偏移量 130 | */ 131 | logo: 'cklogo.png', 132 | /* 133 | 默认右上角一直显示的logo,不使用设置成null,即ck.logo='null'; 134 | */ 135 | pm_logo: '2,0,-170,20', 136 | /* 137 | 播放器右上角的logo的位置 138 | 1、水平对齐方式,0是左,1是中,2是右 139 | 2、垂直对齐方式,0是上,1是中,2是下 140 | 3、水平偏移量 141 | 4、垂直偏移量 142 | 以下是播放器自带的二个插件 143 | */ 144 | control_rel: 'related.swf,ckplayer/related.xml,0', 145 | /* 146 | 视频结束显示精彩视频的插件 147 | 1、视频播放结束后显示相关精彩视频的插件文件(注意,视频结束动作设置成3时(即var flashvars={e:3})有效), 148 | 2、xml文件是调用精彩视频的示例文件,可以自定义文件类型(比如asp,php,jsp,.net只要输出的是xml格式就行),实际使用中一定要注意第二个参数的路径要正确 149 | 3、第三个参数是设置配置文件的编码,0是默认的utf-8,1是gbk2312 150 | */ 151 | control_pv: 'Preview.swf,105,2000', 152 | /* 153 | 视频预览插件 154 | 1、插件文件名称(该插件和上面的精彩视频的插件都是放在风格压缩包里的) 155 | 2、离进度栏的高(指的是插件的顶部离进度栏的位置) 156 | 3、延迟时间(该处设置鼠标经过进度栏停顿多少毫秒后才显示插件) 157 | 建议一定要设置延时时间,不然当鼠标在进度栏上划过的时候就会读取视频地址进行预览,很占资源 158 | */ 159 | pm_repc: '', 160 | /* 161 | 视频地址替换符,该功能主要是用来做简单加密的功能,使用方法很简单,请注意,只针对f值是视频地址的时候有效,其它地方不能使用。具体的请查看http://www.ckplayer.com/manual.php?id=4#title_25 162 | */ 163 | pm_spac: '|', 164 | /* 165 | 视频地址间隔符,这里主要是播放多段视频时使用普通调用方式或网址调用方式时使用的。默认使用|,如果视频地址里本身存在|的话需要另外设置一个间隔符,注意,即使只有一个视频也需要设置。另外在使用rtmp协议播放视频的时候,如果视频存在多级目录的话,这里要改成其它的符号,因为rtmp协议的视频地址多级的话也需要用到|隔开流地址和实例地址 166 | */ 167 | pm_fpac: 'file->f', 168 | /* 169 | 该参数的功能是把自定义的flashvars里的变量替换成ckplayer里对应的变量,默认的参数的意思是把flashvars里的file值替换成f值,因为ckplayer里只认f值,多个替换之间用竖线隔开 170 | */ 171 | pm_advtime: '2,0,-110,10,0,300,0', 172 | /* 173 | 前置广告倒计时文本位置,播放前置 广告时有个倒计时的显示文本框,这里是设置该文本框的位置和宽高,对齐方式的。一共7个参数,分别表示: 174 | 1、水平对齐方式,0是左对齐,1是中间对齐,2是右对齐 175 | 2、垂直对齐方式,0是上对齐,1是中间对齐,2是低部对齐 176 | 3、水平位置偏移量 177 | 4、垂直位置偏移量 178 | 5、文字对齐方式,0是左对齐,1是中间对齐,2是右对齐,3是默认对齐 179 | 6、文本框宽席 180 | 7、文本框高度 181 | */ 182 | pm_advstatus: '1,2,2,-200,-40', 183 | /* 184 | 前置广告静音按钮,静音按钮只在是视频广告时显示,当然也可以控制不显示 185 | 1、是否显示0不显示,1显示 186 | 2、水平对齐方式 187 | 3、垂直对齐方式 188 | 4、水平偏移量 189 | 5、垂直偏移量 190 | */ 191 | pm_advjp: '1,1,2,2,-100,-40', 192 | /* 193 | 前置广告跳过广告按钮的位置 194 | 1、是否显示0不显示,1是显示 195 | 2、跳过按钮触发对象(值0/1,0是直接跳转,1是触发js:function ckadjump(){}) 196 | 3、水平对齐方式 197 | 4、垂直对齐方式 198 | 5、水平偏移量 199 | 6、垂直偏移量 200 | */ 201 | pm_padvc: '2,0,-10,-10', 202 | /* 203 | 暂停广告的关闭按钮的位置 204 | 1、水平对齐方式 205 | 2、垂直对齐方式 206 | 3、水平偏移量 207 | 4、垂直偏移量 208 | */ 209 | pm_advms: '2,2,-46,-56', 210 | /* 211 | 滚动广告关闭按钮位置 212 | 1、水平对齐方式 213 | 2、垂直对齐方式 214 | 3、水平偏移量 215 | 4、垂直偏移量 216 | */ 217 | pm_zip: '1,1,-20,-8,1,0,0', 218 | /* 219 | 加载皮肤压缩包时提示文字的位置 220 | 1、水平对齐方式,0是左对齐,1是中间对齐,2是右对齐 221 | 2、垂直对齐方式,0是上对齐,1是中间对齐,2是低部对齐 222 | 3、水平位置偏移量 223 | 4、垂直位置偏移量 224 | 5、文字对齐方式,0是左对齐,1是中间对齐,2是右对齐,3是默认对齐 225 | 6、文本框宽席 226 | 7、文本框高度 227 | */ 228 | //pm_advmarquee: '1,2,50,-60,50,18,0,0x000000,50,0,20,1,15,2000', 229 | pm_advmarquee: '1,2,50,-60,50,20,0,0x000000,50,0,20,1,30,2000', 230 | /* 231 | 滚动广告的控制,要使用的话需要在setup里的第9个参数设置成1 232 | 这里分二种情况,前六个参数是定位控制,第7个参数是设置定位方式(0:相对定位,1:绝对定位) 233 | 第一种情况:第7个参数是0的时候,相对定位,就是播放器长宽变化的时候,控制栏也跟着变 234 | 1、默认1:中间对齐 235 | 2、上中下对齐(0是上,1是中,2是下) 236 | 3、离左边的距离 237 | 4、Y轴偏移量 238 | 5、离右边的距离 239 | 6、高度 240 | 7、定位方式 241 | 第二种情况:第7个参数是1的时候,绝对定位,就是播放器长宽变化的时候,控制栏不跟着变,这种方式一般使用在控制栏大小不变的时候 242 | 1、左中右对齐方式(0是左,1是中间,2是右) 243 | 2、上中下对齐(0是上,1是中,2是下) 244 | 3、x偏移量 245 | 4、y偏移量 246 | 5、宽度 247 | 6、高度 248 | 7、定位方式 249 | 以上是前7个参数的作用 250 | 8、是文字广告的背景色 251 | 9、置背景色的透明度 252 | 10、控制滚动方向,0是水平滚动(包括左右),1是上下滚动(包括向上和向下) 253 | 11、移动的单位时长,即移动单位像素所需要的时长,毫秒 254 | 12、移动的单位像素,正数同左/上,负数向右/下 255 | 13、是行高,这个在设置向上或向下滚动的时候有用处 256 | 14、控制向上或向下滚动时每次停止的时间 257 | */ 258 | pm_glowfilter:'1,0x01485d, 100, 6, 3, 10, 1, 0, 0', 259 | /*滚动文字广告是否采用发光滤镜 260 | 1、是否使用发光滤镜,0是不采用,1是使用 261 | 2、(default = 0xFF0000) — 光晕颜色,采用十六进制格式 0xRRGGBB。 默认值为 0xFF0000 262 | 3、(default = 100) — 颜色的 Alpha 透明度值。 有效值为 0 到 100。 例如,25 设置透明度为 25% 263 | 4、(default = 6.0) — 水平模糊量。 有效值为 0 到 255(浮点)。 2 的乘方值(如 2、4、8、16 和 32)经过优化,呈现速度比其它值更快 264 | 5、(default = 6.0) — 垂直模糊量。 有效值为 0 到 255(浮点)。 2 的乘方值(如 2、4、8、16 和 32)经过优化,呈现速度比其它值更快 265 | 6、(default = 2) — 印记或跨页的强度。 该值越高,压印的颜色越深,而且发光与背景之间的对比度也越强。 有效值为 0 到 255 266 | 7、(default = 1) — 应用滤镜的次数 267 | 8、(default = 0) — 指定发光是否为内侧发光。 值 1 指定发光是内侧发光。 值 0 指定发光是外侧发光(对象外缘周围的发光) 268 | 9、(default = 0) — 指定对象是否具有挖空效果。 值为 1 将使对象的填充变为透明,并显示文档的背景颜色 269 | */ 270 | advmarquee: escape(''), 271 | /* 272 | 该处是滚动文字广告的内容,如果不想在这里设置,就把这里清空并且在页面中使用js的函数定义function ckmarqueeadv(){return '广告内容'} 273 | */ 274 | mainfuntion:'', 275 | /* 276 | 当flashvars里s=3/4时,调用的函数包名称,默认为空,调用时间轴上的函数setAppObj 277 | */ 278 | flashplayer:'', 279 | /* 280 | 当flashvars里的s=3/4时,也可以把swf文件放在这里 281 | */ 282 | calljs:'ckplayer_status,ckadjump,playerstop,ckmarqueeadv', 283 | /* 284 | 跳过广告和播放结束时调用的js函数 285 | */ 286 | myweb: escape(''), 287 | /* 288 | ------------------------------------------------------------------------------------------------------------------ 289 | 以下内容部份是和插件相关的配置,请注意,自定义插件以及其配置的命名方式要注意,不要和系统的相重复,不然就会替换掉系统的相关设置,删除相关插件的话也可以同时删除相关的配置 290 | ------------------------------------------------------------------------------------------------------------------ 291 | 以下内容定义自定义插件的相关配置,这里也可以自定义任何自己的插件需要配置的内容,当然,如果你某个插件不使用的话,也可以删除相关的配置 292 | ------------------------------------------------------------------------------------------------------------------ 293 | */ 294 | cpt_lights: '0', 295 | /* 296 | 该处定义是否使用开关灯,和right.swf插件配合作用,使用开灯效果时调用页面的js函数function closelights(){}; 297 | */ 298 | cpt_share: 'ckplayer/share.xml', 299 | /* 300 | 分享插件调用的配置文件地址 301 | 调用插件开始 302 | */ 303 | cpt_list: ckcpt() 304 | /* 305 | ckcpt()是本文件最上方的定义插件的函数 306 | */ 307 | } 308 | return ck; 309 | } 310 | /* 311 | html5部分开始 312 | 以下代码是支持html5的,如果你不需要,可以删除。 313 | html5代码块的代码可以随意更改以适合你的应用,欢迎到论坛交流更改心得 314 | */ 315 | (function() { 316 | var CKobject = { 317 | _K_: function(d){return document.getElementById(d);}, 318 | _T_: false, 319 | _M_: false, 320 | _G_: false, 321 | _Y_: false, 322 | _I_: null, 323 | _J_: 0, 324 | _O_: {}, 325 | uaMatch:function(u,rMsie,rFirefox,rOpera,rChrome,rSafari,rSafari2,mozilla,mobile){ 326 | var match = rMsie.exec(u); 327 | if (match != null) { 328 | return { 329 | b: 'IE', 330 | v: match[2] || '0' 331 | } 332 | } 333 | match = rFirefox.exec(u); 334 | if (match != null) { 335 | return { 336 | b: match[1] || '', 337 | v: match[2] || '0' 338 | } 339 | } 340 | match = rOpera.exec(u); 341 | if (match != null) { 342 | return { 343 | b: match[1] || '', 344 | v: match[2] || '0' 345 | } 346 | } 347 | match = rChrome.exec(u); 348 | if (match != null) { 349 | return { 350 | b: match[1] || '', 351 | v: match[2] || '0' 352 | } 353 | } 354 | match = rSafari.exec(u); 355 | if (match != null) { 356 | return { 357 | b: match[2] || '', 358 | v: match[1] || '0' 359 | } 360 | } 361 | match = rSafari2.exec(u); 362 | if (match != null) { 363 | return { 364 | b: match[1] || '', 365 | v: match[2] || '0' 366 | } 367 | } 368 | match = mozilla.exec(u); 369 | if (match != null) { 370 | return { 371 | b: match[1] || '', 372 | v: match[2] || '0' 373 | } 374 | } 375 | match = mobile.exec(u); 376 | if (match != null) { 377 | return { 378 | b: match[1] || '', 379 | v: match[2] || '0' 380 | } 381 | } 382 | else { 383 | return { 384 | b: 'unknown', 385 | v: '0' 386 | } 387 | } 388 | }, 389 | browser: function() { 390 | var u = navigator.userAgent, 391 | rMsie = /(msies|trident.*rv:)([w.]+)/, 392 | rFirefox = /(firefox)/([w.]+)/, 393 | rOpera = /(opera).+version/([w.]+)/, 394 | rChrome = /(chrome)/([w.]+)/, 395 | rSafari = /version/([w.]+).*(safari)/, 396 | rSafari2 = /(safari)/([w.]+)/, 397 | mozilla = /(mozilla)/([w.]+)/, 398 | mobile = /(mobile)/([w.]+)/; 399 | var c = u.toLowerCase(); 400 | var d = this.uaMatch(c,rMsie,rFirefox,rOpera,rChrome,rSafari,rSafari2,mozilla,mobile); 401 | if (d.b) { 402 | b = d.b; 403 | v = d.v; 404 | } 405 | return {B: b, V: v}; 406 | }, 407 | Platform: function() { 408 | var w = ''; 409 | var u = navigator.userAgent, 410 | app = navigator.appVersion; 411 | var b = { 412 | iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, 413 | iPad: u.indexOf('iPad') > -1, 414 | ios: !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/), 415 | android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, 416 | webKit: u.indexOf('AppleWebKit') > -1, 417 | trident: u.indexOf('Trident') > -1, 418 | gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, 419 | presto: u.indexOf('Presto') > -1, 420 | mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/), 421 | webApp: u.indexOf('Safari') == -1 422 | }; 423 | for (var k in b) { 424 | if (b[k]) { 425 | w = k; 426 | break; 427 | } 428 | } 429 | return w; 430 | }, 431 | isHTML5:function(){ 432 | return !!document.createElement('video').canPlayType; 433 | }, 434 | getType:function(){ 435 | return this._T_; 436 | }, 437 | getVideo: function() { 438 | var v = ''; 439 | var s = this._E_['v']; 440 | if (s && s.length>1) { 441 | for (var i = 0; i < s.length; i++) { 442 | var a = s[i].split('->'); 443 | if (a.length >= 1 && a[0] != '') { 444 | v += '= 2 && a[1] != '') { 447 | v += ' type="' + a[1] + '"'; 448 | } 449 | v += '>'; 450 | } 451 | } 452 | return v; 453 | }, 454 | getVars: function(k) { 455 | var o=this._A_; 456 | if (typeof(o) == 'undefined') { 457 | return null; 458 | } 459 | if (k in o) { 460 | return o[k]; 461 | } else { 462 | return null; 463 | } 464 | }, 465 | getParams: function() { 466 | var p = ''; 467 | if (this._A_) { 468 | if (parseInt(this.getVars('p')) == 1) { 469 | p += ' autoplay="autoplay"'; 470 | } 471 | if (parseInt(this.getVars('e')) == 1) { 472 | p += ' loop="loop"'; 473 | } 474 | if (parseInt(this.getVars('p')) == 2) { 475 | p += ' preload="metadata"'; 476 | } 477 | if (this.getVars('i')) { 478 | p += ' poster="' + this.getVars('i') + '"'; 479 | } 480 | } 481 | return p; 482 | }, 483 | getpath: function(z) { 484 | var f='CDEFGHIJKLMNOPQRSTUVWXYZcdefghijklmnopqrstuvwxyz'; 485 | var w=z.substr(0,1); 486 | if(f.indexOf(w)>-1 && (z.substr(0,4)==w+'://' || z.substr(0,4)==w+':\')){ 487 | return z; 488 | } 489 | var d = unescape(window.location.href).replace('file:///', ''); 490 | var k = parseInt(document.location.port); 491 | var u = document.location.protocol + '//' + document.location.hostname; 492 | var l = '', 493 | e = '', 494 | t = ''; 495 | var s = 0; 496 | var r = unescape(z).split('//'); 497 | if (r.length > 0) { 498 | l = r[0] + '//' 499 | } 500 | var h = 'http|https|ftp|rtsp|mms|ftp|rtmp|file'; 501 | var a = h.split('|'); 502 | if (k != 80 && k) { 503 | u += ':' + k; 504 | } 505 | for (i = 0; i < a.length; i++) { 506 | if ((a[i] + '://') == l) { 507 | s = 1; 508 | break; 509 | } 510 | } 511 | if (s == 0) { 512 | if (z.substr(0, 1) == '/') { 513 | t = u + z; 514 | } else { 515 | e = d.substring(0, d.lastIndexOf('/') + 1).replace('\', '/'); 516 | var w = z.replace('../', './'); 517 | var u = w.split('./'); 518 | var n = u.length; 519 | var r = w.replace('./', ''); 520 | var q = e.split('/'); 521 | var j = q.length - n; 522 | for (i = 0; i < j; i++) { 523 | t += q[i] + '/'; 524 | } 525 | t += r; 526 | } 527 | } else { 528 | t = z; 529 | } 530 | return t; 531 | }, 532 | getXhr: function() { 533 | var x; 534 | try { 535 | x = new ActiveXObject('Msxml2.XMLHTTP'); 536 | } catch(e) { 537 | try { 538 | x = new ActiveXObject('Microsoft.XMLHTTP'); 539 | } catch(e) { 540 | x = false; 541 | } 542 | } 543 | if (!x && typeof XMLHttpRequest != 'undefined') { 544 | x = new XMLHttpRequest(); 545 | } 546 | return x; 547 | }, 548 | getX: function(){ 549 | var f='ckstyle()'; 550 | if (this.getVars('x')) { 551 | f=this.getVars('x')+'()'; 552 | } 553 | try { 554 | if (typeof(eval(f)) == 'object') { 555 | this._X_ = eval(f); 556 | } 557 | } catch(e) { 558 | try { 559 | if (typeof(eval(ckstyle)) == 'object') { 560 | this._X_ = ckstyle(); 561 | } 562 | } catch(e) { 563 | this._X_ = ckstyle(); 564 | } 565 | } 566 | }, 567 | getSn: function(s, n) { 568 | if(n>=0){ 569 | return this._X_[s].split(',')[n]; 570 | } 571 | else{ 572 | return this._X_[s]; 573 | } 574 | }, 575 | getUrl: function(L, B) { 576 | var b = ['get', 'utf-8']; 577 | if (L && L.length == 2) { 578 | var a = L[0]; 579 | var c = L[1].split('/'); 580 | if (c.length >= 2) { 581 | b[0] = c[1]; 582 | } 583 | if (c.length >= 3) { 584 | b[1] = c[2]; 585 | } 586 | this.ajax(b[0], b[1], a, 587 | function(s) { 588 | var C = CKobject; 589 | if (s && s != 'error') { 590 | var d = '', 591 | e = s; 592 | if (s.indexOf('}') > -1) { 593 | var f = s.split('}'); 594 | for (var i = 0; i < f.length - 1; i++) { 595 | d += f[i] + '}'; 596 | var h = f[i].replace('{', '').split('->'); 597 | if (h.length == 2) { 598 | C._A_[h[0]] = h[1]; 599 | } 600 | } 601 | e = f[f.length - 1]; 602 | } 603 | C._E_['v'] = e.split(','); 604 | if (B) { 605 | C.showHtml5(); 606 | } else { 607 | C.changeParams(d); 608 | C.newAdr(); 609 | } 610 | } 611 | }); 612 | } 613 | }, 614 | getflashvars: function(s) { 615 | var v = '', 616 | i = 0; 617 | if (s) { 618 | for (var k in s) { 619 | if (i > 0) { 620 | v += '&'; 621 | } 622 | if (k == 'f' && s[k] && ! this.getSn('pm_repc',-1)) { 623 | s[k] = this.getpath(s[k]); 624 | if (s[k].indexOf('&') > -1) { 625 | s[k] = encodeURIComponent(s[k]); 626 | } 627 | } 628 | if (k == 'y' && s[k]) { 629 | s[k] = this.getpath(s[k]); 630 | } 631 | v += k + '=' + s[k]; 632 | i++; 633 | } 634 | } 635 | return v; 636 | }, 637 | getparam: function(s) { 638 | var w = '', 639 | v = '', 640 | o = { 641 | allowScriptAccess: 'always', 642 | allowFullScreen: true, 643 | quality: 'high', 644 | bgcolor: '#000' 645 | }; 646 | if (s) { 647 | for (var k in s) { 648 | o[k] = s[k]; 649 | } 650 | } 651 | for (var e in o) { 652 | w += e + '="' + o[e] + '" '; 653 | v += ''; 654 | } 655 | w = w.replace('movie=', 'src='); 656 | return { 657 | w: w, 658 | v: v 659 | }; 660 | }, 661 | getObjectById: function(s) { 662 | if (this._T_) { 663 | return this; 664 | } 665 | var X = null, 666 | Y = this._K_(s), 667 | r = 'embed'; 668 | if (Y && Y.nodeName == 'OBJECT') { 669 | if (typeof Y.SetVariable != 'undefined') { 670 | X = Y; 671 | } else { 672 | var Z = Y.getElementsByTagName(r)[0]; 673 | if (Z) { 674 | X = Z; 675 | } 676 | } 677 | } 678 | return X; 679 | }, 680 | ajax: function(b, u, s, f) { 681 | var x = this.getXhr(); 682 | var a = [], 683 | m = ''; 684 | if (b == 'get') { 685 | if (s.indexOf('?') > -1) { 686 | m = s + '&t=' + new Date().getTime(); 687 | } else { 688 | m = s + '?t=' + new Date().getTime(); 689 | } 690 | x.open('get', m); 691 | } else { 692 | a = s.split('?'); 693 | s = a[0], 694 | m = a[1]; 695 | x.open('post', s, true); 696 | } 697 | x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 698 | x.setRequestHeader('charset', u); 699 | if (b == 'post') { 700 | x.send(m); 701 | } else { 702 | x.send(null); 703 | } 704 | x.onreadystatechange = function() { 705 | if (x.readyState == 4) { 706 | var g = x.responseText; 707 | if (g != '') { 708 | f(g); 709 | } else { 710 | f(null); 711 | } 712 | } 713 | } 714 | }, 715 | addListener: function(e, f) { 716 | var o=CKobject._V_; 717 | if (o.addEventListener) { 718 | try{ 719 | o.addEventListener(e, f, false); 720 | } 721 | catch (e) { 722 | this.getNot(); 723 | } 724 | } 725 | else if (o.attachEvent) { 726 | try{ 727 | o.attachEvent('on' + e, f); 728 | } 729 | catch(e){ 730 | this.getNot(); 731 | } 732 | } 733 | else { 734 | o['on' + e] = f; 735 | } 736 | }, 737 | removeListener: function( e, f) { 738 | var o=CKobject._V_; 739 | if (o.removeEventListener) { 740 | try{ 741 | o.removeEventListener(e, f, false); 742 | } 743 | catch(e){ 744 | this.getNot(); 745 | } 746 | } 747 | else if (o.detachEvent) { 748 | try{ 749 | o.detachEvent('on' + e, f); 750 | } 751 | catch(e){ 752 | this.getNot(); 753 | } 754 | } 755 | else { 756 | o['on' + e] = null; 757 | } 758 | }, 759 | Flash: function() { 760 | var f = false,v = 0; 761 | if (document.all || this.browser()['B'].toLowerCase().indexOf('ie')>-1) { 762 | try { 763 | var s = new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); 764 | f = true; 765 | var z = s.GetVariable('$version'); 766 | v = parseInt(z.split(' ')[1].split(',')[0]); 767 | } catch(e) {} 768 | } else { 769 | if (navigator.plugins && navigator.plugins.length > 0) { 770 | var s = navigator.plugins['Shockwave Flash']; 771 | if (s) { 772 | f = true; 773 | var w = s.description.split(' '); 774 | for (var i = 0; i < w.length; ++i) { 775 | if (isNaN(parseInt(w[i]))) continue; 776 | v = parseInt(w[i]); 777 | } 778 | } 779 | } 780 | } 781 | return { 782 | f: f, 783 | v: v 784 | }; 785 | }, 786 | embed:function(f,d,i,w,h,b,v,e,p){ 787 | var s=['all']; 788 | if(b){ 789 | if(this.isHTML5()){ 790 | this.embedHTML5(d,i,w,h,e,v,s); 791 | } 792 | else{ 793 | this.embedSWF(f,d,i,w,h,v,p); 794 | } 795 | } 796 | else{ 797 | if(this.Flash()['f'] && parseInt(this.Flash()['v'])>10){ 798 | this.embedSWF(f,d,i,w,h,v,p); 799 | } 800 | else if(this.isHTML5()){ 801 | this.embedHTML5(d,i,w,h,e,v,s); 802 | } 803 | else{ 804 | this.embedSWF(f,d,i,w,h,v,p); 805 | } 806 | } 807 | }, 808 | embedSWF: function(C, D, N, W, H, V, P) { 809 | if (!N) { 810 | N = 'ckplayer_a1' 811 | } 812 | if (!P) { 813 | P = { 814 | bgcolor: '#FFF', 815 | allowFullScreen: true, 816 | allowScriptAccess: 'always', 817 | wmode:'transparent' 818 | }; 819 | } 820 | this._A_=V; 821 | this.getX(); 822 | var u = 'undefined', 823 | g = false, 824 | j = document, 825 | r = 'http://www.macromedia.com/go/getflashplayer', 826 | t = '请点击此处下载安装最新的flash插件', 827 | error = { 828 | w: '您的网页不符合w3c标准,无法显示播放器', 829 | f: '您没有安装flash插件,无法播放视频,' + t, 830 | v: '您的flash插件版本过低,无法播放视频,' + t 831 | }, 832 | w3c = typeof j.getElementById != u && typeof j.getElementsByTagName != u && typeof j.createElement != u, 833 | i = 'id="' + N + '" name="' + N + '" ', 834 | s = '', 835 | l = ''; 836 | P['movie'] = C; 837 | P['flashvars'] = this.getflashvars(V); 838 | if(W==-1){ 839 | d=true; 840 | this._K_(D).style.width='100%'; 841 | W='100%'; 842 | } 843 | s += ''; 855 | s += ''; 856 | if (!w3c) { 857 | l = error['w']; 858 | g = true; 859 | } else { 860 | if (!this.Flash()['f']) { 861 | l = error['f']; 862 | g = true; 863 | } else { 864 | if (this.Flash()['v'] < 10) { 865 | l = error['v']; 866 | g = true; 867 | } else { 868 | l = s; 869 | this._T_=false; 870 | } 871 | } 872 | } 873 | if (l) { 874 | this._K_(D).innerHTML = l; 875 | } 876 | if (g){ 877 | this._K_(D).style.color = '#0066cc'; 878 | this._K_(D).style.lineHeight = this._K_(D).style.height; 879 | this._K_(D).style.textAlign= 'center'; 880 | } 881 | }, 882 | embedHTML5: function(C, P, W, H, V, A, S) { 883 | this._E_ = { 884 | c: C, 885 | p: P, 886 | w: W, 887 | h: H, 888 | v: V, 889 | s: S 890 | }; 891 | this._A_ = A; 892 | this.getX(); 893 | b = this.browser()['B'], 894 | v = this.browser()['V'], 895 | x = v.split('.'), 896 | t = x[0], 897 | m = b + v, 898 | n = b + t, 899 | w = '', 900 | s = false, 901 | f = this.Flash()['f'], 902 | a = false; 903 | if (!S) { 904 | S = ['iPad', 'iPhone', 'ios']; 905 | } 906 | for (var i = 0; i < S.length; i++) { 907 | w = S[i]; 908 | if (w.toLowerCase() == 'all') { 909 | s = true; 910 | break; 911 | } 912 | if (w.toLowerCase() == 'all+false' && !f) { 913 | s = true; 914 | break; 915 | } 916 | if (w.indexOf('+') > -1) { 917 | w = w.split('+')[0]; 918 | a = true; 919 | } else { 920 | a = false; 921 | } 922 | if (this.Platform() == w || m == w || n == w || b == w) { 923 | if (a) { 924 | if (!f) { 925 | s = true; 926 | break; 927 | } 928 | }else { 929 | s = true; 930 | break; 931 | } 932 | } 933 | } 934 | if (s) { 935 | if (V) { 936 | var l = V[0].split('->'); 937 | if (l && l.length == 2 && l[1].indexOf('ajax') > -1) { 938 | this.getUrl(l, true); 939 | return; 940 | } 941 | } 942 | this.showHtml5(); 943 | } 944 | }, 945 | status: function() { 946 | this._H_ = parseInt(this.getSn('setup', 20)); 947 | var f='ckplayer_status'; 948 | if (this.getSn('calljs', 0)!='') { 949 | f=this.getSn('calljs', 0); 950 | } 951 | try { 952 | if (typeof(eval(f)) == 'function') { 953 | this._L_=eval(f); 954 | this._M_=true; 955 | return true; 956 | } 957 | } catch(e) { 958 | try { 959 | if (typeof(eval(ckplayer_status)) == 'function') { 960 | this._L_=ckplayer_status; 961 | this._M_=true; 962 | return true; 963 | } 964 | } catch(e) { 965 | return false; 966 | } 967 | } 968 | return false; 969 | }, 970 | showHtml5: function() { 971 | var C = CKobject; 972 | var p = C._E_['p'], 973 | a = C._E_['v'], 974 | c = C._E_['c'], 975 | b = false; 976 | var s = this._E_['v']; 977 | var w=C._E_['w'],h=C._E_['h']; 978 | var d=false; 979 | var r=''; 980 | if(s.length==1){ 981 | r=' src="'+s[0].split('->')[0]+'"'; 982 | } 983 | if(w==-1){ 984 | d=true; 985 | C._K_(c).style.width='100%'; 986 | w='100%'; 987 | } 988 | if(w.toString().indexOf('%')>-1){ 989 | w='100%'; 990 | } 991 | if(h.toString().indexOf('%')>-1){ 992 | h='100%'; 993 | } 994 | var v = ''; 995 | C._K_(c).innerHTML = v; 996 | 997 | C._K_(c).style.backgroundColor = '#000'; 998 | C._V_ = this._K_(p); 999 | if(!d){ 1000 | C._K_(c).style.width=this._E_['w'].toString().indexOf('%')>-1?(C._K_(c).offsetWidth*parseInt(this._E_['w'])*0.01)+'px':C._V_.width+'px'; 1001 | C._K_(c).style.height=this._E_['h'].toString().indexOf('%')>-1?(C._K_(c).offsetHeight*parseInt(this._E_['h'])*0.01)+'px':C._V_.height+'px'; 1002 | } 1003 | C._P_ = false; 1004 | C._T_ = true; 1005 | if (C.getVars('loaded')!='') { 1006 | var f=C.getVars('loaded')+'()'; 1007 | try { 1008 | if (typeof(eval(f)) == 'function') { 1009 | eval(f); 1010 | } 1011 | } catch(e) { 1012 | try { 1013 | if (typeof(eval(loadedHandler)) == 'function') { 1014 | loadedHandler(); 1015 | } 1016 | } catch(e) { 1017 | } 1018 | } 1019 | } 1020 | C.status(); 1021 | C.addListener('play', C.playHandler); 1022 | C.addListener('pause', C.playHandler); 1023 | C.addListener('error', C.errorHandler); 1024 | C.addListener('emptied', C.errorHandler); 1025 | C.addListener('loadedmetadata', C.loadedMetadataHandler); 1026 | C.addListener('ended', C.endedHandler); 1027 | C.addListener('volumechange', C.volumeChangeHandler); 1028 | }, 1029 | videoPlay: function() { 1030 | if (this._T_) { 1031 | this._V_.play(); 1032 | } 1033 | }, 1034 | videoPause: function() { 1035 | if (this._T_) { 1036 | this._V_.pause(); 1037 | } 1038 | }, 1039 | playOrPause: function() { 1040 | if (this._T_) { 1041 | if (this._V_.paused) { 1042 | this._V_.play(); 1043 | } else { 1044 | this._V_.pause(); 1045 | } 1046 | } 1047 | }, 1048 | fastNext: function() { 1049 | if (this._T_) { 1050 | this._V_['currentTime'] = this._V_['currentTime'] + 10; 1051 | } 1052 | }, 1053 | fastBack: function() { 1054 | if (this._T_) { 1055 | this._V_['currentTime'] = this._V_['currentTime'] - 10; 1056 | } 1057 | }, 1058 | changeVolume: function(n) { 1059 | if (this._T_) { 1060 | this._V_['volume'] = n * 0.01; 1061 | } 1062 | }, 1063 | videoSeek: function(t) { 1064 | if (this._T_) { 1065 | this._V_['currentTime'] = t; 1066 | } 1067 | }, 1068 | newAddress: function(u) { 1069 | var s = []; 1070 | if (u) { 1071 | s = this.isHtml5New(u); 1072 | } else { 1073 | return; 1074 | } 1075 | if (s && this._T_) { 1076 | this.changeParams(u); 1077 | var l = s[0].split('->'); 1078 | if (l && l.length == 2 && l[1].indexOf('ajax') > -1) { 1079 | this.getUrl(l, false); 1080 | return; 1081 | } 1082 | this._E_['v'] = s; 1083 | this.newAdr(); 1084 | } 1085 | }, 1086 | quitFullScreen:function() { 1087 | if(document.cancelFullScreen) { 1088 | document.cancelFullScreen(); 1089 | } 1090 | else if(document.mozCancelFullScreen) { 1091 | document.mozCancelFullScreen(); 1092 | } else if(document.webkitCancelFullScreen) { 1093 | document.webkitCancelFullScreen(); 1094 | } 1095 | 1096 | }, 1097 | changeStatus:function(n){ 1098 | this._H_=n; 1099 | }, 1100 | newAdr: function() { 1101 | var s = this._E_['v']; 1102 | this._V_.pause(); 1103 | if(s.length==1){ 1104 | this._V_.src=s[0].split('->')[0]; 1105 | } 1106 | else{ 1107 | this._V_['innerHTML'] = this.getVideo(); 1108 | } 1109 | this._V_.load(); 1110 | }, 1111 | isHtml5New: function(s) { 1112 | if (s.indexOf('html5') == -1) { 1113 | return false; 1114 | } 1115 | var a = s.replace(/{/g, ''); 1116 | var b = a.split('}'); 1117 | var c = ''; 1118 | for (var i = 0; i < b.length; i++) { 1119 | if (b[i].indexOf('html5') > -1) { 1120 | c = b[i].replace('html5->', '').split(','); 1121 | break; 1122 | } 1123 | } 1124 | return c; 1125 | }, 1126 | changeParams: function(f) { 1127 | if (f) { 1128 | var a = f.replace(/{/g, ''); 1129 | var b = a.split('}'); 1130 | var c = ''; 1131 | for (var i = 0; i < b.length; i++) { 1132 | var d = b[i].split('->'); 1133 | if(d.length == 2){ 1134 | switch(d[0]){ 1135 | case 'p': 1136 | if(parseInt(d[1]) == 1){ 1137 | this._V_.autoplay = true; 1138 | } 1139 | else if(parseInt(d[1]) == 2){ 1140 | this._V_.preload = 'metadata'; 1141 | } 1142 | else{ 1143 | this._V_.autoplay = false; 1144 | if(this._I_!=null){ 1145 | clearInterval(this._I_); 1146 | this._I_=null; 1147 | } 1148 | } 1149 | break; 1150 | case 'e': 1151 | if(parseInt(d[1]) == 1){ 1152 | this._V_.loop = true; 1153 | } 1154 | else{ 1155 | this._V_.loop = false; 1156 | } 1157 | break; 1158 | case 'i': 1159 | this._V_.poster = d[1]; 1160 | break; 1161 | default: 1162 | break; 1163 | } 1164 | } 1165 | } 1166 | } 1167 | }, 1168 | frontAdPause: function(s) { 1169 | this.getNot(); 1170 | }, 1171 | frontAdUnload: function() { 1172 | this.getNot(); 1173 | }, 1174 | changeFace: function(s) { 1175 | this.getNot(); 1176 | }, 1177 | plugin: function(a, b, c, d, e, f, g) { 1178 | this.getNot(); 1179 | }, 1180 | videoClear: function() { 1181 | this.getNot(); 1182 | }, 1183 | videoBrightness: function(s) { 1184 | this.getNot(); 1185 | }, 1186 | videoContrast: function(s) { 1187 | this.getNot(); 1188 | }, 1189 | videoSaturation: function(s) { 1190 | this.getNot(); 1191 | }, 1192 | videoSetHue: function(s) { 1193 | this.getNot(); 1194 | }, 1195 | videoWAndH: function(a, b) { 1196 | this.getNot(); 1197 | }, 1198 | videoWHXY: function(a, b, c, d) { 1199 | this.getNot(); 1200 | }, 1201 | changeFlashvars: function(a) { 1202 | this.getNot(); 1203 | }, 1204 | changeMyObject: function(a, b) { 1205 | this.getNot(); 1206 | }, 1207 | getMyObject: function(a, b) { 1208 | this.getNot(); 1209 | }, 1210 | changeeFace: function() { 1211 | this.getNot(); 1212 | }, 1213 | changeStyle: function(a, b) { 1214 | this.getNot(); 1215 | }, 1216 | promptLoad: function() { 1217 | this.getNot(); 1218 | }, 1219 | promptUnload: function() { 1220 | this.getNot(); 1221 | }, 1222 | marqueeLoad: function(a,b) { 1223 | this.getNot(); 1224 | }, 1225 | marqueeClose: function(s) { 1226 | this.getNot(); 1227 | }, 1228 | getNot: function() { 1229 | var s='The ckplayer's API for HTML5 does not exist'; 1230 | return s; 1231 | }, 1232 | volumeChangeHandler: function() { 1233 | var C = CKobject; 1234 | if (C._V_.muted) { 1235 | C.returnStatus('volumechange:0', 1); 1236 | C._O_['volume'] = 0; 1237 | C._O_['mute'] = true; 1238 | } else { 1239 | C._O_['mute'] = false; 1240 | C._O_['volume'] = C._V_['volume'] * 100; 1241 | C.returnStatus('volumechange:'+C._V_['volume'] * 100, 1); 1242 | } 1243 | }, 1244 | endedHandler: function() { 1245 | var C = CKobject; 1246 | var e=parseInt(C.getVars('e')); 1247 | C.returnStatus('ended', 1); 1248 | if(C._I_){ 1249 | clearInterval(C._I_); 1250 | C._I_=null; 1251 | } 1252 | if ( e!= 0 && e !=4 && e !=6) { 1253 | return; 1254 | } 1255 | if(e==6){ 1256 | this.quitFullScreen(); 1257 | } 1258 | var f='playerstop()'; 1259 | if (C.getSn('calljs', 2)!='') { 1260 | f=C.getSn('calljs', 2)+'()'; 1261 | } 1262 | try { 1263 | if (typeof(eval(f)) == 'function') { 1264 | eval(f); 1265 | return; 1266 | } 1267 | } catch(e) { 1268 | try { 1269 | if (typeof(eval(playerstop)) == 'function') { 1270 | playerstop(); 1271 | return; 1272 | } 1273 | } catch(e) { 1274 | return; 1275 | } 1276 | } 1277 | }, 1278 | loadedMetadataHandler: function() { 1279 | var C = CKobject; 1280 | C.returnStatus('loadedmetadata', 1); 1281 | C._O_['totaltime'] = C._V_['duration']; 1282 | C._O_['width'] = C._V_['width']; 1283 | C._O_['height'] = C._V_['height']; 1284 | C._O_['awidth'] = C._V_['videoWidth']; 1285 | C._O_['aheight'] = C._V_['videoHeight']; 1286 | if (C._V_.defaultMuted) { 1287 | C.returnStatus('volumechange:0', 1); 1288 | C._O_['mute'] = true; 1289 | C._O_['volume'] = 0; 1290 | } else { 1291 | C._O_['mute'] = false; 1292 | C._O_['volume'] = C._V_['volume'] * 100; 1293 | C.returnStatus('volumechange:'+C._V_['volume'] * 100, 1); 1294 | } 1295 | }, 1296 | errorHandler: function() { 1297 | CKobject.returnStatus('error', 1); 1298 | }, 1299 | playHandler: function() { 1300 | var C = CKobject; 1301 | if (C._V_.paused) { 1302 | C.returnStatus('pause', 1); 1303 | C.addO('play', false); 1304 | if(C._I_!=null){ 1305 | clearInterval(C._I_); 1306 | C._I_=null; 1307 | } 1308 | } else { 1309 | C.returnStatus('play', 1); 1310 | C.addO('play', true); 1311 | if (!C._P_) { 1312 | C.returnStatus('play', 1); 1313 | C._P_ = true; 1314 | } 1315 | C._I_ = setInterval(C.playTime, parseInt( C.getSn('setup', 37))); 1316 | if(!C._G_){ 1317 | C._G_=true; 1318 | for(var k in C._A_){ 1319 | if(k=='g' && C._A_[k]){ 1320 | var g=parseInt(C._A_[k]); 1321 | C.videoSeek(g); 1322 | } 1323 | } 1324 | } 1325 | if(!C._Y_){ 1326 | C._Y_=true; 1327 | for(var k in C._A_){ 1328 | if(k=='j' && C._A_[k]){ 1329 | var j=parseInt(C._A_[k]); 1330 | if(j>0){ 1331 | C._J_=j; 1332 | } 1333 | else{ 1334 | C._J_=parseInt(C._O_['totaltime'])+j; 1335 | } 1336 | } 1337 | } 1338 | } 1339 | } 1340 | }, 1341 | returnStatus: function(s, j) { 1342 | var h = s; 1343 | if (this._H_ == 3) { 1344 | h = this._E_['p'] +'->'+ h; 1345 | } 1346 | if (this._M_ && j <= this._H_ ) { 1347 | this._L_(h); 1348 | } 1349 | }, 1350 | addO: function(s, z) { 1351 | this._O_[s] = z; 1352 | }, 1353 | getStatus: function() { 1354 | return this._O_; 1355 | }, 1356 | playTime: function() { 1357 | var C = CKobject; 1358 | var t = C._V_['currentTime']; 1359 | C._O_['time'] = t; 1360 | if(C._J_>0 && t>C._J_){ 1361 | C._J_=0; 1362 | C.videoSeek(C._O_['totaltime']); 1363 | } 1364 | C.returnStatus('time:' + t, 1); 1365 | } 1366 | } 1367 | window.CKobject = CKobject; 1368 | })(); --------------------------------------------------------------------------------