ckplayer 项目实际应用代码整理,支持标清,高清,超清切换!
ckplayer是个免费,小巧,功能强大的视频播放器,前段时间有个项目需要做个收费视频播放的功能,于是就用了ck,目前项目已经弄完,完美支持pc和手机端的播放,重要的是可以支持清晰度切换,最后加了个是否购买权限的功能,其实总体来说开发难度较小,如果说有难度的话还是要在于处理视频安全性上下些功夫,加密视频地址,加密视频名称这些,防止拔取链接之类。话不多说代码走起:
1,首先做些准备工作,在页面构造这个播放器之前需要引入js,以及播放器的相关文件 下载 传送门:
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<!--播放器核心包--><script type="text/javascript" src="js/player/ckplayer.js"></script>
<!--播放器关灯插件--><script type="text/javascript" src="js/offlights.js"></script>
2,准备工作做好后,页面开始渲染播放器,进行交互,如下,配置过程有什么疑问可以直接看这个 Ckplayer手册:
<script type="text/javascript">
function loadedHandler(){
ckmarqueeadv();
}
var _nn=0;
function ckmarqueeadv(){
str = '{a target="_blank" href="http://www.bieanju.com"}{font color="#00EEF0" size="12"}别安驹吉他学院温馨提示:您当前正在学习吉他谱《{$video_info.title}》目前已有{$video_info.watch}人学习过此视频!http://www.bieanju.com/{/font}{/a}'
return str;
}
function playerstop(){
var html ='<div class="Adver"><embed type="application/x-shockwave-flash" id="over" src="js/player/playover.swf" height="240" width="560" wmode="opaque"></embed></div>';
$(".Advertisement").html(html);
}
function player(){
$(".Advertisement").html("");
}
function bajplayer(){
var flashvars={
f:"获取视频信息地址?getVideoInfoid={$video_info.id}",//视频地址
a:'{$video_info.id}',//调用时的参数,只有当s>0的时候有效
s:'2',//调用方式,0=普通方法(f=视频地址),1=网址形式,2=xml形式,3=swf形式(s>0时f=网址,配合a来完成对地址的组装)
c:'0',//是否读取文本配置,0不是,1是
x:'',//调用配置文件路径,只有在c=1时使用。默认为空调用的是ckplayer.xml
i:'http://www.ckplayer.com/images/loadimg3.jpg',//初始图片地址
d:'/player/playpause.swf',//暂停时播放的广告,swf/图片,多个用竖线隔开,图片要加链接地址,没有的时候留空就行
u:'',//暂停时如果是图片的话,加个链接地址
r:'',//前置广告的链接地址,多个用竖线隔开,没有的留空
t:'10|10',//视频开始前播放swf/图片时的时间,多个用竖线隔开
y:'',//这里是使用网址形式调用广告地址时使用,前提是要设置l的值为空
z:'http://www.ckplayer.com/down/buffer.swf',//缓冲广告,只能放一个,swf格式
e:'0',//视频结束后的动作,0是调用js函数,1是循环播放,2是暂停播放并且不调用广告,3是调用视频推荐列表的插件,4是清除视频流并调用js功能和1差不多,5是暂停播放并且调用暂停广告
v:'80',//默认音量,0-100之间
p:'1',//视频默认0是暂停,1是播放,2是不加载视频
h:'4',//播放http视频流时采用何种拖动方法,=0不使用任意拖动,=1是使用按关键帧,=2是按时间点,=3是自动判断按什么(如果视频格式是.mp4就按关键帧,.flv就按关键时间),=4也是自动判断(只要包含字符mp4就按mp4来,只要包含字符flv就按flv来)
q:'',//视频流拖动时参考函数,默认是start
m:'',//让该参数为一个链接地址时,单击播放器将跳转到该地址
o:'',//当p=2时,可以设置视频的时间,单位,秒
w:'',//当p=2时,可以设置视频的总字节数
g:'',//视频直接g秒开始播放
j:'',//跳过片尾功能,j>0则从播放多少时间后跳到结束,<0则总总时间-该值的绝对值时跳到结束
k:'30|60',//提示点时间,如 30|60鼠标经过进度栏30秒,60秒会提示n指定的相应的文字
n:'这是提示点的功能,如果不需要删除k和n的值|提示点测试60秒',//提示点文字,跟k配合使用,如 提示点1|提示点2
wh:'',//宽高比,可以自己定义视频的宽高或宽高比如:wh:'4:3',或wh:'1080:720'
lv:'0',//是否是直播流,=1则锁定进度栏
loaded:'loadedHandler',//当播放器加载完成后发送该js函数loaded
my_url:encodeURIComponent(window.location.href)//本页面地址
};
/* 自动处理播放器宽高 */
var getwidth = $(window).width();
var getheight = $(window).height();
var w = getwidth - 361 < 425 ? 425 : getwidth - 340;
var h = w*0.75 > 656 ? w*0.75-140 : (w*0.75)+50;
if(h > (getheight-100)){
h = getheight-115;
}
setRightHeight();
var params={bgcolor:'#FFF',allowFullScreen:true,allowScriptAccess:'always'};//这里定义播放器的其它参数如背景色(跟flashvars中的b不同),是否支持全屏,是否支持交互
CKobject.embedSWF('js/player/player.swf','player','ckplayer_a1',w,h,flashvars,params);
}
//开关灯
var box = new LightBox();
function closelights(){
//关灯
box.Show();
CKobject._K_('zcplayer').style.width='940px';
CKobject._K_('zcplayer').style.height='550px';
CKobject.getObjectById('ckplayer_a1').width=940;
CKobject.getObjectById('ckplayer_a1').height=550;
}
//开灯
function openlights(){
box.Close();
CKobject._K_('zcplayer').style.width='600px';
CKobject._K_('zcplayer').style.height='400px';
CKobject.getObjectById('ckplayer_a1').width=600;
CKobject.getObjectById('ckplayer_a1').height=400;
}
function changePrompt(){
CKobject.getObjectById('ckplayer_a1').promptUnload();//卸载掉目前的
CKobject.getObjectById('ckplayer_a1').changeFlashvars('{k->10|20|30}{n->重设提示点一|重设提示点二|重设提示点三}');
CKobject.getObjectById('ckplayer_a1').promptLoad();//重新加载
}
function setRightHeight(){
var x = $(window).height()-7; //
$("#edu_lesson_right_pare").css('height',x-45+'px');
$(".Scroller-Container").css('height',x-45+'px');
$("#edu_less_right").css('height',x-45+'px');
$(".vs_course_main_r").css('height',x-45+'px');
$(".vs_course_main").css('height',x-45+'px');
}
$(function(){
$('#over').click(function(){
alert('asdf');
})
})
</script>
3,完成第一和第二步后下一步就是前段页面的显示后后台的视频信息处理:
前台显示
<body onload="zcplayer();">
<div id="ckplayer"></div>
</body>
后台程序处理
/* 视频提取 */
public function getVideoInfo() {
$info = D('VideoView')->details($this->_get('id'));
$pat = $info[id];
header("Content-Type:text/html; charset=utf-8");
header('Content-Type:application/xml; charset=utf-8');
$sitemap .= "<?xml version='1.0' encoding='UTF-8'?>";
$sitemap .= "<player>";
// $sitemap .= "<DengBox>";
$sitemap .= "<flashvars>{k->}{n->}}{h->2}{a->$pat}{defa->$info[id]|$info[id]|$info[id]}{deft->标清|高清|超清}{f->".__URL__."/getVideoInfo?id=[".'$pat'."]}}</flashvars>";
$sitemap .= "<video><file><![CDATA[/Uploads/video/".$info['video_name']."]]></file><size>".($info['filesize']*1024)."</size><seconds>".$info['time']."</seconds></video>";
$sitemap .= "</player>";
// $sitemap .= "</DengBox>";
echo $sitemap;
}
ckplayer 项目实际应用代码整理,支持标清,高清,超清切换!的更多相关文章
- AFC项目开发文档整理
AFC项目开发文档整理 PHPCMS 的确是一个伟大的CMS,我对它爱不释手. 标签嵌套无法loop获取的解决办法.关键代码如下: /\*后台添加\*/ $str = preg_replace ( & ...
- material design 的android开源代码整理
material design 的android开源代码整理 1 android (material design 效果的代码库) 地址请点击:MaterialDesignLibrary 效果: 2 ...
- VS扩展CodeMaid代码整理插件
本文章转载:http://www.cnblogs.com/wintersun/p/3577039.html 官方地址:http://www.codemaid.net/ 开源VS扩展CodeMaid介绍 ...
- QM项目开发文档整理
QM项目开发文档整理 前言 在W公司工作4个多月,庆幸接触到的全是"硬"项目,真枪实干,技术.经验.能力都得到了很大提升. QM项目 此项目WEB前端学到的东西很多,对PHP项目的 ...
- NSIS常用代码整理
原文 NSIS常用代码整理 这是一些常用的NSIS代码,少轻狂特意整理出来,方便大家随时查看使用.不定期更新哦~~~ 1 ;获取操作系统盘符 2 ReadEnvStr $R0 SYSTEMDRIVE ...
- 单元测试系列之四:Sonar平台中项目主要指标以及代码坏味道详解
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6766994.html 众所周知Sona ...
- HTTP请求代码整理
HTTP请求代码整理 类别 代码 注释 1xx – 信息提示 100 继续 101 切换协议 2xx - 成功 200 确定.客户端请求已成功 201 已创建 202 已接受 203 非权威性信息 2 ...
- 使用OClint进行iOS项目的静态代码扫描
使用OClint进行iOS项目的静态代码扫描 原文链接:http://blog.yourtion.com/static-code-analysis-ios-using-oclint.html 最近需要 ...
- 为QtCreator项目模板添加自动中文支持
每用QtCreator创建一个Qt项目时都要为它添加中文支持,比如qt4: 就要在main.cpp里添加 QTextCodec* codec = QTextCodec::codecForName(&q ...
随机推荐
- 你所不了解的css选择器
我们目前接触到的选择器:.class #id div ...... 不了解的选择器:a>b a+b [a~=b] [a|=b]...... 一下说举5 6 7 8为css3中的定 ...
- JAVA加密
[源地址http://www.iteye.com/topic/1122076/] 加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信 ...
- 教师投票系统(JSP+MySQL)
display.jsp <%@ page language="java" import="java.sql.*" pageEncoding="g ...
- yii2 访问控制
class SiteController extends Controller{ /** * @inheritdoc */ public function behaviors() { return [ ...
- 【solr专题之一】Solr快速入门
一.Solr学习相关资料 1.官方材料 (1)快速入门:http://lucene.apache.org/solr/4_9_0/tutorial.html,以自带的example项目快速介绍发Solr ...
- css3实现手机qq空间菜单按钮
工作之余写的一个类似于QQzone的菜单效果 先上截图: 图一为点击按钮前界面: 图二为点击按钮后的界面 下面上代码: <!--css部分--> <style type=" ...
- 正则表达式及re模块
正则表达式使用的特殊符号与字符 元字符 描述 \ 将下一个字符标记符.或一个向后引用.或一个八进制转义符.例如,“\\n”匹配\n.“\n”匹配换行符.序列“\\”匹配“\”而“\(”则匹配“(”.即 ...
- 龙邱STM32单片机用J-LINK下载无法被识别的解决方法
问题如下: 按照正常步骤使用keil5给龙邱的stm32下载程序,SWD下载方式提示no cortex-m sw device found,JTAG方式提示no cortex-m device fou ...
- Discuz!X2.5论坛在IIS和Apache环境配置实现伪静态
最近在研究自己的网站,然后把这文章分享出来,让不清楚怎么设置的童鞋参考,高手可以飘过~~~ URL 静态化是一个有利于搜索引擎的设置,通过 URL 静态化,达到原来是动态的 PHP 页面转换为静态化的 ...
- 动态加载JS过程中如何判断JS加载完成
在正常的加载过程中,js文件的加载是同步的,也就是说在js加载的过程中,浏览器会阻塞接下来的内容的解析.这时候,动态加载便显得尤为重要了,由于它是异步加载,因此,它可以在后台自动下载,并不会妨碍其它内 ...