├── README.md ├── example ├── js │ ├── index.js │ └── play-video.1.0.6.min.js ├── css │ └── index.css └── index.html ├── play-video.1.0.6.min.js └── play-video.1.0.6.js /README.md: -------------------------------------------------------------------------------- 1 | # playVideo 2 | 优酷、腾讯视频统一播放器插件 3 | ##关于兼容性: 4 | - pc端测试过都是可以使用的。而且现在也是一直在用。 5 | - 移动端的播放会出现很多兼容性问题。这个目前是难以解决的。 6 | - 首先现在像优酷、腾讯等播放平台手机端都采用了video播放,但有的平台可能会先加载一个伪播放(先加载一个div层覆盖在视频上,视频先不加载)。然后企图先播放广告再播放视频。所以有时会造成功能上的影响。 7 | - 对于自动播放问题。移动端就更为突出。首先是各手机是否支持(android一般支持video的自动播放。ios就不一定了)。 8 | - 还要看各个播放器平台的接口在移动端是否真的会使用自动播放。 9 | ```javascript 10 | createVideo({id:"playvideo",autoplay:false,qqchannel:true});//单个直接调用。qqchannel调用qq直播时使用 11 | createVideo({//多个直接调用。 12 | id:"playvideo",//容器id 13 | autoplay:false,//是否自动播放 14 | qqchannel:this.getAttribute("channel")||false,//true调用qq直播时使用 15 | multiple:{ 16 | typeid:this.getAttribute("typeid"),//视频类型:youku or qq 17 | sid:this.getAttribute("sid"),//视频在优酷或腾讯上的id 18 | pic:this.getAttribute("pic")//不自动播放时显示的默认图片。腾讯视频点播时有效 19 | } 20 | }); 21 | ``` -------------------------------------------------------------------------------- /example/js/index.js: -------------------------------------------------------------------------------- 1 | 2 | var playvideo=document.getElementById("playvideo"); 3 | playvideo.style.height=playvideo.offsetWidth*0.5+"px"; 4 | 5 | window.onload=function(){ 6 | createVideo({id:"playvideo",autoplay:false,qqchannel:true});//单个直接调用。autoplay为false时可省略autoplay:false 7 | var playlist=document.getElementById("play_list").querySelectorAll("li"); 8 | for(var i=0;idiv{width:100%;height:100%; background-color:#000;} 14 | .play_list{overflow:hidden;width:80%;margin:10px auto;padding:0 10px;display:table;} 15 | .play_list li{width:31.33%;display:inline-block;color:#fff;padding:10px 5px;margin:1%;box-sizing:border-box;-webkit-box-sizing:border-box;cursor:pointer;background-color:#000;} 16 | .play_list .cur{background-color:#f00;} 17 | @media screen and (max-width:420px){ 18 | 19 | 20 | } -------------------------------------------------------------------------------- /example/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 视频播放例子 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /play-video.1.0.6.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * playVideo 1.0.4 3 | * https://github.com/zhouxitian/playVideo 4 | * author:zhouxitian@163.com 5 | */ 6 | eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('!4(a){l d,b=/^#([\\w-]+|\\w+)$/,c=4(a){s p c.z.F(a)};c.z=c.12={T:4(a){l b;s("17"==(b=Y a)?1n==a&&"1n"||2E.12.2D.2C(a).2F(8,-1):b).2G()},E:4(a){l b=9[0]||{};s 1j 0===a&&1===b.1r?b.1k:("1z"==Y a?b.1k=a:a&&1===a.1r&&(b.1k="",b.1K(a)),1j 0)},13:4(a,b){1l(l d 1B b)"1t"==c.z.T(b[d])||"17"==c.z.T(b[d])?(a[d]="1t"==c.z.T(b[d])?[]:{},2H.2B(a[d],b[d])):a[d]=b[d];s a},D:4(a){s 9[0].2A(a)},A:4(){s 9[0].2v},y:4(){s 9[0].2u},q:4(a,b){l c=r.11("2t");c.t="2w/2x",c.1a?c.1H=4(){("2z"==c.1a||"2y"==c.1a)&&(c.1H=1n,b&&b())}:c.2V=4(){b&&b()},c.1g=a,r.2U.1K(c)}},c.z.F=4(a){s a?("1z"==Y a&&(N=b.2Z(a),N&&N[1]&&N[1]&&(10=r.2Y(N[1]),10&&10.2S&&(9.1J=1,9[0]=10,9.2N=a))),1j 0):9},d=p 1L("F","13","E","D","A","y","q");1l(i 1B d)c[d[i]]=c.z[d[i]];c.F.12=c.z,16=4(a){9.F(a)},2P=4(a){l d,e,f,g,h,i,b={6:"1A",k:!1,K:!1,M:!1,J:!1,C:""};c.13(b,a),"17"==Y b.C?(d=b.C.1D,e=b.C.5,f=b.C.7,g=b.C.o,h=b.C.1C):(H=c("#"+b.6),d=H.D("1D"),e=H.D("5"),f=H.D("7"),g=H.D("o"),h=H.D("1C")),i={6:b.6,J:b.J,t:d,1f:h,M:b.M,K:b.K,5:e,7:f,o:g,k:0==b.k?!1:!0},p 16(i)},16.12={F:4(a){l b=9;b.3||(b.3={6:"1A",t:"U",M:!1,5:"",7:"",1f:"",K:!1,o:"",J:!1,k:!1}),c.13(b.3,a),b.1y()},1y:4(){l d,b=9;b.3.5&&(c("#"+b.3.6).E(""),"1m"==b.3.t?a.1I?b.1i():c.q?c.q("m://S.1m.n/25",4(){b.1i()}):R.X("优酷接口文件未加载"):"U"==b.3.t?a.L?b.1c():c.q?c.q("m://14.24.27/1Y/L/I/L.1Z.I",4(){b.1c()}):R.X("腾讯接口文件未加载"):"18"==b.3.t?!a.1v&&r.W?c.q?c.q("m://1b.V.1d.n/1e/19/S/15.22.I?20=1.21",4(){b.1o()}):R.X("搜狐接口文件未加载"):b.1o():"1F"==b.3.t&&(b.3.K?(d=r.11("2r"),d.j("1g","m://2m.1F.n/2k/2n/2o.E?7="+b.3.7+"&1T="+b.3.5+"&2q=2.2p&2j=2i&2d=2c&y=P%&A=P%"),d.j("2b",0),d.j("1W",!0),d.j("A","P%"),d.j("y","P%"),c("#"+b.3.6).E(d)):!a.Q&&r.W?c.q?c.q("m://1b.V.1d.n/1e/19/S/2h.2.15.I",4(){a.Q=a.Q||{},Q.u=Q.u||{},Q.u.B={},Q.u.B.31="2g",Q.u.B.1S=b.3.5,Q.u.B.7=b.3.7,Q.u.B.1V=b.3.5,b.1h()}):R.X("爱奇艺接口文件未加载"):b.1h()))},1i:4(){l a=9,b=4(){l d,a=3L.3K,b=p 1L("3O","3Q","3P","3J 3I","3C","3B"),c=!0;1l(d=0;d0){c=!1;3H}s c}();b?a.Z("m://V.1m.n/3F.0.3R/v/G/3W.G","44="+a.3.5+"&1p="+a.3.k+"&42=41&43=&3Z=&40=1x&3U="):p 1I.1u(a.3.6,{3V:"1x",7:a.3.5,3Y:!1,k:a.3.k})},1c:4(){l g,a=9,b=c("#"+a.3.6).A(),d=c("#"+a.3.6).y(),e=p L.3y,f={A:b,y:d,O:e,k:a.3.k?1:0,1R:0,3c:{3z:0},3d:"m://14.U.n/1N/1G/1M/1s/3e.G",o:a.3.o&&"3g"!=a.3.o?a.3.o:"",3f:a.3.J?"m://14.U.n/1N/1G/1M/1s/35.G":"",36:a.3.6};a.3.M?(e.37(a.3.5),f.t=1,f.3h=0):(e.3i(a.3.5),e.3t("7"),e.3s(a.3.1f||""),f.3v=0,f.3x=0,f.3w=0),g=p L.1u,g.3r(f)},1o:4(){l b,d,a=9;r.W?(b=c("#"+a.3.6).A(),d=c("#"+a.3.6).y(),p 1v(a.3.6,{7:a.3.5,1p:a.3.k,1O:a.3.o||"",A:b,y:d,1X:0,1E:0,1q:0,1w:0},"")):a.Z("m://3m.3n.18.n/"+a.3.5+"/v.G","1w=0&k="+a.3.k+"&7="+a.3.5+"&1q=0&1E=0&1X=0&3o=1&3p=m://1P.18.n/")},1h:4(){l d,e,b=9;r.W&&3j.3k.3l?(a.3q=(p 1U).1Q(),d=r.11("O"),e=b.3.6+(p 1U).1Q(),d.6=e,b.3.k||(d.j("1R",!0),d.j("3u","38"),d.j("32",!0)),d.j("1O",b.3.o),c("#"+b.3.6).E(d),Q.u.B.6=e,Q.u.B.k=b.3.k,33.39("m://1b.V.1d.n/1e/19/S/3a.15.I",4(){Q.O.3X({1V:b.3.5,3T:b.3.5,1S:b.3.5,7:b.3.7,3G:"",3D:0,3A:!0,3N:"0",3M:"",3b:1})})):b.Z("m://2R.O.2f.n/2e/2a.G","7="+b.3.7+"&1T="+b.3.5+"&29="+b.3.o+"&26=&28=&23=1")},Z:4(a,b){l d=9,e=r.11("2l");e.j("30",b),e.j("1g",a),e.j("1W",!0),e.j("2Q","2s"),e.j("2O","2L"),e.j("2M","m://1P.2T.n/2X/2W"),e.j("t","2K/x-2J-2I"),c("#"+d.3.6).E(e)}}}(34);',62,253,'|||options|function|sid|id|vid||this||||||||||setAttribute|autoplay|var|http|com|pic|new|getScript|document|return|type|PageInfo||||height|fn|width|playInfo|multiple|attr|html|init|swf|obj|js|minWin|isIframe|tvp|qqchannel|match|video|100||console|player|getType|qq|static|addEventListener|log|typeof|setEmbed|elem|createElement|prototype|extend|imgcache|min|playVideo|object|sohu|jsCommon|readyState|img01|playQQ|appgame|libs|title|src|playIqiyi|playYouku|void|innerHTML|for|youku|null|playSohu|isAutoPlay|downloadBtn|nodeType|skins|array|Player|SohuMobilePlayer|miniWinBtn|1a0718786643b0ef|play|string|playvideo|in|vtitle|typeid|shareBtn|iqiyi|vd|onreadystatechange|YKU|length|appendChild|Array|res|minivideo_v1|poster|www|getTime|controls|qipuId|tvId|Date|aid|allowfullscreen|topBarNor|tencentvideo_v1|player_v2|ver|01|sohu_player|bd|gtimg|jsapi|coop|cn|cid|apic|shareplayer|frameborder|1368|appId|disp|qiyi|mp4|sea1|3955c3425820435e86d0f4cdfe56f5e7|appKey|developer|embed|open|player_js|coopPlayerIndex|f22860a2479ad60d8da7697274de9346|accessToken|iframe|transparent|script|offsetHeight|offsetWidth|text|javascript|complete|loaded|getAttribute|callee|call|toString|Object|slice|toLowerCase|arguments|flash|shockwave|application|high|pluginspage|selector|quality|createVideo|wmode|dispatcher|parentNode|macromedia|body|onload|getflashplayer|go|getElementById|exec|flashvars|videoFormat|autobuffer|seajs|window|TencentPlayerMiniSkin|modId|setChannelId|metadata|use|miniplayer|rate|vodFlashExtVars|loadingSwf|web_small_loading|vodFlashSkin|undefined|isLiveFlashShowCfg|setVid|Zepto|os|phone|share|vrs|adClose|pageurl|__page_start|create|setTitle|setCoverId|preload|isVodFlashShowCfg|isVodFlashShowEnd|isVodFlashShowSearchBar|VideoInfo|bullet|isUGC|iPod|iPad|publicLevel|if|v1|vfrm|break|Phone|Windows|userAgent|navigator|ADPlayerID|duration|Android|SymbianOS|iPhone|0590|indexOf|tvid|vext|client_id|loader|load|show_related|wd|partnerid|BDskin|winType|embedid|VideoIDS'.split('|'),0,{})) 7 | -------------------------------------------------------------------------------- /example/js/play-video.1.0.6.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * playVideo 1.0.4 3 | * https://github.com/zhouxitian/playVideo 4 | * author:zhouxitian@163.com 5 | */ 6 | eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('!4(a){l d,b=/^#([\\w-]+|\\w+)$/,c=4(a){s p c.z.F(a)};c.z=c.12={T:4(a){l b;s("17"==(b=Y a)?1n==a&&"1n"||2E.12.2D.2C(a).2F(8,-1):b).2G()},E:4(a){l b=9[0]||{};s 1j 0===a&&1===b.1r?b.1k:("1z"==Y a?b.1k=a:a&&1===a.1r&&(b.1k="",b.1K(a)),1j 0)},13:4(a,b){1l(l d 1B b)"1t"==c.z.T(b[d])||"17"==c.z.T(b[d])?(a[d]="1t"==c.z.T(b[d])?[]:{},2H.2B(a[d],b[d])):a[d]=b[d];s a},D:4(a){s 9[0].2A(a)},A:4(){s 9[0].2v},y:4(){s 9[0].2u},q:4(a,b){l c=r.11("2t");c.t="2w/2x",c.1a?c.1H=4(){("2z"==c.1a||"2y"==c.1a)&&(c.1H=1n,b&&b())}:c.2V=4(){b&&b()},c.1g=a,r.2U.1K(c)}},c.z.F=4(a){s a?("1z"==Y a&&(N=b.2Z(a),N&&N[1]&&N[1]&&(10=r.2Y(N[1]),10&&10.2S&&(9.1J=1,9[0]=10,9.2N=a))),1j 0):9},d=p 1L("F","13","E","D","A","y","q");1l(i 1B d)c[d[i]]=c.z[d[i]];c.F.12=c.z,16=4(a){9.F(a)},2P=4(a){l d,e,f,g,h,i,b={6:"1A",k:!1,K:!1,M:!1,J:!1,C:""};c.13(b,a),"17"==Y b.C?(d=b.C.1D,e=b.C.5,f=b.C.7,g=b.C.o,h=b.C.1C):(H=c("#"+b.6),d=H.D("1D"),e=H.D("5"),f=H.D("7"),g=H.D("o"),h=H.D("1C")),i={6:b.6,J:b.J,t:d,1f:h,M:b.M,K:b.K,5:e,7:f,o:g,k:0==b.k?!1:!0},p 16(i)},16.12={F:4(a){l b=9;b.3||(b.3={6:"1A",t:"U",M:!1,5:"",7:"",1f:"",K:!1,o:"",J:!1,k:!1}),c.13(b.3,a),b.1y()},1y:4(){l d,b=9;b.3.5&&(c("#"+b.3.6).E(""),"1m"==b.3.t?a.1I?b.1i():c.q?c.q("m://S.1m.n/25",4(){b.1i()}):R.X("优酷接口文件未加载"):"U"==b.3.t?a.L?b.1c():c.q?c.q("m://14.24.27/1Y/L/I/L.1Z.I",4(){b.1c()}):R.X("腾讯接口文件未加载"):"18"==b.3.t?!a.1v&&r.W?c.q?c.q("m://1b.V.1d.n/1e/19/S/15.22.I?20=1.21",4(){b.1o()}):R.X("搜狐接口文件未加载"):b.1o():"1F"==b.3.t&&(b.3.K?(d=r.11("2r"),d.j("1g","m://2m.1F.n/2k/2n/2o.E?7="+b.3.7+"&1T="+b.3.5+"&2q=2.2p&2j=2i&2d=2c&y=P%&A=P%"),d.j("2b",0),d.j("1W",!0),d.j("A","P%"),d.j("y","P%"),c("#"+b.3.6).E(d)):!a.Q&&r.W?c.q?c.q("m://1b.V.1d.n/1e/19/S/2h.2.15.I",4(){a.Q=a.Q||{},Q.u=Q.u||{},Q.u.B={},Q.u.B.31="2g",Q.u.B.1S=b.3.5,Q.u.B.7=b.3.7,Q.u.B.1V=b.3.5,b.1h()}):R.X("爱奇艺接口文件未加载"):b.1h()))},1i:4(){l a=9,b=4(){l d,a=3L.3K,b=p 1L("3O","3Q","3P","3J 3I","3C","3B"),c=!0;1l(d=0;d0){c=!1;3H}s c}();b?a.Z("m://V.1m.n/3F.0.3R/v/G/3W.G","44="+a.3.5+"&1p="+a.3.k+"&42=41&43=&3Z=&40=1x&3U="):p 1I.1u(a.3.6,{3V:"1x",7:a.3.5,3Y:!1,k:a.3.k})},1c:4(){l g,a=9,b=c("#"+a.3.6).A(),d=c("#"+a.3.6).y(),e=p L.3y,f={A:b,y:d,O:e,k:a.3.k?1:0,1R:0,3c:{3z:0},3d:"m://14.U.n/1N/1G/1M/1s/3e.G",o:a.3.o&&"3g"!=a.3.o?a.3.o:"",3f:a.3.J?"m://14.U.n/1N/1G/1M/1s/35.G":"",36:a.3.6};a.3.M?(e.37(a.3.5),f.t=1,f.3h=0):(e.3i(a.3.5),e.3t("7"),e.3s(a.3.1f||""),f.3v=0,f.3x=0,f.3w=0),g=p L.1u,g.3r(f)},1o:4(){l b,d,a=9;r.W?(b=c("#"+a.3.6).A(),d=c("#"+a.3.6).y(),p 1v(a.3.6,{7:a.3.5,1p:a.3.k,1O:a.3.o||"",A:b,y:d,1X:0,1E:0,1q:0,1w:0},"")):a.Z("m://3m.3n.18.n/"+a.3.5+"/v.G","1w=0&k="+a.3.k+"&7="+a.3.5+"&1q=0&1E=0&1X=0&3o=1&3p=m://1P.18.n/")},1h:4(){l d,e,b=9;r.W&&3j.3k.3l?(a.3q=(p 1U).1Q(),d=r.11("O"),e=b.3.6+(p 1U).1Q(),d.6=e,b.3.k||(d.j("1R",!0),d.j("3u","38"),d.j("32",!0)),d.j("1O",b.3.o),c("#"+b.3.6).E(d),Q.u.B.6=e,Q.u.B.k=b.3.k,33.39("m://1b.V.1d.n/1e/19/S/3a.15.I",4(){Q.O.3X({1V:b.3.5,3T:b.3.5,1S:b.3.5,7:b.3.7,3G:"",3D:0,3A:!0,3N:"0",3M:"",3b:1})})):b.Z("m://2R.O.2f.n/2e/2a.G","7="+b.3.7+"&1T="+b.3.5+"&29="+b.3.o+"&26=&28=&23=1")},Z:4(a,b){l d=9,e=r.11("2l");e.j("30",b),e.j("1g",a),e.j("1W",!0),e.j("2Q","2s"),e.j("2O","2L"),e.j("2M","m://1P.2T.n/2X/2W"),e.j("t","2K/x-2J-2I"),c("#"+d.3.6).E(e)}}}(34);',62,253,'|||options|function|sid|id|vid||this||||||||||setAttribute|autoplay|var|http|com|pic|new|getScript|document|return|type|PageInfo||||height|fn|width|playInfo|multiple|attr|html|init|swf|obj|js|minWin|isIframe|tvp|qqchannel|match|video|100||console|player|getType|qq|static|addEventListener|log|typeof|setEmbed|elem|createElement|prototype|extend|imgcache|min|playVideo|object|sohu|jsCommon|readyState|img01|playQQ|appgame|libs|title|src|playIqiyi|playYouku|void|innerHTML|for|youku|null|playSohu|isAutoPlay|downloadBtn|nodeType|skins|array|Player|SohuMobilePlayer|miniWinBtn|1a0718786643b0ef|play|string|playvideo|in|vtitle|typeid|shareBtn|iqiyi|vd|onreadystatechange|YKU|length|appendChild|Array|res|minivideo_v1|poster|www|getTime|controls|qipuId|tvId|Date|aid|allowfullscreen|topBarNor|tencentvideo_v1|player_v2|ver|01|sohu_player|bd|gtimg|jsapi|coop|cn|cid|apic|shareplayer|frameborder|1368|appId|disp|qiyi|mp4|sea1|3955c3425820435e86d0f4cdfe56f5e7|appKey|developer|embed|open|player_js|coopPlayerIndex|f22860a2479ad60d8da7697274de9346|accessToken|iframe|transparent|script|offsetHeight|offsetWidth|text|javascript|complete|loaded|getAttribute|callee|call|toString|Object|slice|toLowerCase|arguments|flash|shockwave|application|high|pluginspage|selector|quality|createVideo|wmode|dispatcher|parentNode|macromedia|body|onload|getflashplayer|go|getElementById|exec|flashvars|videoFormat|autobuffer|seajs|window|TencentPlayerMiniSkin|modId|setChannelId|metadata|use|miniplayer|rate|vodFlashExtVars|loadingSwf|web_small_loading|vodFlashSkin|undefined|isLiveFlashShowCfg|setVid|Zepto|os|phone|share|vrs|adClose|pageurl|__page_start|create|setTitle|setCoverId|preload|isVodFlashShowCfg|isVodFlashShowEnd|isVodFlashShowSearchBar|VideoInfo|bullet|isUGC|iPod|iPad|publicLevel|if|v1|vfrm|break|Phone|Windows|userAgent|navigator|ADPlayerID|duration|Android|SymbianOS|iPhone|0590|indexOf|tvid|vext|client_id|loader|load|show_related|wd|partnerid|BDskin|winType|embedid|VideoIDS'.split('|'),0,{})) 7 | -------------------------------------------------------------------------------- /play-video.1.0.6.js: -------------------------------------------------------------------------------- 1 | /** 2 | * playVideo 1.0.4 3 | * https://github.com/zhouxitian/playVideo 4 | * author:zhouxitian@163.com 5 | */ 6 | /* 7 | 2015.10.19 v 1.02 修复jQuery.width()/jQuery.height()使用style.width的Bug 8 | 2015.11.02 v 1.03 修改腾讯视频支持直播 9 | 2015.11.25 v 1.04 增加搜狐视频播放器 10 | 2015.12.14 v 1.04 增加minWin参数控制视频窗口是否小窗口 11 | 2015.12.30 v 1.05 增加爱奇艺视频播放器 12 | 2015.12.31 v 1.05 优化优酷、搜狐等不能播放的问题 13 | 2015.1.14 v 1.06 腾讯视频接口改2.0 14 | */ 15 | ;(function(window){ 16 | var rquickExpr = /^#([\w-]+|\w+)$/;//匹配#id 17 | var jQuery=function(selector){ 18 | return new jQuery.fn.init(selector); 19 | } 20 | jQuery.fn=jQuery.prototype={ 21 | //获取对象的类型 22 | getType:function(o) 23 | { 24 | var _t; 25 | return ((_t = typeof(o)) == "object" ? o==null && "null" || Object.prototype.toString.call(o).slice(8,-1):_t).toLowerCase(); 26 | }, 27 | html:function(value){ 28 | var elem = this[0] || {}; 29 | if ( value === undefined && elem.nodeType === 1 ) { 30 | return elem.innerHTML; 31 | } 32 | if(typeof value === "string"){ 33 | elem.innerHTML = value; 34 | }else if(value&&value.nodeType===1){ 35 | elem.innerHTML = ""; 36 | elem.appendChild(value); 37 | } 38 | }, 39 | /** 40 | * @description 实现对象的拷贝功能(source 拷贝到 target) 41 | * @params {Object} target 目标对象 42 | * @params {Object} source 原对象 43 | */ 44 | extend:function(target,source){ 45 | for (var p in source){ 46 | if(jQuery.fn.getType(source[p])=="array"||jQuery.fn.getType(source[p])=="object"){ 47 | target[p]=jQuery.fn.getType(source[p])=="array"?[]:{}; 48 | arguments.callee(target[p],source[p]); 49 | }else{ 50 | target[p] = source[p]; 51 | } 52 | } 53 | return target; 54 | }, 55 | attr:function(name){ 56 | return this[0].getAttribute(name); 57 | }, 58 | width:function(){ 59 | return this[0].offsetWidth; 60 | }, 61 | height:function(){ 62 | return this[0].offsetHeight; 63 | }, 64 | getScript:function(url, callback){ 65 | var script = document.createElement('script'); 66 | script.type = "text/javascript"; 67 | if (script.readyState) { 68 | script.onreadystatechange = function() { 69 | if (script.readyState == "loaded" || script.readyState == "complete") { 70 | script.onreadystatechange = null; 71 | if (callback) { 72 | callback(); 73 | } 74 | } 75 | } 76 | } else { 77 | script.onload = function() { 78 | if (callback) { 79 | callback(); 80 | } 81 | } 82 | } 83 | script.src = url; 84 | document.body.appendChild(script); 85 | } 86 | }; 87 | jQuery.fn.init=function(selector){ 88 | if ( !selector ) { 89 | return this; 90 | } 91 | if (typeof selector === "string" ){ 92 | match = rquickExpr.exec( selector ); 93 | if(match&&match[1]){ 94 | if(match[1]) { 95 | elem = document.getElementById( match[1] ); 96 | if ( elem && elem.parentNode ) { 97 | this.length = 1; 98 | this[0] = elem; 99 | this.selector = selector; 100 | } 101 | } 102 | } 103 | } 104 | }; 105 | var arr=new Array("init","extend","html","attr","width","height","getScript"); 106 | for(i in arr){ 107 | jQuery[arr[i]]=jQuery.fn[arr[i]]; 108 | } 109 | jQuery.init.prototype = jQuery.fn; 110 | //window.$=$=jQuery; 111 | playVideo=function (opt){ 112 | this.init(opt); 113 | }; 114 | createVideo=function(opt){ 115 | var options={ 116 | id:"playvideo",//容器id 117 | autoplay:false, 118 | isIframe:false,//是否启用iframe调用(爱奇艺) 119 | qqchannel:false,//是否直播(腾讯) 120 | minWin:false,//视频窗口为小窗口(只对腾讯视频有效) 121 | multiple:"" 122 | },typeid,sid,vid,pic,title; 123 | jQuery.extend(options,opt); 124 | if(typeof options.multiple=="object"){ 125 | typeid=options.multiple.typeid; 126 | sid=options.multiple.sid; 127 | vid=options.multiple.vid; 128 | pic=options.multiple.pic; 129 | title=options.multiple.vtitle; 130 | }else{ 131 | obj=jQuery("#"+options.id); 132 | typeid=obj.attr("typeid"); 133 | sid=obj.attr("sid"); 134 | vid=obj.attr("vid"); 135 | pic=obj.attr("pic"); 136 | title=obj.attr("vtitle"); 137 | } 138 | var opts={id:options.id,minWin:options.minWin,type:typeid,title:title,qqchannel:options.qqchannel,isIframe:options.isIframe,sid:sid,vid:vid,pic:pic,autoplay:options.autoplay==false?false:true} 139 | new playVideo(opts); 140 | }; 141 | playVideo.prototype={ 142 | init:function(opt){ 143 | var t=this; 144 | if(!t.options){ 145 | t.options={ 146 | id:"playvideo",//容器id 147 | type:"qq",//视频类型(qq/youku) 148 | qqchannel:false,//是否直播(腾讯) 149 | sid:"",//视频id 150 | vid:"",//视频vid(爱奇艺) 151 | title:"",//标题(腾讯) 152 | isIframe:false,//是否启用iframe调用(爱奇艺) 153 | pic:"",//默认图片(只对腾讯视频有效) 154 | minWin:false,//视频窗口为小窗口(只对腾讯视频有效) 155 | autoplay:false//是否自动播放 156 | } 157 | } 158 | jQuery.extend(t.options,opt); 159 | t.play(); 160 | }, 161 | play:function(){ 162 | var t=this; 163 | if(t.options.sid){ 164 | jQuery("#"+t.options.id).html(""); 165 | if(t.options.type=="youku"){ 166 | if(!window.YKU){ 167 | if(jQuery.getScript){ 168 | jQuery.getScript("http://player.youku.com/jsapi",function(){ 169 | t.playYouku(); 170 | }); 171 | }else{ 172 | console.log("优酷接口文件未加载"); 173 | } 174 | }else{ 175 | t.playYouku(); 176 | } 177 | }else if(t.options.type=="qq"){ 178 | if(!window.tvp){ 179 | if(jQuery.getScript){ 180 | jQuery.getScript("http://imgcache.gtimg.cn/tencentvideo_v1/tvp/js/tvp.player_v2.js",function(){ 181 | t.playQQ(); 182 | }); 183 | }else{ 184 | console.log("腾讯接口文件未加载"); 185 | } 186 | }else{ 187 | t.playQQ(); 188 | } 189 | }else if(t.options.type=="sohu"){ 190 | if(!window.SohuMobilePlayer&&document.addEventListener){ 191 | if(jQuery.getScript){ 192 | jQuery.getScript("http://img01.static.appgame.com/libs/jsCommon/player/min.sohu_player.js?ver=1.01",function(){ 193 | //jQuery.getScript("http://tv.sohu.com/upload/touch/static/scripts/tv/min.sohu_player.js",function(){ 194 | t.playSohu(); 195 | }); 196 | }else{ 197 | console.log("搜狐接口文件未加载"); 198 | } 199 | }else{ 200 | t.playSohu(); 201 | } 202 | }else if(t.options.type=="iqiyi"){ 203 | if(t.options.isIframe){ 204 | var iframe=document.createElement("iframe"); 205 | iframe.setAttribute("src","http://open.iqiyi.com/developer/player_js/coopPlayerIndex.html?vid="+t.options.vid+"&tvId="+t.options.sid+"&accessToken=2.f22860a2479ad60d8da7697274de9346&appKey=3955c3425820435e86d0f4cdfe56f5e7&appId=1368&height=100%&width=100%"); 206 | iframe.setAttribute("frameborder",0); 207 | iframe.setAttribute("allowfullscreen",true); 208 | iframe.setAttribute("width","100%"); 209 | iframe.setAttribute("height","100%"); 210 | jQuery("#"+t.options.id).html(iframe); 211 | }else{ 212 | if(!window.Q&&document.addEventListener){ 213 | if(jQuery.getScript){ 214 | jQuery.getScript("http://img01.static.appgame.com/libs/jsCommon/player/sea1.2.min.js",function(){ 215 | window.Q = window.Q|| {}; 216 | Q.PageInfo = Q.PageInfo || {}; 217 | Q.PageInfo.playInfo = {}; 218 | Q.PageInfo.playInfo.videoFormat ="mp4";//视频格式 219 | Q.PageInfo.playInfo.qipuId = t.options.sid; 220 | Q.PageInfo.playInfo.vid = t.options.vid; 221 | Q.PageInfo.playInfo.aid = t.options.sid; 222 | t.playIqiyi(); 223 | }); 224 | }else{ 225 | console.log("爱奇艺接口文件未加载"); 226 | } 227 | }else{ 228 | t.playIqiyi(); 229 | } 230 | } 231 | } 232 | } 233 | }, 234 | playYouku:function(){ 235 | var t=this; 236 | var isPC=function(){ 237 | var userAgentInfo = navigator.userAgent; 238 | var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"); 239 | var flag = true; 240 | for (var v = 0; v < Agents.length; v++) { 241 | if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = false; break; } 242 | } 243 | return flag; 244 | }(); 245 | if(!isPC){ 246 | var player = new YKU.Player(t.options.id,{ 247 | //styleid: '0',//炫彩播放器样式 0-9 248 | client_id: '1a0718786643b0ef',//优酷开放平台创建应用的client_id 249 | vid: t.options.sid,//视频ID 250 | show_related: false,//播放完成是否显示相关视频 251 | autoplay: t.options.autoplay,//是否自动播放视频 252 | //password: '1a0718786643b0ef',//免密码播放 253 | //embsig: t.options.id,//嵌入式播放器签名(非网站类应用必须设置) 254 | }); 255 | }else{//不用接口(window下的safari不能播放) 256 | t.setEmbed("http://static.youku.com/v1.0.0590/v/swf/loader.swf","VideoIDS="+t.options.sid+"&isAutoPlay="+t.options.autoplay+"&winType=BDskin&embedid=&wd=&partnerid=1a0718786643b0ef&vext="); 257 | } 258 | }, 259 | playQQ:function(){ 260 | var t=this; 261 | var width=jQuery("#"+t.options.id).width(); 262 | var height=jQuery("#"+t.options.id).height(); 263 | var video = new tvp.VideoInfo(); 264 | var opts={ 265 | width:width, 266 | height:height, 267 | video:video, 268 | //isVodFlashShowCfg:0,//是否显示控制按钮 269 | //isVodFlashShowSearchBar:0,//是否显示顶部搜索框 270 | // isVodFlashShowEnd:0,//是否显示播放结束后的推荐视频 271 | autoplay:t.options.autoplay?1:0,//是否自动播放 272 | controls:0,//HTML5是否显示控制栏 273 | vodFlashExtVars:{bullet:0},//关闭弹幕 274 | loadingSwf:"http://imgcache.qq.com/minivideo_v1/vd/res/skins/web_small_loading.swf", 275 | pic:(t.options.pic&&t.options.pic!="undefined")?t.options.pic:"", 276 | vodFlashSkin:t.options.minWin?"http://imgcache.qq.com/minivideo_v1/vd/res/skins/TencentPlayerMiniSkin.swf":"", 277 | // vodFlashUrl:"http://imgcache.qq.com/tencentvideo_v1/player/TencentPlayer.swf",//点播 278 | // liveFlashUrl:"http://imgcache.qq.com/tencentvideo_v1/player/TencentPlayer.swf",//直播 279 | modId:t.options.id 280 | } 281 | if(!t.options.qqchannel){ 282 | video.setVid(t.options.sid);//视频vid 283 | video.setCoverId("vid");//专辑id 284 | video.setTitle(t.options.title||""); 285 | opts.isVodFlashShowCfg=0;//是否显示控制按钮 286 | opts.isVodFlashShowSearchBar=0;//是否显示顶部搜索框 287 | opts.isVodFlashShowEnd=0;//是否显示播放结束后的推荐视频 288 | 289 | }else{ 290 | video.setChannelId(t.options.sid); 291 | opts.type=1; 292 | opts.isLiveFlashShowCfg=0;//直播是否显示控制按钮 293 | } 294 | var player = new tvp.Player(); 295 | player.create(opts); 296 | }, 297 | playSohu:function(){ 298 | var t=this; 299 | if(document.addEventListener){ 300 | var width=jQuery("#"+t.options.id).width(); 301 | var height=jQuery("#"+t.options.id).height(); 302 | var player = new SohuMobilePlayer(t.options.id, { 303 | vid: t.options.sid, 304 | isAutoPlay:t.options.autoplay, 305 | poster:t.options.pic||"",//播放器封面图 (String, 可选) 306 | width:width,//播放器宽度 (Number,可选) 307 | height:height,//播放器高度 (Number,可选) 308 | //adClose:1,//是否禁播广告,默认为0不禁止(Number,可选)。 309 | topBarNor:0,//是否显示顶部标题,0不显示 310 | shareBtn:0,//是否显示分享按钮,0不显示 311 | downloadBtn:0,//是否显示下载按钮,0不显示 312 | miniWinBtn:0,//是否显示新窗口按钮,0不显示 313 | },""); 314 | }else{//区分ie8或以下 315 | t.setEmbed("http://share.vrs.sohu.com/" + t.options.sid + "/v.swf","miniWinBtn=0&autoplay="+t.options.autoplay+"&vid="+t.options.sid+"&downloadBtn=0&shareBtn=0&topBarNor=0&adClose=1&pageurl=http://www.sohu.com/"); 316 | } 317 | }, 318 | playIqiyi:function(){ 319 | var t=this; 320 | if(document.addEventListener&&Zepto.os.phone){//手机端 321 | window.__page_start = new Date().getTime(); 322 | var video=document.createElement("video"); 323 | var id=t.options.id+new Date().getTime(); 324 | video.id=id; 325 | if(!t.options.autoplay){ 326 | video.setAttribute("controls",true); 327 | video.setAttribute("preload","metadata"); 328 | video.setAttribute("autobuffer",true); 329 | } 330 | video.setAttribute("poster",t.options.pic), 331 | jQuery("#"+t.options.id).html(video); 332 | Q.PageInfo.playInfo.id=id; 333 | Q.PageInfo.playInfo.autoplay=t.options.autoplay; 334 | seajs.use("http://img01.static.appgame.com/libs/jsCommon/player/miniplayer.min.js", function() { 335 | Q.video.load({ 336 | aid : t.options.sid, 337 | tvid :t.options.sid, 338 | qipuId : t.options.sid, 339 | vid : t.options.vid, 340 | vfrm : "", 341 | publicLevel :"0"*1, 342 | isUGC : true, 343 | duration : "0", 344 | ADPlayerID : "",//广告id 345 | rate : 1 346 | }); 347 | }); 348 | }else{ 349 | t.setEmbed("http://dispatcher.video.qiyi.com/disp/shareplayer.swf","vid="+t.options.vid+"&tvId="+t.options.sid+"&apic="+t.options.pic+"&coop=&cid=&bd=1") 350 | } 351 | }, 352 | setEmbed:function(src,flashvars){ 353 | var t=this; 354 | var video=document.createElement("embed"); 355 | video.setAttribute("flashvars",flashvars); 356 | video.setAttribute("src",src); 357 | video.setAttribute("allowfullscreen",true); 358 | video.setAttribute("wmode","transparent"); 359 | video.setAttribute("quality","high"); 360 | video.setAttribute("pluginspage","http://www.macromedia.com/go/getflashplayer"); 361 | video.setAttribute("type","application/x-shockwave-flash"); 362 | jQuery("#"+t.options.id).html(video); 363 | } 364 | } 365 | })(window); --------------------------------------------------------------------------------