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 项目实际应用代码整理,支持标清,高清,超清切换!的更多相关文章

  1. AFC项目开发文档整理

    AFC项目开发文档整理 PHPCMS 的确是一个伟大的CMS,我对它爱不释手. 标签嵌套无法loop获取的解决办法.关键代码如下: /\*后台添加\*/ $str = preg_replace ( & ...

  2. material design 的android开源代码整理

    material design 的android开源代码整理 1 android (material design 效果的代码库) 地址请点击:MaterialDesignLibrary 效果: 2 ...

  3. VS扩展CodeMaid代码整理插件

    本文章转载:http://www.cnblogs.com/wintersun/p/3577039.html 官方地址:http://www.codemaid.net/ 开源VS扩展CodeMaid介绍 ...

  4. QM项目开发文档整理

    QM项目开发文档整理 前言 在W公司工作4个多月,庆幸接触到的全是"硬"项目,真枪实干,技术.经验.能力都得到了很大提升. QM项目 此项目WEB前端学到的东西很多,对PHP项目的 ...

  5. NSIS常用代码整理

    原文 NSIS常用代码整理 这是一些常用的NSIS代码,少轻狂特意整理出来,方便大家随时查看使用.不定期更新哦~~~ 1 ;获取操作系统盘符 2 ReadEnvStr $R0 SYSTEMDRIVE ...

  6. 单元测试系列之四:Sonar平台中项目主要指标以及代码坏味道详解

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6766994.html 众所周知Sona ...

  7. HTTP请求代码整理

    HTTP请求代码整理 类别 代码 注释 1xx – 信息提示 100 继续 101 切换协议 2xx - 成功 200 确定.客户端请求已成功 201 已创建 202 已接受 203 非权威性信息 2 ...

  8. 使用OClint进行iOS项目的静态代码扫描

    使用OClint进行iOS项目的静态代码扫描 原文链接:http://blog.yourtion.com/static-code-analysis-ios-using-oclint.html 最近需要 ...

  9. 为QtCreator项目模板添加自动中文支持

    每用QtCreator创建一个Qt项目时都要为它添加中文支持,比如qt4: 就要在main.cpp里添加 QTextCodec* codec = QTextCodec::codecForName(&q ...

随机推荐

  1. T-SQL 函数概述

    T-SQL函数的类别和描述: 函数类别 作用 聚合函数 返回一个标量值,表示在某个值域上的聚合,应用于特定的聚合选择或者汇总 配置变量 返回SQL Server执行环境的信息.这些信息可用于给对象编程 ...

  2. Installing the Eclipse Plugin

    Installing the Eclipse Plugin Android offers a custom plugin for the Eclipse IDE, called Android Dev ...

  3. TCP/UDP网络编程的基础知识与基本示例(windows和Linux)

    一.TCP编程的一般步骤 服务器端: 1.创建一个socket,用函数socket() 2.绑定IP地址.端口等信息到socket上,用函数bind() 3.开启监听,用函数listen() 4.接收 ...

  4. Orchard开源ASP.NET MVC CMS简介

    项目简介: Orchard CMS 是一个免费的开放源代码内容管理系统,让用户可在 Microsoft ASP.NET MVC 平台上快速创建网站.它基于灵活的扩展性框架构建,使开发人员和定制人员可通 ...

  5. HDU ACM 题目分类

    模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 104 ...

  6. javascript之Date

    JSON 日期转 JS日期,我们知道,日期类型转成JSON之后,返回的数据类似这样: /Date(1379944571737)/ 但是这种日期并不能直接显示,因为根本没有人知道这是什么意思,下面提供一 ...

  7. C# Exception类

    一.异常类 1.在C#中所有的异常都是使用一个异常类型的示例对象表示的,这些异常类型都是继承自System.Exception类型,或者直接使用System.Exception类型的实例对象: 2.在 ...

  8. 【Xamarin挖墙脚系列:Xamarin的终极破解步骤(更新)】

    前面文章中,我们可以找到对应版本的补丁. Xamarin的 4.0.1717 版本,在补丁的地址中,有作者整理的全部的安装包.迅雷磁力贴: magnet:?xt=urn:btih:9FD298AA61 ...

  9. UESTC_方老师的分身 II CDOJ 915

    方老师的分身 II Time Limit: 10000/5000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

  10. 分治法求一个N个元素数组的逆序数

    背景  逆序数:也就是说,对于n个不同的元素,先规定各元素之间有一个标准次序(例如n个 不同的自然数,可规定从小到大为标准次序),于是在这n个元素的任一排列中,当某两个元素的先后次序与标准次序不同时, ...