提交 710fbb79 编写于 作者: E eguid 提交者: wangliang

发布livePush的使用demo

上级 9e83f245
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
<attributes>
<attribute name="owner.project.facets" value="java"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="com.genuitec.runtime.library/com.genuitec.generic_6.0">
<attributes>
<attribute name="owner.project.facets" value="jst.web"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry kind="con" path="com.genuitec.runtime.library/com.genuitec.jstl_1.2.1">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="WEB-INF/lib"/>
<attribute name="owner.project.facets" value="jst.web.jstl"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="output" path="WebRoot/WEB-INF/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>liveClient</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.genuitec.eclipse.j2eedt.core.DeploymentDescriptorValidator</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
</natures>
</projectDescription>
{"ide":{},"libs":["ecma5","browser"],"plugins":{"guess-types":{}}}
\ No newline at end of file
Manifest-Version: 1.0
Class-Path:
使用说明:
(重要:使用前必须保证ffmpeg环境包在该项目的WEB-INF\classes\cc\eguid\livepush\ffmpeg\目录中)
1、对象创建
PushManager pusher = new PushManagerImpl();
2、参数说明及设置
2.1、参数说明
name:应用名;
input:接收地址;
output:推送地址;
fmt:视频格式;
fps:视频帧率;
rs:视频分辨率;
disableAudio:是否开启音频;
2.2、参数使用
Map map = new HashMap();
map.put("appName", "testwanglaing123");
map.put("input","rtsp://admin:admin@192.168.2.236:37779/cam/realmonitor?channel=1&subtype=0");
map.put("output", "rtmp://192.168.30.21/live/");
map.put("fmt", "flv");
map.put("fps", "25");
map.put("rs", "640x360");
map.put("disableAudio", "true");
3、调用方法
3.1、发布方法
id push(map)
pusher.push(map);
3.2、关闭发布方法
void closePush(appName)
pusher.closePush(appName);
3.3、查看所有正在push的列表
Set<String> viewAppName()
pusher.viewAppName();
3.4、检测是否存在某个push
boolean isHave(String appName)
pusher.isHave(appName);
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:spectj="http://www.springframework.org/schema/spectj"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframewok.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/aspectj http://www.springframework.org/schema/aspectj/spring-aspectj-3.2.xsd">
<context:component-scan base-package="cn.njlingdong.cameraLive" />
<mvc:annotation-driven/>
<!-- 设置静态资源不进行拦截 -->
<mvc:default-servlet-handler/>
<!-- 支持上传文件
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
-->
<!-- 开启AOP注解扫描
<aop:aspectj-autoproxy proxy-target-class="true" />-->
</beans>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springMVC.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
<!DOCTYPE html>
<html>
<head>
<title>超酷播放器测试</title>
<meta charset="UTF-8">
<script type="text/javascript" src="ckplayer/js/offlights.js"></script>
</head>
<body>
<div id="player1"></div>
<script type="text/javascript" src="ckplayer/ckplayer/ckplayer.js" charset="utf-8"></script>
<script type="text/javascript">
//如果你不需要某项设置,可以直接删除,注意var flashvars的最后一个值后面不能有逗号
function loadedHandler(){
if(CKobject.getObjectById('ckplayer_a1').getType()){//说明使用html5播放器
alert('播放器已加载,调用的是HTML5播放模块');
}
else{
alert('播放器已加载,调用的是Flash播放模块');
}
}
var _nn=0;
function ckplayer_status(str){
_nn+=1;
if(_nn>100){
_nn=0;
document.getElementById('statusvalue').value='';
}
document.getElementById('statusvalue').value=str+'\n'+document.getElementById('statusvalue').value;
}
var flashvars={
f:'老九门第40集_sd.mp4',//视频地址
a:'',//调用时的参数,只有当s>0的时候有效
s:'0',//调用方式,0=普通方法(f=视频地址),1=网址形式,2=xml形式,3=swf形式(s>0时f=网址,配合a来完成对地址的组装)
c:'1',//是否读取文本配置,0不是,1是
x:'',//调用配置文件路径,只有在c=1时使用。默认为空调用的是ckplayer.xml
i:'',//初始图片地址
d:'',//暂停时播放的广告,swf/图片,多个用竖线隔开,图片要加链接地址,没有的时候留空就行
u:'',//暂停时如果是图片的话,加个链接地址
l:'',//前置广告,swf/图片/视频,多个用竖线隔开,图片和视频要加链接地址
r:'',//前置广告的链接地址,多个用竖线隔开,没有的留空
t:'0|0',//视频开始前播放swf/图片时的时间,多个用竖线隔开
y:'',//这里是使用网址形式调用广告地址时使用,前提是要设置l的值为空
z:'',//缓冲广告,只能放一个,swf格式
e:'2',//视频结束后的动作,0是调用js函数,1是循环播放,2是暂停播放并且不调用广告,3是调用视频推荐列表的插件,4是清除视频流并调用js功能和1差不多,5是暂停播放并且调用暂停广告
v:'80',//默认音量,0-100之间
p:'1',//视频默认0是暂停,1是播放,2是不加载视频
h:'0',//播放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秒会提示n指定的相应的文字
n:'',//提示点文字,跟k配合使用,如 提示点1|提示点2
wh:'',//宽高比,可以自己定义视频的宽高或宽高比如:wh:'4:3',或wh:'1080:720'
lv:'0',//是否是直播流,=1则锁定进度栏
loaded:'loadedHandler',//当播放器加载完成后发送该js函数loaded
//调用播放器的所有参数列表结束
//以下为自定义的播放器参数用来在插件里引用的
my_url:encodeURIComponent(window.location.href)//本页面地址
//调用自定义播放器参数结束
};
var params={bgcolor:'#FFF',allowFullScreen:true,allowScriptAccess:'always'};//这里定义播放器的其它参数如背景色(跟flashvars中的b不同),是否支持全屏,是否支持交互
var video=['老九门第40集_sd.mp4'];
CKobject.embed('ckplayer/ckplayer/ckplayer.swf','player1','ckplayer_1','720px','360px',false,flashvars,video,params);
/*
以上代码演示的兼容flash和html5环境的。如果只调用flash播放器或只调用html5请看其它示例
*/
function videoLoadJs(s){
alert("执行了播放");
}
function playerstop(){
//只有当调用视频播放器时设置e=0或4时会有效果
alert('播放完成');
}
var _nn=0;//用来计算实时监听的条数的,超过100条记录就要删除,不然会消耗内存
function getstart(){
var a=CKobject.getObjectById('ckplayer_1').getStatus();
var ss='';
for (var k in a){
ss+=k+":"+a[k]+'\n';
}
alert(ss);
}
function changePrompt(){
CKobject.getObjectById('ckplayer_1').promptUnload();//卸载掉目前的
CKobject.getObjectById('ckplayer_1').changeFlashvars('{k->10|20|30}{n->重设提示点一|重设提示点二|重设提示点三}');
CKobject.getObjectById('ckplayer_1').promptLoad();//重新加载
}
function addflash(){
if(CKobject.Flash()['f']){
CKobject._K_('player1').innerHTML='';
CKobject.embedSWF('ckplayer/ckplayer/ckplayer.swf','player1','ckplayer_1','600','400',flashvars,params);
}
else{
alert('该环境中没有安装flash插件,无法切换');
}
}
function addhtml5(){
if(CKobject.isHTML5()){
support=['all'];
CKobject._K_('player1').innerHTML='';
CKobject.embedHTML5('player1','ckplayer_1',600,400,video,flashvars,support);
}
else{
alert('该环境不支持html5,无法切换');
}
}
function addListener(){
if(CKobject.getObjectById('ckplayer_1').getType()){//说明使用html5播放器
CKobject.getObjectById('ckplayer_1').addListener('play',playHandler);
}
else{
CKobject.getObjectById('ckplayer_1').addListener('play','playHandler');
}
}
function playHandler(){
alert('因为注册了监听播放,所以弹出此内容,删除监听将不再弹出');
}
function removeListener(){//删除监听事件
if(CKobject.getObjectById('ckplayer_1').getType()){//说明使用html5播放器
CKobject.getObjectById('ckplayer_1').removeListener('play',playHandler);
}
else{
CKobject.getObjectById('ckplayer_1').removeListener('play','playHandler');
}
}
</script>
<input type="button" name="button23" value="切换到flash播放器" onClick="addflash();" />
<input type="button" name="button24" value="切换到html5播放器" onClick="addhtml5();" />
</p>
<p>以下的操作对flash播放器和html5播放器都有效</p>
<p>
<input type="button" name="button5" value="播放" onClick="CKobject.getObjectById('ckplayer_1').videoPlay();" />
<input type="button" name="button6" value="暂停" onClick="CKobject.getObjectById('ckplayer_1').videoPause();" />
<input type="button" name="button7" value="播放/暂停" onClick="CKobject.getObjectById('ckplayer_a1').playOrPause();" />
<input type="button" name="button8" value="快进" onClick="CKobject.getObjectById('ckplayer_1').fastNext();" />
<input type="button" name="button9" value="快退" onClick="CKobject.getObjectById('ckplayer_1').fastBack();" />
<input type="button" name="button15" value="暂停监听" onClick="CKobject.getObjectById('ckplayer_1').changeStatus(0);" />
<input type="button" name="button16" value="加ID的监听" onClick="CKobject.getObjectById('ckplayer_1').changeStatus(3);" />
<input type="button" name="button21" value="获取播放器当前相关属性" onClick="getstart();" />
<input type="button" name="button13" value="注册监听播放事件" onClick="addListener();" />
<input type="button" name="button14" value="删除监听播放事件" onClick="removeListener();" />
</p>
<p>
播放新参数地址:
<input name="newaddress" type="text" id="newaddress" value="" size="60" maxlength="300" />
<input type="button" name="button" id="button" value="跳转" onClick="CKobject.getObjectById('ckplayer_1').newAddress(document.getElementById('newaddress').value);" /><br>
</p>
<p id="aboutme"></p>
<script type="text/javascript">
var aboutme='';
aboutme+='平台(浏览器)内核:'+CKobject.Platform()+'<br />';
aboutme+='浏览器:'+CKobject.browser()['B']+'<br />';
aboutme+='浏览器版本:'+CKobject.browser()['V']+'<br />';
aboutme+='是否安装了flash插件:'+CKobject.Flash()['f']+'<br />';
if(CKobject.Flash()['f']){
aboutme+='flash插件版本:'+CKobject.Flash()['v']+'<br />';
}
aboutme+='是否支持HTML5:'+CKobject.isHTML5()+'<br />';
CKobject._K_('aboutme').innerHTML=aboutme;
</script>
</body>
</html>
文件已添加
此差异已折叠。
<?xml version="1.0" encoding="utf-8"?>
<ckplayer>
<style>
<cpath></cpath>
<!--
播放器风格压缩包文件的路径,默认的是style.swf
如果调用不出来可以试着设置成绝对路径试试
如果不知道路径并且使用的是默认配置,可以直接留空,播放器会自动寻找
-->
<language></language>
<!--
播放器所使用的语言配置文件,需要和播放器在同目录下,默认是language.xml
-->
<flashvars>{b->1}{p->1}</flashvars>
<!--
这里是用来做为对flashvars值的补充,除了c和x二个参数以外的设置都可以在这里进行配置
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 4 4 4
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 1 2 3
-->
<setup>1,1,1,1,1,2,0,1,2,0,0,1,200,0,2,1,0,1,1,1,0,10,3,0,1,2,3000,0,0,0,0,1,1,1,1,1,1,250,0,90,0,0,0</setup>
<!--
这是配置文件里比较重要的一个参数,共有N个功能控制参数,并且以后会继续的增加,各控制参数以英文逗号(,)隔开。下面列出各参数的说明:
1、鼠标经过按钮是否使用手型,0普通鼠标,1手型鼠标,2是只有按钮手型,3是控制栏手型
2、是否支持单击暂停,0不支持,1是支持
3、是否支持双击全屏,0不支持,1是支持
4、在播放前置广告时是否同时加载视频,0不加载,1加载
5、广告显示的参考对象,0是参考视频区域,1是参考播放器区域
6、广告大小的调整方式,只针对swf和图片有效,视频是自动缩放的
=0是自动调整大小,意思是说大的话就变小,小的话就变大
=1是大的化变小,小的话不变
=2是什么也不变,就这么大
=3是跟参考对像(第5个控制)参数设置的一样宽高
7、前置广告播放顺序,0是顺序播放,1是随机播放,>1则随机取所有广告中的(N-1)个进行播放
8、对于视频广告是否采用修正,0是不使用,1是使用,如果是1,则用户在网速慢的情况下会按设定的倒计时进行播放广告,计时结束则放正片(比较人性化),设置成0的话,则强制播放完广告才能播放正片
9、是否开启滚动文字广告,0是不开启,1是开启且不使用关闭按钮,2是开启并且使用关闭按钮,开启后将在加载视频的时候加载滚动文字广告
10、视频的调整方式
=0是自动调整大小,意思是说大的话就变小,小的话就变大,同时保持长宽比例不变
=1是大的化变小,小的话不变
=2是什么也不变,就这么大
=3是跟参考对像(pm_video的设置)参数设置的一样宽高
11、是否在多视频时分段加载,0不是,1是
12、缩放视频时是否进行平滑处理,0不是,1是
13、视频缓冲时间,单位:毫秒,建议不超过300
14、初始图片调整方式(
=0是自动调整大小,意思是说大的话就变小,小的话就变大,同时保持长宽比例不变
=1是大的化变小,小的话不变
=2是什么也不变,就这么大
=3是跟pm_video参数设置的一样宽高
15、暂停广告调整方式(
=0是自动调整大小,意思是说大的话就变小,小的话就变大,同时保持长宽比例不变
=1是大的化变小,小的话不变
=2是什么也不变,就这么大
=3是跟pm_video参数设置的一样宽
16、暂停广告是否使用关闭广告设置,0不使用,1使用
17、缓冲时是否播放广告,0是不显示,1是显示并同时隐藏掉缓冲图标和进度,2是显示并不隐藏缓冲图标
18、是否支持键盘空格键控制播放和暂停0不支持,1支持
19、是否支持键盘左右方向键控制快进快退0不支持,1支持
20、是否支持键盘上下方向键控制音量0不支持,1支持
21、播放器返回js交互函数的等级,0-2,等级越高,返回的参数越多
0是返回少量常用交互
1返回播放器在播放的时候的参数,不返回广告之类的参数
2返回全部参数
3返回全部参数,并且在参数前加上"播放器ID->",用于多播放器的监听
22、快进和快退的秒数
23、界面上图片元素加载失败重新加载次数
24、开启加载皮肤压缩文件包的加载进度提示
25、使用隐藏控制栏时显示简单进度条的功能,0是不使用,1是使用,2是只在普通状态下使用
26、控制栏隐藏设置(0不隐藏,1全屏时隐藏,2都隐藏
27、控制栏隐藏延时时间,即在鼠标离开控制栏后多少毫秒后隐藏控制栏
28、左右滚动时是否采用无缝,默认0采用,1是不采用
29、0是正常状态,1是控制栏默认隐藏,播放状态下鼠标经过播放器显示控制栏,2是一直隐藏控制栏
30、在播放rtmp视频时暂停后点击播放是否采用重新链接的方式,这里一共分0-3四个等级
31、当采用网址形式(flashvars里s=1/2时)读取视频地址时是采用默认0=get方法,1=post方式
32、是否启用播放按钮和暂停按钮
33、是否启用中间暂停按钮
34、是否启用静音按钮
35、是否启用全屏按钮
36、是否启用进度调节栏,0不启用,1是启用,2是只能前进(向右拖动),3是只能后退,4是只能前进但能回到第一次拖动时的位置,5是看过的地方可以随意拖动,
37、是否启用调节音量
38、计算时间的间隔,毫秒
39、前置logo至少显示的时间,单位:毫秒
40、前置视频广告的默认音量
41、当s=3/4时加载插件是否从压缩包里加载,0不是,1是
42、加载风格是否采用加密方式传送,该功能普通用户不能使用
43、在s=1/2时,调用地址里的地址是否是相对地址(相对于调用文件),0不是,1是
-->
<pm_bg>0x000000,100,230,180</pm_bg>
<!--播放器整体的背景配置
1、整体背景颜色
2、背景透明度
3、播放器最小宽度
4、播放器最小高度
这里只是初始化时的设置,最终加载完播放器后显示的效果需要在style.swf/style.xml里设置该参数
-->
<mylogo>null</mylogo>
<!--
视频加载前显示的logo文件,不使用设置成<mylogo>null</mylogo>
-->
<pm_mylogo>1,1,-100,-55</pm_mylogo>
<!--
视频加载前显示的logo文件(mylogo参数的)的位置
本软件所有的四个参数控制位置的方式全部都是统一的意思,如下
1、水平对齐方式,0是左,1是中,2是右
2、垂直对齐方式,0是上,1是中,2是下
3、水平偏移量,举例说明,如果第1个参数设置成0左对齐,第3个偏移量设置成10,就是离左边10个像素,第一个参数设置成2,偏移量如果设置的是正值就会移到播放器外面,只有设置成负值才行,设置成-1,按钮就会跑到播放器外面
4、垂直偏移量
-->
<logo>null</logo>
<!--
默认右上角一直显示的logo,不使用设置成<logo>null</logo>
-->
<pm_logo>2,0,-100,20</pm_logo>
<!--
播放器右上角的logo的位置
1、水平对齐方式,0是左,1是中,2是右
2、垂直对齐方式,0是上,1是中,2是下
3、水平偏移量
4、垂直偏移量
以下是播放器自带的二个插件
-->
<control_rel>related.swf,related.xml,0</control_rel>
<!--
1、视频播放结束后显示相关精彩视频的插件文件(注意,视频结束动作设置成3时(即var flashvars={e:3})有效),
2、xml文件是调用精彩视频的示例文件,可以自定义文件类型(比如asp,php,jsp,.net只要输出的是xml格式就行),实际使用中一定要注意第二个参数的路径要正确
3、第三个参数是设置配置文件的编码,0是默认的utf-8,1是gbk2312
-->
<control_pv>Preview.swf,105,2000</control_pv>
<!--
视频预览插件
1、插件文件名称(该插件和上面的精彩视频的插件都是放在风格压缩包里的)
2、离进度栏的高(指的是插件的顶部离进度栏的位置)
3、延迟时间(该处设置鼠标经过进度栏停顿多少毫秒后才显示插件)
建议一定要设置延时时间,不然当鼠标在进度栏上划过的时候就会读取视频地址进行预览,很占资源
-->
<pm_repc></pm_repc>
<!--
视频地址替换符,该功能主要是用来做简单加密的功能,使用方法很简单,请注意,只针对f值是视频地址的时候有效,其它地方不能使用。具体的请查看http://www.ckplayer.com/manual.php?id=4#title_25
-->
<pm_spac>|</pm_spac>
<!--
视频地址间隔符,这里主要是播放多段视频时使用普通调用方式或网址调用方式时使用的。默认使用|,如果视频地址里本身存在|的话需要另外设置一个间隔符,注意,即使只有一个视频也需要设置。另外在使用rtmp协议播放视频的时候,如果视频存在多级目录的话,这里要改成其它的符号,因为rtmp协议的视频地址多级的话也需要用到|隔开流地址和实例地址
-->
<pm_fpac>file->f</pm_fpac>
<!--
该参数的功能是把自定义的flashvars里的变量替换成ckplayer里对应的变量,默认的参数的意思是把flashvars里的file值替换成f值,因为ckplayer里只认f值,多个替换之间用竖线隔开
-->
<pm_advtime>2,0,-110,10,0,300,0</pm_advtime>
<!--
前置广告倒计时文本位置,播放前置 广告时有个倒计时的显示文本框,这里是设置该文本框的位置和宽高,对齐方式的。一共7个参数,分别表示:
1、水平对齐方式,0是左对齐,1是中间对齐,2是右对齐
2、垂直对齐方式,0是上对齐,1是中间对齐,2是低部对齐
3、水平位置偏移量
4、垂直位置偏移量
5、文字对齐方式,0是左对齐,1是中间对齐,2是右对齐,3是默认对齐
6、文本框宽席
7、文本框高度
-->
<pm_advstatus>1,2,2,-200,-40</pm_advstatus>
<!--
前置广告静音按钮,静音按钮只在是视频广告时显示,当然也可以控制不显示
1、是否显示0不显示,1显示
2、水平对齐方式
3、垂直对齐方式
4、水平偏移量
5、垂直偏移量
-->
<pm_advjp>0,0,2,2,-100,-40</pm_advjp>
<!--
前置广告跳过广告按钮的位置
1、是否显示0不显示,1是显示
2、跳过按钮触发对象(值0/1,0是直接跳转,1是触发js:function ckadjump(){})
3、水平对齐方式
4、垂直对齐方式
5、水平偏移量
6、垂直偏移量
-->
<pm_padvc>2,0,-10,-10</pm_padvc>
<!--
暂停广告的关闭按钮的位置
1、水平对齐方式
2、垂直对齐方式
3、水平偏移量
4、垂直偏移量
-->
<pm_advms>2,2,-46,-56</pm_advms>
<!--
滚动广告关闭按钮位置
1、水平对齐方式
2、垂直对齐方式
3、水平偏移量
4、垂直偏移量
-->
<pm_zip>1,1,-20,-8,1,0,0</pm_zip>
<!--
加载皮肤压缩包时提示文字的位置
1、水平对齐方式,0是左对齐,1是中间对齐,2是右对齐
2、垂直对齐方式,0是上对齐,1是中间对齐,2是低部对齐
3、水平位置偏移量
4、垂直位置偏移量
5、文字对齐方式,0是左对齐,1是中间对齐,2是右对齐,3是默认对齐
6、文本框宽席
7、文本框高度
-->
<pm_advmarquee>1,2,50,-60,50,18,0,0x000000,50,0,20,1,30,2000</pm_advmarquee>
<!--
滚动广告的控制,要使用的话需要在setup里的第9个参数设置成1
这里分二种情况,前六个参数是定位控制,第7个参数是设置定位方式(0:相对定位,1:绝对定位)
第一种情况:第7个参数是0的时候,相对定位,就是播放器长宽变化的时候,控制栏也跟着变
1、默认1:中间对齐
2、上中下对齐(0是上,1是中,2是下)
3、离左边的距离
4、Y轴偏移量
5、离右边的距离
6、高度
7、定位方式
第二种情况:第7个参数是1的时候,绝对定位,就是播放器长宽变化的时候,控制栏不跟着变,这种方式一般使用在控制栏大小不变的时候
1、左中右对齐方式(0是左,1是中间,2是右)
2、上中下对齐(0是上,1是中,2是下)
3、x偏移量
4、y偏移量
5、宽度
6、高度
7、定位方式
以上是前7个参数的作用
8、是文字广告的背景色
9、置背景色的透明度
10、控制滚动方向,0是水平滚动(包括左右),1是上下滚动(包括向上和向下)
11、移动的单位时长,即移动单位像素所需要的时长,毫秒
12、移动的单位像素,正数同左/上,负数向右/下
13、是行高,这个在设置向上或向下滚动的时候有用处
14、控制向上或向下滚动时每次停止的时间
-->
<pm_glowfilter>0,0x01485d, 100, 6, 3, 10, 1, 0, 0</pm_glowfilter>
<!--滚动文字广告是否采用发光滤镜
1、是否使用发光滤镜,0是不采用,1是使用
2、(default = 0xFF0000) — 光晕颜色,采用十六进制格式 0xRRGGBB。 默认值为 0xFF0000
3、(default = 100) — 颜色的 Alpha 透明度值。 有效值为 0 到 100。 例如,25 设置透明度为 25%
4、(default = 6.0) — 水平模糊量。 有效值为 0 到 255(浮点)。 2 的乘方值(如 2、4、8、16 和 32)经过优化,呈现速度比其它值更快
5、(default = 6.0) — 垂直模糊量。 有效值为 0 到 255(浮点)。 2 的乘方值(如 2、4、8、16 和 32)经过优化,呈现速度比其它值更快
6、(default = 2) — 印记或跨页的强度。 该值越高,压印的颜色越深,而且发光与背景之间的对比度也越强。 有效值为 0 到 255
7、(default = 1) — 应用滤镜的次数
8、(default = 0) — 指定发光是否为内侧发光。 值 1 指定发光是内侧发光。 值 0 指定发光是外侧发光(对象外缘周围的发光)
9、(default = 0) — 指定对象是否具有挖空效果。 值为 1 将使对象的填充变为透明,并显示文档的背景颜色背景颜色。
-->
<advmarquee></advmarquee>
<!--
该处是滚动文字广告的内容,如果不想在这里设置,就把这里清空并且在页面中使用js的函数定义function ckmarqueeadv(){return '广告内容'}
-->
<mainfuntion></mainfuntion>
<!--
当flashvars里s=3/4时,调用的函数包名称,默认为空,调用时间轴上的函数setAppObj
-->
<flashplayer></flashplayer>
<!--
当flashvars里的s=3/4时,也可以把swf文件放在这里
-->
<calljs>ckplayer_status,ckadjump,playerstop,ckmarqueeadv</calljs>
<!--
跳过广告和播放结束时调用的js函数
-->
<myweb></myweb>
<!--
以下内容部份是和插件相关的配置,请注意,自定义插件以及其配置的命名方式要注意,不要和系统的相重复,不然就会替换掉系统的相关设置,删除相关插件的话也可以同时删除相关的配置
以下内容定义自定义插件的相关配置,这里也可以自定义任何自己的插件需要配置的内容,当然,如果你某个插件不使用的话,也可以删除相关的配置
-->
<cpt_lights>0</cpt_lights>
<!--
该处定义是否使用开关灯,和right.swf插件配合作用,使用开灯效果时调用页面的js函数function closelights(){};
-->
<!--<cpt_share>ckplayer/ckplayer/share.xml</cpt_share>-->
<!--
分享插件调用的配置文件地址
调用插件开始
-->
<!--<cpt>right.swf,2,1,0,0,2,0</cpt>右边开关灯,调整,分享按钮的插件-->
<!--<cpt>share.swf,1,1,-180,-100,3,0</cpt>分享插件-->
<!--<cpt>adjustment.swf,1,1,-180,-100,3,0</cpt>调整大小和颜色的插件-->
</style>
</ckplayer>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<ckplayer>
<style>
<pr_zip>{font color='#FFFFFF' face='NSimSun'}已加载[$prtage]%{/font}</pr_zip>
<!--
加载皮肤包进度提示的文字,[$prtage]会被替换成加载百分比
-->
<pr_load>{font color='#FFFFFF' face='NSimSun'}已加载[$prtage]%{/font}</pr_load>
<!--
当调用多段视频时,并且没有配置好各段视频的时间和字节数的情况下,播放器需要先读取各段视频的元数据进行计算,此时需要显示一个加载进度告诉用户已计算的情况。
-->
<pr_noload>{font color='#FFFFFF' face='NSimSun'}加载失败{/font}</pr_noload>
<!--
加载视频失败时显示的内容
-->
<pr_buffer>{font color='#FFFFFF' face='Arial'}[$buffer]%{/font}</pr_buffer>
<!--
视频缓冲时显示的提示,[$buffer]会被替换成缓冲的百分比数字部份
-->
<pr_play>{font color='#FFFFFF' face='NSimSun'}点击播放{/font}</pr_play>
<!--
鼠标经过播放按钮时的提示,支持html
-->
<pr_pause>{font color='#FFFFFF' face='NSimSun'}点击暂停{/font}</pr_pause>
<!--
鼠标经过暂停按钮时的提示,支持html
-->
<pr_mute>{font color='#FFFFFF' face='NSimSun'}点击静音{/font}</pr_mute>
<!--
鼠标经过静音按钮时的提示,支持html
-->
<pr_nomute>{font color='#FFFFFF' face='NSimSun'}取消静音{/font}</pr_nomute>
<!--
鼠标经过取消静音按钮时的提示,支持html
-->
<pr_full>{font color='#FFFFFF' face='NSimSun'}点击全屏{/font}</pr_full>
<!--
鼠标经过全屏按钮时的提示,支持html
-->
<pr_nofull>{font color='#FFFFFF' face='NSimSun'}退出全屏{/font}</pr_nofull>
<!--
鼠标经过退出全屏按钮时的提示,支持html
-->
<pr_fastf>{font color='#FFFFFF' face='NSimSun'}快进{/font}</pr_fastf>
<!--
鼠标经过快进按钮时的提示,支持html
-->
<pr_fastr>{font color='#FFFFFF' face='NSimSun'}快退{/font}</pr_fastr>
<!--
鼠标经过快退按钮时的提示,支持html
-->
<pr_time>{font color='#FFFFFF' face='Arial'}[$Time]{/font}</pr_time>
<!--
鼠标经过进度栏时提示当前点上时间的,[$Time]会被替换成时间,支持html
-->
<pr_volume>{font color='#FFFFFF' face='NSimSun'}音量[$Volume]%{/font}</pr_volume>
<!--
鼠标经过音量调节框或调整音量时提示,[$Volume]会自动替换音量值(0-100)
-->
<pr_clockwait>{font color='#FFFFFF' face='Arial'}00:00 | 00:00{/font}</pr_clockwait>
<!--
在默认不加载视频,即m=1的时候,同时并没有设置视频的时间和字节,即o和w值的时候,pr_clock和pr_clock2里的所有内容被替换成这里设置的值
-->
<pr_live>{font color='#FFFFFF' face='NSimSun'}视频直播中{/font}</pr_live>
<!--
在直播的情况下显示的文字
-->
<pr_adv>{font color='#FFFFFF' size='12'}广告剩余:{font color='#FF0000' size='15'}{b}[$Second]{/b}{/font} 秒{/font}</pr_adv>
<!--
广告倒计时显示的内容,[$Second]将会显示倒计时的秒数
-->
</style>
</ckplayer>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ckplayer6.7</title>
<style type="text/css">
body,td,th {
font-size: 14px;
line-height: 26px;
}
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
p {
margin-top: 5px;
margin-right: 0px;
margin-bottom: 0px;
margin-left: 0px;
padding-left: 10px;
}
#a1{
position:relative;
z-index: 100;
width:600px;
height:400px;
float: left;
}
</style>
<script type="text/javascript" src="js/offlights.js"></script>
</head>
<body>
<div id="a1"></div>
<!--
上面一行是播放器所在的容器名称,如果只调用flash播放器,可以只用<div id="a1"></div>
-->
<textarea name="statusvalue" rows="15" id="statusvalue" style="width:200px;height:400px;">该处是用来监听播放器实时返回的各种状态,可以根据这里的状态实时的控制播放器</textarea>
<script type="text/javascript" src="ckplayer/ckplayer.js" charset="utf-8"></script>
<script type="text/javascript">
//如果你不需要某项设置,可以直接删除,注意var flashvars的最后一个值后面不能有逗号
function loadedHandler(){
if(CKobject.getObjectById('ckplayer_a1').getType()){//说明使用html5播放器
alert('播放器已加载,调用的是HTML5播放模块');
}
else{
alert('播放器已加载,调用的是Flash播放模块');
}
}
var _nn=0;
function ckplayer_status(str){
_nn+=1;
if(_nn>100){
_nn=0;
document.getElementById('statusvalue').value='';
}
document.getElementById('statusvalue').value=str+'\n'+document.getElementById('statusvalue').value;
}
var flashvars={
f:'http://192.168.30.21/test2HD.flv',//视频地址
a:'',//调用时的参数,只有当s>0的时候有效
s:'0',//调用方式,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:'',//暂停时播放的广告,swf/图片,多个用竖线隔开,图片要加链接地址,没有的时候留空就行
u:'',//暂停时如果是图片的话,加个链接地址
l:'',//前置广告,swf/图片/视频,多个用竖线隔开,图片和视频要加链接地址
r:'',//前置广告的链接地址,多个用竖线隔开,没有的留空
t:'10|10',//视频开始前播放swf/图片时的时间,多个用竖线隔开
y:'',//这里是使用网址形式调用广告地址时使用,前提是要设置l的值为空
z:'',//缓冲广告,只能放一个,swf格式
e:'3',//视频结束后的动作,0是调用js函数,1是循环播放,2是暂停播放并且不调用广告,3是调用视频推荐列表的插件,4是清除视频流并调用js功能和1差不多,5是暂停播放并且调用暂停广告
v:'80',//默认音量,0-100之间
p:'1',//视频默认0是暂停,1是播放,2是不加载视频
h:'0',//播放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 params={bgcolor:'#FFF',allowFullScreen:true,allowScriptAccess:'always'};//这里定义播放器的其它参数如背景色(跟flashvars中的b不同),是否支持全屏,是否支持交互
var video=['http://movie.ks.js.cn/flv/other/2014/06/20-2.mp4->video/mp4'];
CKobject.embed('ckplayer/ckplayer.swf','a1','ckplayer_a1','100%','100%',false,flashvars,video,params);
/*
以上代码演示的兼容flash和html5环境的。如果只调用flash播放器或只调用html5请看其它示例
*/
function videoLoadJs(s){
alert("执行了播放");
}
function playerstop(){
//只有当调用视频播放器时设置e=0或4时会有效果
alert('播放完成');
}
var _nn=0;//用来计算实时监听的条数的,超过100条记录就要删除,不然会消耗内存
function getstart(){
var a=CKobject.getObjectById('ckplayer_a1').getStatus();
var ss='';
for (var k in a){
ss+=k+":"+a[k]+'\n';
}
alert(ss);
}
function ckadjump(){
alert('这里演示了点击跳过广告按钮后的执行的动作,如果注册会员可以做成直接跳过的效果。');
}
//开关灯
var box = new LightBox();
function closelights(){//关灯
box.Show();
CKobject._K_('a1').style.width='940px';
CKobject._K_('a1').style.height='550px';
CKobject.getObjectById('ckplayer_a1').width=940;
CKobject.getObjectById('ckplayer_a1').height=550;
}
function openlights(){//开灯
box.Close();
CKobject._K_('a1').style.width='600px';
CKobject._K_('a1').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 addflash(){
if(CKobject.Flash()['f']){
CKobject._K_('a1').innerHTML='';
CKobject.embedSWF('ckplayer/ckplayer.swf','a1','ckplayer_a1','600','400',flashvars,params);
}
else{
alert('该环境中没有安装flash插件,无法切换');
}
}
function addhtml5(){
if(CKobject.isHTML5()){
support=['all'];
CKobject._K_('a1').innerHTML='';
CKobject.embedHTML5('a1','ckplayer_a1',600,400,video,flashvars,support);
}
else{
alert('该环境不支持html5,无法切换');
}
}
function addListener(){
if(CKobject.getObjectById('ckplayer_a1').getType()){//说明使用html5播放器
CKobject.getObjectById('ckplayer_a1').addListener('play',playHandler);
}
else{
CKobject.getObjectById('ckplayer_a1').addListener('play','playHandler');
}
}
function playHandler(){
alert('因为注册了监听播放,所以弹出此内容,删除监听将不再弹出');
}
function removeListener(){//删除监听事件
if(CKobject.getObjectById('ckplayer_a1').getType()){//说明使用html5播放器
CKobject.getObjectById('ckplayer_a1').removeListener('play',playHandler);
}
else{
CKobject.getObjectById('ckplayer_a1').removeListener('play','playHandler');
}
}
</script>
<p style="color:#F00">
ckplayer6.7,<a href="help.htm" target="_blank">查看升级说明</a>,<strong><a href="http://www.ckplayer.com/" target="_blank">官网</a><a href="http://www.ckplayer.com/tool/" target="_blank">帮助手册</a></strong><br />
<strong>如果你是双击打开该页面,发现不能播放视频</strong>(原则上该播放器需要在网站环境中运行),<a href="http://www.ckplayer.com/bbs/forum.php?mod=viewthread&amp;tid=942">请点击该链接查看设置方法</a></p>
<p>该页面只是一个展示播放器功能的页面,里面的代码请自行选择需要的。</p>
<p><a href="demo3.htm">简单播放代码演示(自行选择优先使用Flash播放器还是HTML5播放器)</a><a href="demo.htm">简单播放代码演示(已不推荐使用)</a><a href="demo1.htm">只调用Flash播放代码演示</a><a href="demo2.htm">只调用HTML5播放代码演示</a><br>
<input type="button" name="button23" value="切换到flash播放器" onClick="addflash();" />
<input type="button" name="button24" value="切换到html5播放器" onClick="addhtml5();" />
</p>
<p>以下的操作对flash播放器和html5播放器都有效</p>
<p>
<input type="button" name="button5" value="播放" onClick="CKobject.getObjectById('ckplayer_a1').videoPlay();" />
<input type="button" name="button6" value="暂停" onClick="CKobject.getObjectById('ckplayer_a1').videoPause();" />
<input type="button" name="button7" value="播放/暂停" onClick="CKobject.getObjectById('ckplayer_a1').playOrPause();" />
<input type="button" name="button8" value="快进" onClick="CKobject.getObjectById('ckplayer_a1').fastNext();" />
<input type="button" name="button9" value="快退" onClick="CKobject.getObjectById('ckplayer_a1').fastBack();" />
<input type="button" name="button15" value="暂停监听" onClick="CKobject.getObjectById('ckplayer_a1').changeStatus(0);" />
<input type="button" name="button16" value="加ID的监听" onClick="CKobject.getObjectById('ckplayer_a1').changeStatus(3);" />
<input type="button" name="button21" value="获取播放器当前相关属性" onClick="getstart();" />
<input type="button" name="button13" value="注册监听播放事件" onClick="addListener();" />
<input type="button" name="button14" value="删除监听播放事件" onClick="removeListener();" />
</p>
<p>
先设置好要跳转的秒数:
<input name="seconds" type="text" id="seconds" value="20" size="5" maxlength="5" />
<input type="button" name="button" id="button" value="跳转" onClick="CKobject.getObjectById('ckplayer_a1').videoSeek(document.getElementById('seconds').value);" />
</p>
<p>
先设置好音量(1-100):
<input name="volume" type="text" id="volume" value="20" size="5" maxlength="5" />
<input type="button" name="button" id="button" value="设置" onClick="CKobject.getObjectById('ckplayer_a1').changeVolume(document.getElementById('volume').value);" />
</p>
<p>以下的操作只对flash播放器使用,在html5播放时点击下面按钮不会发生任何事情,也不用担心会发生错误,因为在html5里虽然不支持但同时屏蔽了这些有可能出错的代码</p>
<p>
<input type="button" name="button0" value="暂停前置广告" onClick="CKobject.getObjectById('ckplayer_a1').frontAdPause();" />
<input type="button" name="button1" value="继续播放前置广告" onClick="CKobject.getObjectById('ckplayer_a1').frontAdPause(false);" />
<input type="button" name="button2" value="跳过广告" onClick="CKobject.getObjectById('ckplayer_a1').frontAdUnload();" />
<input type="button" name="button3" value="隐藏控制栏" onClick="CKobject.getObjectById('ckplayer_a1').changeFace(true);" />
<input type="button" name="button4" value="显示控制栏" onClick="CKobject.getObjectById('ckplayer_a1').changeFace();" />
<input type="button" name="button10" value="显示调整插件" onClick="CKobject.getObjectById('ckplayer_a1').plugin('adjustment.swf',true);" />
<input type="button" name="button11" value="隐藏调整插件" onClick="CKobject.getObjectById('ckplayer_a1').plugin('adjustment.swf',false);" />
<input type="button" name="button12" value="清除视频" onClick="CKobject.getObjectById('ckplayer_a1').videoClear();" />
<input type="button" name="button17" value="清除提示点" onClick="CKobject.getObjectById('ckplayer_a1').promptUnload();" />
<input type="button" name="button18" value="显示提示点" onClick="CKobject.getObjectById('ckplayer_a1').promptLoad();" />
<input type="button" name="button19" value="改变提示点" onClick="changePrompt()" />
<input type="button" name="button20" value="关闭滚动文字广告" onClick="CKobject.getObjectById('ckplayer_a1').marqueeClose();" />
<input type="button" name="button20" value="显示滚动文字广告" onClick="CKobject.getObjectById('ckplayer_a1').marqueeLoad(true);" />
<input type="button" name="button22" value="改变并显示滚动文字广告内容" onClick="CKobject.getObjectById('ckplayer_a1').marqueeLoad(true,'{font color=\'#FFDD00\'}改变后的内容,这里的内容虽然可以动态的改变,但不建议使用该功能做字幕的功能,字幕插件请在官网查找!{/font}');" />
</p>
<p>
亮度(-255-255):
<input name="brightness" type="text" id="brightness" value="200" size="5" maxlength="5" />
<input type="button" name="button" id="button" value="设置" onClick="CKobject.getObjectById('ckplayer_a1').videoBrightness(document.getElementById('brightness').value);" />
0为中间值,向右为亮向左为暗</p>
<p>
对比度(-255-255):
<input name="contrast" type="text" id="contrast" value="200" size="5" maxlength="5" />
<input type="button" name="button" id="button" value="设置" onClick="CKobject.getObjectById('ckplayer_a1').videoContrast(document.getElementById('contrast').value);" />
127.5为中间值,向右对比鲜明向左对比偏暗</p>
<p>
饱和度(-255-255):
<input name="saturation" type="text" id="saturation" value="200" size="5" maxlength="5" />
<input type="button" name="button" id="button" value="设置" onClick="CKobject.getObjectById('ckplayer_a1').videoSaturation(document.getElementById('saturation').value);" />
1为中间值,0为灰度值(即黑白相片)</p>
<p>
色相(-255-255):
<input name="sethue" type="text" id="sethue" value="200" size="5" maxlength="5" />
<input type="button" name="button" id="button" value="设置" onClick="CKobject.getObjectById('ckplayer_a1').videoSetHue(document.getElementById('sethue').value);" />
0为中间值,向右向左一试便知</p>
<p>
增加宽高:
<input name="wandh" type="text" id="wandh" value="100" size="5" maxlength="5" /><input name="wandh2" type="text" id="wandh2" value="100" size="5" maxlength="5" />
<input type="button" name="button" id="button" value="设置" onClick="CKobject.getObjectById('ckplayer_a1').videoWAndH(document.getElementById('wandh').value,document.getElementById('wandh2').value);" />
大于0,100为正常宽高
</p>
<p>
自由设置宽:
<input name="cw" type="text" id="cw" value="100" size="5" maxlength="5" />
高:
<input name="ch" type="text" id="ch" value="100" size="5" maxlength="5" />
x:
<input name="cx" type="text" id="cx" value="100" size="5" maxlength="5" />
y:
<input name="cy" type="text" id="cy" value="100" size="5" maxlength="5" />
<input type="button" name="button" id="button" value="设置" onClick="CKobject.getObjectById('ckplayer_a1').videoWHXY(document.getElementById('cw').value,document.getElementById('ch').value,document.getElementById('cx').value,document.getElementById('cy').value);" />
</p>
<p>
播放新参数地址:
<input name="newaddress" type="text" id="newaddress" value="{f-&gt;http://movie.ks.js.cn/flv/2012/02/6-1.flv}{html5-&gt;http://movie.ks.js.cn/flv/other/2014/06/20-2.mp4->video/mp4,http://www.ckplayer.com/webm/1.webm->video/webm,http://www.ckplayer.com/webm/1.ogv->video/ogg}" size="60" maxlength="300" />
<input type="button" name="button" id="button" value="跳转" onClick="CKobject.getObjectById('ckplayer_a1').newAddress(document.getElementById('newaddress').value);" /><br>
</p>
<p>以下是CKoject函数所能做的一些跟播放器无关的事情</p>
<p id="aboutme"></p>
<script type="text/javascript">
var aboutme='';
aboutme+='平台(浏览器)内核:'+CKobject.Platform()+'<br />';
aboutme+='浏览器:'+CKobject.browser()['B']+'<br />';
aboutme+='浏览器版本:'+CKobject.browser()['V']+'<br />';
aboutme+='是否安装了flash插件:'+CKobject.Flash()['f']+'<br />';
if(CKobject.Flash()['f']){
aboutme+='flash插件版本:'+CKobject.Flash()['v']+'<br />';
}
aboutme+='是否支持HTML5:'+CKobject.isHTML5()+'<br />';
CKobject._K_('aboutme').innerHTML=aboutme;
</script>
</body>
</html>
/*
该文件是从网上收集的方法,用来做开关灯的,相对于原来的程序做了一些改变,兼容了IE10
*/
var Offlights = {
create: function() {
return function() {
this.initialize.apply(this, arguments)
}
}
}
var OverLay = Offlights.create();
OverLay.prototype = {
initialize: function(options) {
this.SetOptions(options);
this.browser = (function(ua){
var a=new Object();
var b = {
msie: /msie/.test(ua) && !/opera/.test(ua),
opera: /opera/.test(ua),
safari: /webkit/.test(ua) && !/chrome/.test(ua),
firefox: /firefox/.test(ua),
chrome: /chrome/.test(ua)
};
var vMark = "";
for (var i in b) {
if (b[i]) { vMark = "safari" == i ? "version" : i; break; }
}
b.version = vMark && RegExp("(?:" + vMark + ")[\\/: ]([\\d.]+)").test(ua) ? RegExp.$1 : "0";
b.ie = b.msie;
b.ie6 = b.msie && parseInt(b.version, 10) == 6;
b.ie7 = b.msie && parseInt(b.version, 10) == 7;
b.ie8 = b.msie && parseInt(b.version, 10) == 8;
a.B=vMark;
a.V=b.version;
return a;
})(window.navigator.userAgent.toLowerCase());
this.isIE = this.browser['B']=='msie' ? true : false;
this.isIE6 = (this.isIE && this.browser['V']==6)?true:false;
this._K_ = function(id) {return "string" == typeof id ? document.getElementById(id) : id};
this.Lay = this._K_(this.options.Lay) || document.body.insertBefore(document.createElement("div"), document.body.childNodes[0]);
this.Color = this.options.Color;
this.Opacity = parseInt(this.options.Opacity);
this.zIndex = parseInt(this.options.zIndex);
with(this.Lay.style) {
display = "none";
zIndex = this.zIndex;
left = top = 0;
position = "fixed";
width = height = "100%"
}
if (this.isIE6) {
this.Lay.style.position = "absolute";
this._resize = this.Bind(this,
function() {
this.Lay.style.width = Math.max(document.documentElement.scrollWidth, document.documentElement.clientWidth) + "px";
this.Lay.style.height = Math.max(document.documentElement.scrollHeight, document.documentElement.clientHeight) + "px"
});
this.Lay.innerHTML = ''
}
},
Bind:function(object, fun) {
return function() {
return fun.apply(object, arguments)
}
},
Extend :function(destination, source) {
for (var property in source) {
destination[property] = source[property]
}
},
SetOptions: function(options) {
this.options = {
Lay: null,
Color: "#000",
Opacity: 100,
zIndex: 50
};
this.Extend(this.options, options || {})
},
Show: function() {
if (this.isIE6) {
this._resize();
window.attachEvent("onresize", this._resize)
}
with(this.Lay.style) {
this.isIE ? filter = "alpha(opacity:" + this.Opacity + ")": opacity = this.Opacity / 100;
backgroundColor = this.Color;
display = "block"
}
},
Close: function() {
this.Lay.style.display = "none";
if (this.isIE6) {
window.detachEvent("onresize", this._resize)
}
}
};
var LightBox = Offlights.create();
LightBox.prototype = {
initialize: function(options) {
this.OverLay = new OverLay(options);
},
Show: function(options) {
this.OverLay.Show();
},
Close: function() {
this.OverLay.Close();
}
};
* {
margin: 0;
padding: 0;
list-sytle: none;
}
h2 {
text-align: center;
}
.main {
background-color: #fcfcfc;
font-size: 18px;
position: absolute;
top:5%;
left:100px;
border: solid 1px ##fdfdfd;
width: 1100px;
min-height: 500px;
margin: auto;
}
.videos {
margin-top: 2%;
margin-left: 4%;
}
input {
font-size: 18px;
}
.managerPanel {
border: solid 1px #eef;
background-color: #f8f8f8;
position:absolute;
left: 64%;
top:0;
width: 320px;
height: 360px;
margin-top: 2%;
margin-left: 3%;
}
.panelTitle{
font-size:20px;
text-align:center;
padding:5px 0px 5px 0px;
border-bottom:dotted 2px #eee;
}
.panelChild{
margin-top:4px;
margin-left:30px;
}
.videoParam{
width:150px;
text-align:left;
}
.panelButtons input{
width:100px;
height:30px;
margin-top:5px;
margin-right:45px;
}
.videoParam {
margin: 5px;
}
.videoManager{
border-collapse:none;
}
.videoDetail {
background-color: #f7f7f7;
margin: 30px auto;
width: 1020px;
min-height: 200px;
border: solid 1px #eef;
}
.detailTitle{
padding:5px 0px 5px 0px;
text-align:center;
border-bottom:dotted 2px #eee;
}
.appManager{
margin-left:10px;
height:50px;
}
.appManager td
{
text-align:center;
width:80px;
border-bottom:dotted 1px #eee;
}
.appManager th{
text-align:center;
width:80px;
border-bottom:dotted 1px #eee;
}
.appManager
thead .list-input{
width:350px;
}
thead .list-output{
width:150px;
}
.list-input{
width:350px;
font-size:10px;
}
.list-output{
width:200px;
font-size:10px;
}
.closeVideoOnTable,.playVideoOnTable
{
width:50px;
}
.closeVideo,.playVideo{
width:50px;
font-size:16px;
}
<!DOCTYPE html>
<html>
<head>
<title>playVideo</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link href="player/video-js.min.css" rel="stylesheet" >
<script src="player/videojs-ie8.min.js"></script>
<script src="player/video.min.js"></script>
<script type="text/javascript">
videojs.options.flash.swf = "player/video-js.swf";
</script>
<script type="text/javascript">
/*
* 根据videoJS官方文档编写的播放器常用操作
* 修改时间:2016年6月27日
* 修 改 人: wangliang
* ++修改播放地址
* ++重载播放器
* ++获取播放器网络状态
*/
//获取当前类型
function getCurrentType(idnex) {
return idnex.currentType();
}
//获取当前播放地址
function getCurrentAddr(index) {
return index.currentSrc();
}
//获取当前播放时间
function getCurrentTime(index) {
return index.currentTime();
}
//获取当前网络状态
function networkState(index) {
return index.networkState();
}
//修改播放地址
function setsrc(index, url, type) {
index.src({
type : type,
src : url
});
}
//重载播放器
function reset(index) {
index.reset();
index.load();
}
//播放
function play(index) {
index.play();
}
//暂停
function pause(index) {
index.pause();
}
</script>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"> </script>
<script type="text/javascript">
//获取dom
function get(index) {
return document.getElementById(index);
}
//修改播放地址并播放
function writeAddressAndPlay(index, url) {
//播放器操作
setsrc(index, url, "rtmp/flv");
play(index);
}
//高清标清切换就是应用名加减HD
function changeUrl(video) {
var index = $(video).text();
//获取当前播放的url
var CurrentUrl = getCurrentAddr(player);
$(".vjs-menu-item").removeClass("vjs-selected");
$(video).addClass("vjs-selected");
if (index == "高清") {
if (CurrentUrl.indexOf("HD") == -1) {
CurrentUrl = CurrentUrl + "HD";
} else {
return;
}
} else {
if (CurrentUrl.indexOf("HD") != -1) {
CurrentUrl = CurrentUrl.replace("HD", "");
} else {
return;
}
}
writeAddressAndPlay(player, CurrentUrl);
}
function getAddr()
{
alert(getCurrentAddr(player));
}
</script>
</head>
<body>
<div id="mp4">
<video src="http://192.168.30.21/test1HD.video.mp4" autoplay="autoplay" height="360" width="640" title="视频" controls="controls"></video>
</div>
<div id="videos">
<!-- data-setup{}可以控制播放器的一些功能;autoplay:true/false,是否自动播放;preload:auto\none\meta,自动加载\不加载\加载元数据 -->
<video id="player4" class="video-js vjs-default-skin vjs-big-play-centered"
poster="img/eguidlogo.png" width="640" height="360" data-setup='{}'>
<source src="http://192.168.30.21/test1.video.mp4" type="video/mp4">
</video>
</div>
<input type="button" value="获取播放地址" onclick="getAddr();">
</body>
<script type="text/javascript">
//播放器初始化方法
function playerInitVideo() {
$j = $(".vjs-fullscreen-control");
$j.before('<div class="vjs-subtitles-button vjs-menu-button vjs-menu-button-popup vjs-control vjs-button" tabindex="0" role="menuitem" aria-live="polite" aria-expanded="false" aria-haspopup="true">'
+ '<div class="vjs-menu" role="presentation">'
+ '<ul class="vjs-menu-content" role="menu">'
+ '<li class="vjs-menu-item" tabindex="-1" role="menuitemcheckbox" onclick="changeUrl(this)">高清</li>'
+ '<li class="vjs-menu-item vjs-selected" tabindex="-1" role="menuitemcheckbox" onclick="changeUrl(this)">标清 </li>'
+ '</ul></div><span class="vjs-control-text">清晰度</span></div>');}
var player = videojs('player4');
//play(p4);
player.ready(function() {
playerInitVideo();
//player.play();
//setsrc(player,"rtmp://192.168.30.21/live/test3","rtmp/flv");
});
</script>
</html>
<!DOCTYPE html>
<html>
<head>
<title>实时监控视频应用管理系统</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link href="player/video-js.min.css" rel="stylesheet" >
<link href="css/index.css" rel="stylesheet" >
<script src="player/videojs-ie8.min.js"></script>
<script src="player/video.min.js"></script>
<script type="text/javascript">videojs.options.flash.swf = "player/video-js.swf";</script>
<script src="js/videojsAPI.js"></script>
<script src="js/jquery.min.js"> </script>
</head>
<body>
<h2>实时监控视频应用发布管理系统</h2>
<div class="main">
<div id="videos" class="videos">
<!-- data-setup{}可以控制播放器的一些功能;autoplay:true/false,是否自动播放;preload:auto\none\meta,自动加载\不加载\加载元数据 -->
<video id="videoPlayer" class="video-js vjs-default-skin vjs-big-play-centered"
controls preload="auto" poster="img/eguidlogo.png" width="640" height="360"
data-setup='{ "html5" : { "nativeTextTracks" : false } }'>
<source src='rtmp://192.168.30.21/live/' type='rtmp/flv' />
</video>
</div>
<!-- 管理面板 -->
<div class="managerPanel">
<p class="panelTitle">发布一个视频应用</p>
<form id="appForm">
<div class="panelChild"><a>应 用 名:</a><input type="text" class="videoParam" id="p-appName" name="appName" value="应用名"></div>
<div class="panelChild"><a>视 频 源:</a><input type="text" class="videoParam" id="p-input" name="input" value="rtsp://admin:admin@192.168.2.236:37779/cam/realmonitor?channel=1&subtype=0"></div>
<div class="panelChild"><a>发布地址:</a><input type="text" class="videoParam" id="p-output" name="output" value="rtmp://192.168.30.21/live/"></div>
<div class="panelChild"><a>视频格式:</a><input type="text" class="videoParam" id="p-fmt" name="fmt" value="flv"></div>
<div class="panelChild"><a>视频帧率:</a><input type="text" class="videoParam" id="p-fps" name="fps" value="25"></div>
<div class="panelChild"><a>分 辨 率:</a><input type="text" class="videoParam" id="p-rs" name="rs" value="640x360"></div>
<div class="panelChild"><a>关闭音频:</a><input type="text" class="videoParam" id="p-disableAudio" name="disableAudio" value="true"></div>
</form>
<div class="panelChild panelButtons"><input type="button" value="发布应用" onclick="pushApp();"></input><input type="button" value="发布并播放" onclick="pushAndPlay();"></input></div>
</div>
<!-- 视频详细 -->
<div class="videoDetail">
<p class="detailTitle">当前运行的应用列表</p>
<!-- 视频管理 -->
<table class="videoManager">
<thead><tr class="appManager"><th class="list-appName">应用名</th><th >视频源</th><th >播放地址</th><th class="list-fmt">格式</th><th class="list-fps">帧率</th><th class="list-rs">分辨率</th><th class="list-disableAudio">音频</th><th class="playVideoOnTable"></th><th class="playVideoOnTable"><input class="refleshAppList" type="button" value="刷新" onclick="viewAll();"/></th></tr><thead>
<tbody id="appList">
<tr class="appManager"><td class="list-appName">xxx</td><td class="list-input">rtsp://admin:admin@192.168.2.236:37779/cam/realmonitor?channel=1&subtype=0</td><td class="list-output">rtmp://192.168.30.21/live/text1</td><td class="list-fmt">flv</td><td class="list-fps">25</td><td class="list-rs">640x360</td><td class="list-disableAudio">true</td><td class="playVideoOnTable"><input class="playVideo" type="button" value="播放"/></td><td class="closeVideoOnTable"><input class="closeVideo" type="button" value="关闭"/></td></tr>
<tr class="appManager"><td class="list-appName">应用名</td><td class="list-input">rtsp://admin:admin@192.168.2.236:37779/cam/realmonitor?channel=1&subtype=0</td><td class="list-output">rtmp://192.168.30.21/live/text1</td><td class="list-fmt">flv</td><td class="list-fps">25</td><td class="list-rs">640x360</td><td class="list-disableAudio">true</td><td class="playVideoOnTable"><input class="playVideo" type="button" value="播放" onclick="playFromList(this);"/></td><td class="closeVideoOnTable"><input class="closeVideo" type="button" value="关闭" onclick="closeApp(this,'123')"/></td></tr>
</tbody>
</table>
</div>
</div>
</body>
<script src="js/play.js"></script>
<script src="js/liveService.js"></script>
</html>
\ No newline at end of file
此差异已折叠。
/*
* 页面操作(发布,播放,删除,查看发布列表,查看发布信息)
* 编写:wangliang
*/
//封装JsonAjax方法(请求类型,url,参数,成功方法)
function JsonAjax(urltype,urlLink,paramData,sucessMethod){
$.ajax({
type:urltype,
url:urlLink,
data:paramData,
dataType:"json",
success:function(data){
sucessMethod(data);
},
error:function(){
alert("服务器未开启或页面错误,请联系管理员");
}
});
}
//增强型ajax方法:增加一个回调参数方便回调方法调用;通过回调参数,回调方法就可以在调用方法后续无法处理的业务的时候处理后续动作,比如生成列表
function EchoJsonAjax(urltype,urlLink,paramData,sucessMethod,async,index){
$.ajax({
type:urltype,
url:urlLink,
async:async,
data:paramData,
dataType:"json",
contentType:"application/json,;charset=UTF-8",
success:function(data){
//把回调参数给回调方法
sucessMethod(data,index);
},
error:function(){
alert("服务器未开启或页面错误,请联系管理员");
}
});
}
/*
* --------------------发布应用事件-----------------------
*/
/**
* 发布一个应用方法
*/
function pushApp(newMethod){
//自定义成功方法
var appName=$("#p-appName").val();
var input=$("#p-input").val();
var output=$("#p-output").val();
var fmt=$("#p-fmt").val();
var fps=$("#p-fps").val();
var rs=$("#p-rs").val();
var disableAudio=$("#p-disableAudio").val();
if(isNull(appName)||isNull(input)||isNull(output)||isNull(fmt)||isNull(fps)||isNull(rs)||isNull(disableAudio)){
alert("发布失败,必须填写全部参数!");
return ;
}
var param=$("#appForm").serializeArray();
if(window.confirm("确定发布名称为:’"+appName+" ‘的实时应用?(提示:发布后该实时流(在不关闭的情况下)会一直保持推送状态)")){
if(newMethod){
JsonAjax("POST","live/push/"+appName,param,newMethod);
}else{
JsonAjax("POST","live/push/"+appName,param,sucessPushApp);
}
}
}
//是否为空
function isNull(element){
return element==null||new String(element).trim()=="";
}
/**
* 成功返回方法:成功发布应用后更新应用列表
* @param element
*/
function sucessPushApp(resultData){
if(resultData){
if(resultData.status==0){
//显示列表
viewAll();
}
//不管是否发布成功都要显示结果信息
alert(resultData.msg);
}else{
alert("服务器抽风了,请稍后再试!");
}
}
/*
* -----------------关闭应用事件---------------
*/
/**
* 通过应用名关闭应用
* @param element
*/
function closeApp(element){
var appName=$(element).parent().parent().data("appName");
if(window.confirm("停止这个实时应用?(提示:实时应用无法暂停,停止即删除)")){
EchoJsonAjax("DELETE","live/close/"+appName,"",sucessCloseApp,true,element);
}
}
/**
* 成功返回方法:成功关闭应用事件
* @param resultData
* @param index
*/
function sucessCloseApp(resultData,index){
if(resultData){
if(resultData.status==0){
//删除应用后刷新列表
viewAll();
}
alert(resultData.msg);
}else{
alert("服务器抽风了 - -!");
}
}
/*
* ----------------------查看应用详细事件-------------------
*/
/**
* 查看应用详细信息
* @param element:点击事件的按钮元素
* @param sucessMethod:成功返回的方法
* @param index:appName,该参数如果可用,element参数将自动失效
*
*/
function view(element,sucessMethod,index){
var appName=index?index:$(element).parent().parent().data("appName");
JsonAjax("GET","live/view/"+appName,"",sucessMethod);
}
//成功获取应用详细(暂时不用)
function sucessvViewApp(resultData,element){
}
/*
* --------------列表查询事件------------
*/
/**
* 查看当前全部应用方法
*/
function viewAll(){
JsonAjax("GET","live/viewAll","",sucessViewAllAppList);
}
/**
* 成功返回方法:成功获取参数后把所有应用形成列表
* @param resultData
*/
function sucessViewAllAppList(resultData){
if(resultData||resultData.status==0){
//每次生成要先把原数据删除再生成
$("#appList").empty();
var listData=resultData.data;
if(listData&&listData.length>0){
for(var i=0;i<listData.length;i++){
var elementHTML='<tr class="appManager"><td class="list-appName">'+
listData[i].appName+'</td><td class="list-input">'+
listData[i].input+'</td><td class="list-output">'+
listData[i].output+'</td><td class="list-fmt">'+
listData[i].fmt+'</td><td class="list-fps">'+
listData[i].fps+'</td><td class="list-rs">'+
listData[i].rs+'</td><td class="list-disableAudio">'+
listData[i].disableAudio+'</td><td class="playVideoOnTable">'+
'<input class="playVideo" type="button" value="播放" onclick="playFromList(this);"/></td><td class="closeVideoOnTable">'+
'<input class="closeVideo" type="button" value="关闭" onclick="closeApp(this);"/></td></tr>';
$(elementHTML).appendTo($("#appList")).data("appName",listData[i].appName);
}
}else{
alert(resultData.msg);
//查询列表失败清空列表
$("#appList").empty();
}
}else{
alert("服务器抽风了 - -!");
//查询列表失败清空列表
$("#appList").empty();
}
}
/*
* -----------------发布并播放事件----------------
*/
/**
* 发布并播放方法
*/
function pushAndPlay(){
pushApp(sucesspushAndPlay);
}
/**
* 成功返回方法:发布后播放器播放发布的应用
*/
function sucesspushAndPlay(resultData)
{
if(resultData){
if(resultData.status==0){
//显示列表
viewAll();
var appName=resultData.data.appName;
view(null,sucessPlayFromView,appName);
}
//不管是否发布成功都要显示结果信息
alert(resultData.msg);
}else{
alert("服务器抽风了,请稍后再试!");
}
}
/*
* ----------------播放事件----------------
*/
/**
* 播放应用
* @param element
*/
function playFromList(element){
if(window.confirm("播放这个实时应用?(提示:这将会关闭正在播放的应用)")){
view(element,sucessPlayFromView);
}
}
/**
* 成功获取应用播放地址并播放
* @param resultData
*/
function sucessPlayFromView(resultData){
if(resultData){
if(resultData.status==0){
var playUrl=resultData.data.output+resultData.data.appName;
//修改播放地址并播放
writeAddressAndPlay(player,playUrl)
}else{
alert(resultData.msg);
}
}else{
alert("服务器抽风了 - -!");
}
}
//播放器实例
var player = videojs('videoPlayer');
//播放器初始化操作面板清晰度菜单
function playerInitVideo() {
$videoPanelMenu = $(".vjs-fullscreen-control");
$videoPanelMenu.before('<div class="vjs-subtitles-button vjs-menu-button vjs-menu-button-popup vjs-control vjs-button" tabindex="0" role="menuitem" aria-live="polite" aria-expanded="false" aria-haspopup="true">'
+ '<div class="vjs-menu" role="presentation">'
+ '<ul class="vjs-menu-content" role="menu">'
+ '<li class="vjs-menu-item" tabindex="-1" role="menuitemcheckbox" onclick="changeUrl(this)">高清</li>'
+ '<li class="vjs-menu-item vjs-selected" tabindex="-1" role="menuitemcheckbox" onclick="changeUrl(this)">标清 </li>'
+ '</ul></div><span class="vjs-control-text">清晰度</span></div>');
}
//加载页面进行播放器初始化
player.ready(function() {
playerInitVideo();
//player.play();
//setsrc(player,"rtmp://192.168.30.21/live/test3","rtmp/flv");
});
//通过id获取DOM
function get(index) {
return document.getElementById(index);
}
//修改播放地址并播放
function writeAddressAndPlay(index,url,type) {
//播放器操作
setsrc(index, url, type?type:"rtmp/flv");
play(index);
}
//高清标清切换就是应用名加减HD
function changeUrl(video) {
var index = $(video).text();
//获取当前播放的url
var CurrentUrl = getCurrentAddr(player);
$(".vjs-menu-item").removeClass("vjs-selected");
$(video).addClass("vjs-selected");
if (index == "高清") {
if (CurrentUrl.indexOf("HD") == -1) {
CurrentUrl = CurrentUrl + "HD";
} else {
return;
}
} else {
if (CurrentUrl.indexOf("HD") != -1) {
CurrentUrl = CurrentUrl.replace("HD", "");
} else {
return;
}
}
//修改地址并播放
writeAddressAndPlay(player, CurrentUrl);
}
\ No newline at end of file
/*
* 根据videoJS官方文档编写的播放器常用操作
*/
//获取当前类型
function getCurrentType(idnex) {
return idnex.currentType();
}
//获取当前播放地址
function getCurrentAddr(index) {
return index.currentSrc();
}
//获取当前播放时间
function getCurrentTime(index) {
return index.currentTime();
}
//获取当前网络状态
function networkState(index) {
return index.networkState();
}
//修改播放地址
function setsrc(index, url, type) {
index.src({
type : type,
src : url
});
}
//重载播放器
function reset(index) {
index.reset();
index.load();
}
//播放
function play(index) {
index.play();
}
//暂停
function pause(index) {
index.pause();
}
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<title>play.html</title>
<meta charset="utf-8">
<link href="player/video-js.css" rel="stylesheet" type="text/css">
<script src="player/video.js"></script>
<script type="text/javascript">
videojs.options.flash.swf = "player/video-js.swf";
/*
* 根据videoJS官方文档编写的播放器常用操作
* 修改时间:2016年6月27日
* 修 改 人: wangliang
* ++修改播放地址
* ++重载播放器
* ++获取播放器网络状态
*/
//获取当前类型
function getCurrentType(idnex){
return idnex.currentType();
}
//获取当前播放地址
function getCurrentAddr(index){
return index.currentSrc();
}
//获取当前播放时间
function getCurrentTime(index){
return index.currentTime();
}
//获取当前网络状态
function networkState(index){
return index.networkState();
}
//修改播放地址
function setsrc(index,url,type){
index.src({ type: type, src: url });
}
//重载播放器
function reset(index){
index.reset();
index.load();
}
//播放
function play(index){
index.play();
}
//暂停
function pause(index){
index.pause();
}
</script>
<style type="text/css">
#videos div{
float:left;
}
</style>
</head>
<body>
<h4>视频一</h4>
<input id="videoInput1" type="text" value="" />
<input type="button" id="videoButton1" value="播放1" onclick="buttonclick(this);"/>
<h4>视频二</h4>
<input id="videoInput2" type="text" value=""/>
<input type="button" id="videoButton2" value="播放2" onclick="buttonclick(this);"/>
<h4>视频三</h4>
<input id="videoInput3" type="text" value=""/>
<input type="button" id="videoButton3" value="播放3" onclick="buttonclick(this);"/>
<h4>视频四</h4>
<input id="videoInput4" type="text" value=""/>
<input type="button" id="videoButton4" value="播放4" onclick="buttonclick(this);"/>
<div id="videos">
<div>
<video id="player1" class="video-js vjs-default-skin" data-setup="{}"
controls="" width="320" height="180">
<source src="http://192.168.30.21/test1.video.mp4" type="video/mp4">
</video>
</div>
<div>
<video id="player2" class="video-js vjs-default-skin" data-setup="{}"
controls="" width="320" height="180">
<source src="rtmp://192.168.30.21/live/test3" type="rtmp/flv" />
</video>
</div>
<div>
<video id="player3" class="video-js vjs-default-skin" data-setup="{}"
controls="" width="320" height="180">
<source src="rtmp://192.168.30.21/live/test2" type="rtmp/flv" />
</video>
</div>
<div>
<video id="player4" class="video-js vjs-default-skin" data-setup="{}"
controls="" width="320" height="180">
<source src="rtmp://192.168.30.21/live/test2" type="rtmp/flv" />
</video>
</div>
</div>
</body>
<script type="text/javascript">
var p1=videojs('player1');
play(p1);
var p2=videojs('player2');
play(p2);
var p3=videojs('player3');
play(p3);
var p4=videojs('player4');
play(p4);
//修改播放地址并播放
function writeAddressAndPlay(index,url){
console.info("设置播放地址");
setsrc(index,"rtmp://192.168.30.21/live/"+url,"rtmp/flv");
console.info("播放视频");
play(index);
}
//切换播放源动作
function buttonclick(index){
alert(index.id);
var value;
var player;
if(index.id=="videoButton1"){
value=get("videoInput1").value;
if(value==""||value==null){
return;
}
player=p1;
}else if(index.id=="videoButton2"){
value=get("videoInput2").value;
if(value==""||value==null){
return;
}
player=p2;
}else if(index.id=="videoButton3"){
value=get("videoInput3").value;
if(value==""||value==null){
return;
}
player=p3;
}else if(index.id=="videoButton4"){
value=get("videoInput4").value;
if(value==""||value==null){
return;
}
player=p4;
}
writeAddressAndPlay(player,value);
}
//获取dom
function get(index){
return document.getElementById(index);
}
</script>
</html>
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
videojs.addLanguage("ar",{
"Play": "تشغيل",
"Pause": "ايقاف",
"Current Time": "الوقت الحالي",
"Duration Time": "Dauer",
"Remaining Time": "الوقت المتبقي",
"Stream Type": "نوع التيار",
"LIVE": "مباشر",
"Loaded": "تم التحميل",
"Progress": "التقدم",
"Fullscreen": "ملء الشاشة",
"Non-Fullscreen": "غير ملء الشاشة",
"Mute": "صامت",
"Unmute": "غير الصامت",
"Playback Rate": "معدل التشغيل",
"Subtitles": "الترجمة",
"subtitles off": "ايقاف الترجمة",
"Captions": "التعليقات",
"captions off": "ايقاف التعليقات",
"Chapters": "فصول",
"You aborted the media playback": "لقد ألغيت تشغيل الفيديو",
"A network error caused the media download to fail part-way.": "تسبب خطأ في الشبكة بفشل تحميل الفيديو بالكامل.",
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "لا يمكن تحميل الفيديو بسبب فشل في الخادم أو الشبكة ، أو فشل بسبب عدم امكانية قراءة تنسيق الفيديو.",
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "تم ايقاف تشغيل الفيديو بسبب مشكلة فساد أو لأن الفيديو المستخدم يستخدم ميزات غير مدعومة من متصفحك.",
"No compatible source was found for this media.": "فشل العثور على أي مصدر متوافق مع هذا الفيديو.",
"Play Video": "تشغيل الفيديو",
"Close": "أغلق",
"Modal Window": "نافذة مشروطة",
"This is a modal window": "هذه نافذة مشروطة",
"This modal can be closed by pressing the Escape key or activating the close button.": "يمكن غلق هذه النافذة المشروطة عن طريق الضغط على زر الخروج أو تفعيل زر الإغلاق",
", opens captions settings dialog": ", تفتح نافذة خيارات التعليقات",
", opens subtitles settings dialog": ", تفتح نافذة خيارات الترجمة",
", selected": ", مختار"
});
\ No newline at end of file
videojs.addLanguage("ba",{
"Play": "Pusti",
"Pause": "Pauza",
"Current Time": "Trenutno vrijeme",
"Duration Time": "Vrijeme trajanja",
"Remaining Time": "Preostalo vrijeme",
"Stream Type": "Način strimovanja",
"LIVE": "UŽIVO",
"Loaded": "Učitan",
"Progress": "Progres",
"Fullscreen": "Puni ekran",
"Non-Fullscreen": "Mali ekran",
"Mute": "Prigušen",
"Unmute": "Ne-prigušen",
"Playback Rate": "Stopa reprodukcije",
"Subtitles": "Podnaslov",
"subtitles off": "Podnaslov deaktiviran",
"Captions": "Titlovi",
"captions off": "Titlovi deaktivirani",
"Chapters": "Poglavlja",
"You aborted the media playback": "Isključili ste reprodukciju videa.",
"A network error caused the media download to fail part-way.": "Video se prestao preuzimati zbog greške na mreži.",
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Video se ne može reproducirati zbog servera, greške u mreži ili je format ne podržan.",
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Reprodukcija videa je zaustavljenja zbog greške u formatu ili zbog verzije vašeg pretraživača.",
"No compatible source was found for this media.": "Nije nađen nijedan kompatibilan izvor ovog videa."
});
\ No newline at end of file
videojs.addLanguage("bg",{
"Play": "Възпроизвеждане",
"Pause": "Пауза",
"Current Time": "Текущо време",
"Duration Time": "Продължителност",
"Remaining Time": "Оставащо време",
"Stream Type": "Тип на потока",
"LIVE": "НА ЖИВО",
"Loaded": "Заредено",
"Progress": "Прогрес",
"Fullscreen": "Цял екран",
"Non-Fullscreen": "Спиране на цял екран",
"Mute": "Без звук",
"Unmute": "Със звук",
"Playback Rate": "Скорост на възпроизвеждане",
"Subtitles": "Субтитри",
"subtitles off": "Спряни субтитри",
"Captions": "Аудио надписи",
"captions off": "Спряни аудио надписи",
"Chapters": "Глави",
"You aborted the media playback": "Спряхте възпроизвеждането на видеото",
"A network error caused the media download to fail part-way.": "Грешка в мрежата провали изтеглянето на видеото.",
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Видеото не може да бъде заредено заради проблем със сървъра или мрежата или защото този формат не е поддържан.",
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Възпроизвеждането на видеото беше прекъснато заради проблем с файла или защото видеото използва опции които браузърът Ви не поддържа.",
"No compatible source was found for this media.": "Не беше намерен съвместим източник за това видео."
});
\ No newline at end of file
videojs.addLanguage("ca",{
"Play": "Reproducció",
"Pause": "Pausa",
"Current Time": "Temps reproduït",
"Duration Time": "Durada total",
"Remaining Time": "Temps restant",
"Stream Type": "Tipus de seqüència",
"LIVE": "EN DIRECTE",
"Loaded": "Carregat",
"Progress": "Progrés",
"Fullscreen": "Pantalla completa",
"Non-Fullscreen": "Pantalla no completa",
"Mute": "Silencia",
"Unmute": "Amb so",
"Playback Rate": "Velocitat de reproducció",
"Subtitles": "Subtítols",
"subtitles off": "Subtítols desactivats",
"Captions": "Llegendes",
"captions off": "Llegendes desactivades",
"Chapters": "Capítols",
"You aborted the media playback": "Heu interromput la reproducció del vídeo.",
"A network error caused the media download to fail part-way.": "Un error de la xarxa ha interromput la baixada del vídeo.",
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "No s'ha pogut carregar el vídeo perquè el servidor o la xarxa han fallat, o bé perquè el seu format no és compatible.",
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "La reproducció de vídeo s'ha interrumput per un problema de corrupció de dades o bé perquè el vídeo demanava funcions que el vostre navegador no ofereix.",
"No compatible source was found for this media.": "No s'ha trobat cap font compatible amb el vídeo."
});
\ No newline at end of file
videojs.addLanguage("cs",{
"Play": "Přehrát",
"Pause": "Pauza",
"Current Time": "Aktuální čas",
"Duration Time": "Doba trvání",
"Remaining Time": "Zbývající čas",
"Stream Type": "Stream Type",
"LIVE": "ŽIVĚ",
"Loaded": "Načteno",
"Progress": "Stav",
"Fullscreen": "Celá obrazovka",
"Non-Fullscreen": "Zmenšená obrazovka",
"Mute": "Ztlumit zvuk",
"Unmute": "Přehrát zvuk",
"Playback Rate": "Rychlost přehrávání",
"Subtitles": "Titulky",
"subtitles off": "Titulky vypnuty",
"Captions": "Popisky",
"captions off": "Popisky vypnuty",
"Chapters": "Kapitoly",
"You aborted the media playback": "Přehrávání videa je přerušeno.",
"A network error caused the media download to fail part-way.": "Video nemohlo být načteno, kvůli chybě v síti.",
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Video nemohlo být načteno, buď kvůli chybě serveru nebo sítě nebo proto, že daný formát není podporován.",
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Váš prohlížeč nepodporuje formát videa.",
"No compatible source was found for this media.": "Špatně zadaný zdroj videa."
});
\ No newline at end of file
videojs.addLanguage("da",{
"Play": "Afspil",
"Pause": "Pause",
"Current Time": "Aktuel tid",
"Duration Time": "Varighed",
"Remaining Time": "Resterende tid",
"Stream Type": "Stream-type",
"LIVE": "LIVE",
"Loaded": "Indlæst",
"Progress": "Status",
"Fullscreen": "Fuldskærm",
"Non-Fullscreen": "Luk fuldskærm",
"Mute": "Uden lyd",
"Unmute": "Med lyd",
"Playback Rate": "Afspilningsrate",
"Subtitles": "Undertekster",
"subtitles off": "Uden undertekster",
"Captions": "Undertekster for hørehæmmede",
"captions off": "Uden undertekster for hørehæmmede",
"Chapters": "Kapitler",
"You aborted the media playback": "Du afbrød videoafspilningen.",
"A network error caused the media download to fail part-way.": "En netværksfejl fik download af videoen til at fejle.",
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Videoen kunne ikke indlæses, enten fordi serveren eller netværket fejlede, eller fordi formatet ikke er understøttet.",
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Videoafspilningen blev afbrudt på grund af ødelagte data eller fordi videoen benyttede faciliteter som din browser ikke understøtter.",
"No compatible source was found for this media.": "Fandt ikke en kompatibel kilde for denne media."
});
\ No newline at end of file
videojs.addLanguage("de",{
"Play": "Wiedergabe",
"Pause": "Pause",
"Current Time": "Aktueller Zeitpunkt",
"Duration Time": "Dauer",
"Remaining Time": "Verbleibende Zeit",
"Stream Type": "Streamtyp",
"LIVE": "LIVE",
"Loaded": "Geladen",
"Progress": "Status",
"Fullscreen": "Vollbild",
"Non-Fullscreen": "Kein Vollbild",
"Mute": "Ton aus",
"Unmute": "Ton ein",
"Playback Rate": "Wiedergabegeschwindigkeit",
"Subtitles": "Untertitel",
"subtitles off": "Untertitel aus",
"Captions": "Untertitel",
"captions off": "Untertitel aus",
"Chapters": "Kapitel",
"You aborted the media playback": "Sie haben die Videowiedergabe abgebrochen.",
"A network error caused the media download to fail part-way.": "Der Videodownload ist aufgrund eines Netzwerkfehlers fehlgeschlagen.",
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Das Video konnte nicht geladen werden, da entweder ein Server- oder Netzwerkfehler auftrat oder das Format nicht unterstützt wird.",
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Die Videowiedergabe wurde entweder wegen eines Problems mit einem beschädigten Video oder wegen verwendeten Funktionen, die vom Browser nicht unterstützt werden, abgebrochen.",
"No compatible source was found for this media.": "Für dieses Video wurde keine kompatible Quelle gefunden.",
"Play Video": "Video abspielen",
"Close": "Schließen",
"Modal Window": "Modales Fenster",
"This is a modal window": "Dies ist ein modales Fenster",
"This modal can be closed by pressing the Escape key or activating the close button.": "Durch Drücken der Esc-Taste bzw. Betätigung der Schaltfläche \"Schließen\" wird dieses modale Fenster geschlossen.",
", opens captions settings dialog": ", öffnet Einstellungen für Untertitel",
", opens subtitles settings dialog": ", öffnet Einstellungen für Untertitel",
", selected": " (ausgewählt)"
});
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册