ExtJS在语法上用起来和JS还是有一定区别,初始用起来很不习惯,但总起来说还是把视频播放的功能做出来了,分享出来,以供参考。
使用ExtJS调用mediaplayer其实还是用的<embed>标签或者使用<object></object>标签,在我参考不少文章中,有将两者一起使用的(难道做出来后你的画面不会出现两个视频窗口吗),但其实使用其中一种即可,而且属性参数的设置是都有的,都可以进行设置,下面先介绍两种写法的基本属性设置。
1.<embed>
<embed src="E:\\1.mov" id="mediaplayer2" autostart="true" showcontrols="false" showstatusbar="0" bgcolor="white" align="middle" currentPosition="0" width="500" height="300">
首先src:读取视频文件的路径,mediaplayer支持多种视频文件的播放,但貌似flv的不支持。
id的名字自己起,方便后面对视频进行控制.
autostart:是否自动播放。
showcontrols:是否显示播放、快进等控制按钮。
showstatusbar:是否显示播放进度等样式。
currentPosition:当前播放的起始位置,0代表从头播放,单位是秒。当然也可以进行小时分钟的设置,这里不做探讨。
其他一些基本样式属性就不做介绍了。
2.<object>
<object height=300 width=500 align=center classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95">
<param name="filename" value="E:\\test.mp4">
<param name="showcontrols" value="false" />
<param name="showstatusbar" value="1" />
<param name="defaultFrame" value="" />
<param name="playCount" value="1" />
<param name="autoStart" value="-1"" />
<param name="currentPosition" value="180" />
<param name="invokeURLs" value="-1" />
<param name="baseURL" value="" />
<param name="volume" value="100" />
<param name="stretchToFit" value="-1" />
<param name="uiMode" value="mini" />'
<param name="stretchToFit" value="0" />
<param name="windowlessVideo" value="0" />
<param name="enabled" value="-1"" />'
<param name="enableContextMenu" value="-1" />
</object>'
可以看到,一些基本属性的设置是一样的,这里可以自己进行尝试,喜欢用那种自己选。
另外使用<object >标签时注意有一个classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95">设置,这个其实是设置不同版本的mediaplayer的,而且引用的版本如果不对的话有时在你的电脑上视频画面是显示不出来的。如果用这个方法显示不出来,可以尝试换几个版本号试一下。
3.获取播放时长
如果仅仅是简单的播放,那么只要用上述两种标签写上文件路径写对就可以播放了。
播放时长的获取其实很简单,调用的是一个对象的方法。
function getInfo(nn) {
var pl = document.getElementById(nn);
//var pl = document.getElementById("mediaplayer");
var time = 0;
time = pl.duration;
}
其中参数nn代表的是标签里面的id。
4.设置播放起始时间
function getInfo(nn) {
var pl = document.getElementById(nn);
//var pl = document.getElementById("mediaplayer");
var realtime = 0;
var time = 0;
time = pl.duration;
realtime = time.toString().split('.')[0];
realtime -= 5;
if (realtime > 0)
pl.currentPosition = realtime;
}
time = pl.duration;获取的是以秒记得总时长,可以根据自己需要设定,
pl.currentPosition = realtime;
realtime可以自己设置,此处就是设置起始时间的。
下面是一份我自己的Extjs的四个视频画面播放的代码:
Ext.onReady(function () {
//提示
Ext.QuickTips.init();
//获取视频播放时长
function getInfo(nn) {
var pl = document.getElementById(nn);
//var pl = document.getElementById("mediaplayer");
var realtime = 0;
var time = 0;
time = pl.duration;
realtime = time.toString().split('.')[0];
realtime -= 5;
if (realtime > 0)
pl.currentPosition = realtime;
}
//视频画面1
var video1 = Ext.create('Ext.panel.Panel', {
id: 'media',
html:
'<embed src="E:\\test.mp4" id="mediaplayer" autostart="true" showcontrols="false" showstatusbar="0" bgcolor="white" align="middle" currentPosition="0" width="500" height="300">',
listeners: {
afterRender: function () {
//setTimeout(getInfo, 1000);
setTimeout(function () { getInfo("mediaplayer"); }, 1000);
}
}
});
//视频画面2
var video2 = Ext.create('Ext.panel.Panel', {
id: 'media1',
html:
'<embed src="D:\\1.avi" id="mediaplayer1" autostart="true" showcontrols="false" showstatusbar="0" bgcolor="white" align="middle" currentPosition="0" width="500" height="300">',
listeners: {
afterRender: function () {
//setTimeout(getInfo, 1000);
setTimeout(function () { getInfo("mediaplayer1"); }, 1000);
}
}
});
//视频画面3
var video3 = Ext.create('Ext.panel.Panel', {
id: 'media2',
html:
'<embed src="E:\\1.mov" id="mediaplayer2" autostart="true" showcontrols="false" showstatusbar="0" bgcolor="white" align="middle" currentPosition="0" width="500" height="300">',
listeners: {
afterRender: function () {
//setTimeout(getInfo, 1000);
setTimeout(function () { getInfo("mediaplayer2"); }, 1000);
}
}
});
//视频画面4
var video4 = Ext.create('Ext.panel.Panel', {
id: 'media3',
html:
'<embed src="E:\\1.mov" id="mediaplayer3" autostart="true" showcontrols="false" showstatusbar="0" bgcolor="white" align="middle" currentPosition="0" width="500" height="300">',
listeners: {
afterRender: function () {
//setTimeout(getInfo, 1000);
setTimeout(function () { getInfo("mediaplayer3"); }, 1000);
}
}
});
////////////////////////////////////////////////////
/////////////////////页面总布局///////////////////
////////////////////////////////////////////////////
var viewport = Ext.create('Ext.container.Viewport', {
layout: 'border',
items: [
{
region: 'center',
border: 0,
bodyStyle: 'padding: 6px;',
layout: 'border',
items: [
{
region: 'west',
width: 250,
border: 0,
layout: 'fit',
collapsible: true,
collapsed: false, //控制页面加载时菜单是否展开
split: true,
items: tree1
},
{
region: 'center',
border: 0,
align: 'stretch',
layout: 'border',
//items:test
items: [
{
region: 'north',
border: 0,
height: '50%',
layout: 'border',
align: 'stretch',
split: true,
items: [
{
region: 'center',
height:'100%',
border: 0,
layout: {
xtype: 'box',
align: 'stretch'
},
items: video1
},
{
region: 'east',
border: 0,
width: '50%',
split: true,
layout: 'fit',
align: 'stretch',
items: video2
}
]
},
{
region: 'center',
border: 0,
layout: 'border',
split: true,
items: [
{
region: 'center',
border: 0,
layout: 'fit',
items: video3
},
{
region: 'east',
border: 0,
width: '50%',
split: true,
layout: 'fit',
items: video4
}
]
}
]
}
]
}]
});
});