zyPlayVideo
来自于:勇可可立即使用
基础功能
窗口模式
其它接口
论坛示例
为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码供您参考。
概述
模块简介
本模块封装 MediaPlayer、IjkPlayer、ExoPlayer等解码器的视频播放器,模块自带UI,可自定义所有按钮和样式,支持解码方案的切换,支持倍速播放,支持调整画面显示比例,支持圆角处理,边缘阴影效果,支持切换到window播放,支持手势控制音量,量度,进度等功能。也可以直接使用默认界面,如有其它特殊修改需求也可以企鹅联系我定制:1161277121
Android云编译最低版本为4.0.3。
模块接口
open
打开播放器
open({params}, callback(ret))
params
rect:
- 类型:对象
- 描述:(可选项)打开开屏区域 全为0或不写 则打开全屏
- 内部字段:
{
x:0,
y:0,
w:0,
h:0
}
fixedOn:
- 类型:字符串类型
- 描述:(可选项)模块视图添加到指定 frame 的名字(只指 frame,传 window 无效)
- 默认值:模块依附于当前 window
fixed:
- 类型:布尔
- 描述:(可选项)模块是否不随所属 window 或 frame 滚动
- 默认值:true(不随之滚动)
url:
- 类型:字符串类型
- 描述:(必填)视频资源地址,支持网络和本地路径(fs://,widget://)
title:
- 类型:字符串类型
- 描述:(可选项)顶部标题文字
isFullVideo:
- 类型:布尔
- 描述:(可选项)是否默认全屏播放 全屏时rect无效
- 默认值:false
landscape_reverse:
- 类型:布尔
- 描述:(可选项)是否反向全屏
- 默认值:false
isWindowPlay:
- 类型:布尔
- 描述:(可选项)是否默认窗口播放 全屏时窗口播放无效
- 默认值:false
renderType:
- 类型:数字类型
- 描述:(可选项)设置默认渲染类型 0、TextureView 1、SurfaceView
- 默认值:0
decoder:
- 类型:数字类型
- 描述:(可选项)设置默认解码器 0、MediaPlayer 1、IjkPlayer 2、ExoPlayer
- 默认值:0
speed:
- 类型:数字类型
- 描述:(可选项)设置视频播放倍数 一般是(0.5~3.0)
- 默认值:1
volume:
- 类型:布尔
- 描述:(可选项)是否默认开启声音
- 默认值:true
defaultConfig:
- 类型:JSON 对象
- 描述:(可选项)默认状态下的配置
- 内部字段:
{//可自定义图片的参数有 back、play、pause、full(全屏时需设置退出全屏图片)
roundRectShape:0,//设置圆角(默认0)(设置仅安卓5.0.1及以上版本有效)
aspectRatio:"FIT",//画面比例 16_9、4_3、FILL、MATCH、FIT、ORIGIN(默认FIT)
controllerTop:{show:true,h:36},//显示顶部包括返回和标题 h高度(默认36)show是否显示(默认true)
controllerBack:{show:true,back:""},//显示顶部返回(Top为false时 此字段无效)show是否显示(默认全屏为true 普通和窗口为false) back的图片 宽高(默认36)高不会超过top的高度 padding(默认都是8) margin(默认l、r是5 其它0) background背景(默认透明)
controllerTitle:{show:true,size:15,color:"#FFFFFF",padding:{l:0,t:0,r:0,b:0}},//显示顶部标题(Top为false时 此字段无效)show是否显示(默认true) size字体大小(默认15) color字体颜色(默认白色) padding margin(默认都是0)
controllerBottom:{show:true,h:36},//显示底部包括播放 当前播放时间 进度条 总时间 全屏 show是否显示(默认true) h高度(默认36)
controllerPlayState:{show:true,play:"",pause:"",w:36,h:36,padding:{l:10,t:10,r:10,b:10},margin:{l:5,t:0,r:5,b:0}},//显示播放、暂停(Bottom为false时 此字段无效)show是否显示(默认true) play的图片和pause的图片 宽高(默认36)高不会超过bottom的高度 padding(默认都是10) margin(默认l、r是5 其它0) background背景(默认透明)
controllerCurrTime:{show:true,size:12,color:"#FFFFFF"},//显示当前播放时间(Bottom为false时 此字段无效)show是否显示(默认true) size字体大小(默认12) color字体颜色(默认白色) padding margin(默认都是0)
controllerSeekBar:{show:true,h:4,background:"#33FFFFFF",progress:"#F00",secondaryProgress:"#33FFFFFF",thumb:"#F00"},//显示控制进度条(Bottom为false时 此字段无效)show是否显示(默认true) background条的背景(默认33FFFFFF) progress播放过后的颜色(默认F0F0F0) secondaryProgress缓冲的颜色(默认33FFFFFF) thumb圆圈的颜色(默认#FFF)(设置仅安卓5.0.1及以上版本有效)
controllerTotalTime:{show:true,size:12,color:"#FFFFFF",margin:{}},//显示总时长(Bottom为false时 此字段无效)show是否显示(默认true) size字体大小(默认12) color字体颜色(默认白色) padding margin(默认都是0)
controllerFull:{show:true,full:"",w:36,h:36,padding:{l:8,t:8,r:8,b:8},margin:{l:5,t:0,r:5,b:0},background:"#00000000"},//显示全屏(Bottom为false时 此字段无效)show是否显示(窗口为false 普通和全屏为true) 自定义默认图 宽高(默认36)高不会超过bottom的高度 padding(默认都是8) margin(默认l、r是5 其它0) background背景(默认透明)
controllerBottomBar:{show:true,h:2,background:"#33FFFFFF",progress:"#8367fe",secondaryProgress:"#33FFFFFF"},//显示播放中进度条(底下的一小截) show是否显示(默认true) h高度(默认2) background条的背景(默认33FFFFFF) progress播放过后的颜色(默认8367fe) secondaryProgress缓冲的颜色(默认33FFFFFF)(设置仅安卓5.0.1及以上版本有效)
showController:true,//是否默认先展开控制视图 否则手动点击打开
};
fullConfig:
- 类型:JSON 对象
- 描述:(可选项)全屏下配置
- 内部字段:
{
//同配置配置一样 具体写法参考示例demo页面
//roundRectShape 圆角全屏无效
}
windowConfig:
- 类型:JSON 对象
- 描述:(可选项)窗口模式下配置
- 内部字段:
{
//同配置配置一样 具体写法参考示例demo页面 多出如下参数
elevationShadow:20,//窗口的阴影
x:api.frameWidth*0.1,//打开窗口x点 默认手机宽度10%
y:70,//y点 默认70
w:api.frameWidth*0.8,//宽度 默认手机宽度80%
h:(api.frameWidth*0.8)*9/16 //默认宽的 9/16
}
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true, //成功
result:"",//返回类型 open打开成功 onAssistHandle事件处理 onPlayerEvent事件回调
code:"" //具体代码位请看附加文档: https://docs.qq.com/doc/DTkpiZEp4YkdwZ0Fj
}
示例代码
var config = {//可自定义图片的参数有 back、play、pause、full(全屏时需设置退出全屏图片)
roundRectShape:0,//设置圆角(默认0)(设置仅安卓5.0.1及以上版本有效)
aspectRatio:"FIT",//画面比例 16_9、4_3、FILL、MATCH、FIT、ORIGIN(默认FIT)
controllerTop:{show:true,h:36},//显示顶部包括返回和标题 h高度(默认36)show是否显示(默认true)
controllerBack:{show:true,back:""},//显示顶部返回(Top为false时 此字段无效)show是否显示(默认全屏为true 普通和窗口为false) back的图片 宽高(默认36)高不会超过top的高度 padding(默认都是8) margin(默认l、r是5 其它0) background背景(默认透明)
controllerTitle:{show:true,size:15,color:"#FFFFFF",padding:{l:0,t:0,r:0,b:0}},//显示顶部标题(Top为false时 此字段无效)show是否显示(默认true) size字体大小(默认15) color字体颜色(默认白色) padding margin(默认都是0)
controllerBottom:{show:true,h:36},//显示底部包括播放 当前播放时间 进度条 总时间 全屏 show是否显示(默认true) h高度(默认36)
controllerPlayState:{show:true,play:"",pause:"",w:36,h:36,padding:{l:10,t:10,r:10,b:10},margin:{l:5,t:0,r:5,b:0}},//显示播放、暂停(Bottom为false时 此字段无效)show是否显示(默认true) play的图片和pause的图片 宽高(默认36)高不会超过bottom的高度 padding(默认都是10) margin(默认l、r是5 其它0) background背景(默认透明)
controllerCurrTime:{show:true,size:12,color:"#FFFFFF"},//显示当前播放时间(Bottom为false时 此字段无效)show是否显示(默认true) size字体大小(默认12) color字体颜色(默认白色) padding margin(默认都是0)
controllerSeekBar:{show:true,h:4,background:"#33FFFFFF",progress:"#F0F0F0",secondaryProgress:"#33FFFFFF",thumb:"#FFF"},//显示控制进度条(Bottom为false时 此字段无效)show是否显示(默认true) background条的背景(默认33FFFFFF) progress播放过后的颜色(默认F0F0F0) secondaryProgress缓冲的颜色(默认33FFFFFF) thumb圆圈的颜色(默认#FFF)(设置仅安卓5.0.1及以上版本有效)
controllerTotalTime:{show:true,size:12,color:"#FFFFFF",margin:{}},//显示总时长(Bottom为false时 此字段无效)show是否显示(默认true) size字体大小(默认12) color字体颜色(默认白色) padding margin(默认都是0)
controllerFull:{show:true,full:"",w:36,h:36,padding:{l:8,t:8,r:8,b:8},margin:{l:5,t:0,r:5,b:0},background:"#00000000"},//显示全屏(Bottom为false时 此字段无效)show是否显示(窗口为false 普通和全屏为true) 自定义默认图 宽高(默认36)高不会超过bottom的高度 padding(默认都是8) margin(默认l、r是5 其它0) background背景(默认透明)
controllerBottomBar:{show:true,h:2,background:"#33FFFFFF",progress:"#8367fe",secondaryProgress:"#33FFFFFF"},//显示播放中进度条(底下的一小截) show是否显示(默认true) h高度(默认2) background条的背景(默认33FFFFFF) progress播放过后的颜色(默认8367fe) secondaryProgress缓冲的颜色(默认33FFFFFF)(设置仅安卓5.0.1及以上版本有效)
showController:true,//是否默认先展开控制视图 否则手动点击打开
};
if(false){//直播信号时隐藏时间进度条
config.controllerCurrTime.show = false;
config.controllerSeekBar.show = false;
config.controllerTotalTime.show = false;
}
var defaultConfig = JSON.parse(JSON.stringify(config));//复制 不改变原对象
var fullConfig = JSON.parse(JSON.stringify(config));//复制 不改变原对象
var windowConfig = JSON.parse(JSON.stringify(config));//复制 不改变原对象
//默认没有返回按钮 给标题加个paddingLeft
defaultConfig.controllerTitle.padding.l = 10;
//修改全屏模式下的参数
fullConfig.controllerBack.show = true;//显示返回
//修改窗口模式下的参数
windowConfig.controllerFull.show = false;//隐藏全屏 窗口最好隐藏全屏 不然用户home到桌面 按全屏会出问题
windowConfig.controllerBack.show = false;//隐藏返回
//window 特有参数
windowConfig.roundRectShape = 20;//窗口圆角
windowConfig.elevationShadow = 20;//窗口的阴影
windowConfig.x = api.frameWidth*0.1;//打开窗口x点 默认手机宽度10%
windowConfig.y = 70;//默认70
windowConfig.w = api.frameWidth*0.8;//默认手机宽度80%
windowConfig.h = (api.frameWidth*0.8)*9/16;//默认宽的 9/16
//窗口没有返回按钮 给标题加个paddingLeft
windowConfig.controllerTitle.padding.l = 10;
//窗口默认没有全屏 给总时间加个距右
windowConfig.controllerTotalTime.margin.r = 15;
var param = {
rect:{ //打开区域
x:0,
y:api.safeArea.top,
w:api.frameWidth,
h:220
},
fixedOn:api.frameName,
fixed:true,
url:_addMsg.url,
title:_addMsg.title,
isFullVideo:false,//是否默认全屏播放 全屏时rect无效
isWindowPlay:false,//是否默认窗口播放 全屏时窗口播放无效
landscape_reverse:false,//反向全屏
renderType:0,//设置渲染类型 0、TextureView 1、SurfaceView 默认0
decoder:_addMsg.decoder || 0,//解码器 0、MediaPlayer 1、IjkPlayer 2、ExoPlayer 默认0
speed:1,//倍数 默认1
volume:true,//是否开启声音 默认true
defaultConfig:defaultConfig,//默认状态下的配置
fullConfig:fullConfig,//全屏下配置 共用默认配置
windowConfig:windowConfig,//窗口下配置
controllerLoading:{show:true,w:36,h:36,loading:"widget://image/icon_play.png",size:14,text:""},//show是否显示加载中视图(默认true) 图片宽高默认36 loading自定义图片 size字体大小(默认14) text自定义loading文字(默认当前网速)
controllerGesture:{show:true},//show是否开启手势控制 音量 量度 进度条视图(默认true)
controller:{show:true},//show是否开启播放控制视图(默认true)
controllerComplete:{show:true},//show是否开启结束重播视图(默认true)
controllerError:{show:true},//show是否开启网络出错提示视图(默认true)
controllerClose:{show:false,w:25,h:25,close:"",margin:{t:5,r:5}},//show是否开启右上角X视图(默认false) 打开窗口模式下自动开启 宽高默认25 自定义图片 padding(默认0) margin(t、r是10,其它0) background背景默认22000000
};
zyPlayVideo.open(param,function(ret){
if(ret.status){
//播放器的事件处理 以下事件全部由js层处理 可更换图片高度集成其它需求
if(ret.result == "onAssistHandle"){
switch(ret.code){
case "-100"://顶部左边返回
case "-101"://窗口模式下的X视图
keyBack();
break;
case "-104"://点击了界面上的屏幕切换 在当前应用上才切换(窗口模式下切换会出问题。)
if(zyPlayVideo.isTopActivity()){
zyPlayVideo.setFull({full:!zyPlayVideo.isFull()});
}
break;
}
}
//更多回调请看附加文档: https://docs.qq.com/doc/DTkpiZEp4YkdwZ0Fj
}
console.log("zyPlayVideo:"+JSON.stringify(ret));
});
可用性
Android系统
可提供的1.0.0及更高版本
close
关闭视频
close()
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
zyPlayVideo.close();
可用性
Android系统
可提供的1.0.0及更高版本
hide
隐藏视频
hide()
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
zyPlayVideo.hide();
可用性
Android系统
可提供的1.0.0及更高版本
show
显示已隐藏视频
show()
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
zyPlayVideo.show();
可用性
Android系统
可提供的1.0.0及更高版本
pause
暂停播放
pause()
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
zyPlayVideo.pause();
可用性
Android系统
可提供的1.0.0及更高版本
resume
恢复播放
resume()
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
zyPlayVideo.resume();
可用性
Android系统
可提供的1.0.0及更高版本
isPlaying
是否播放中
isPlaying()
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
alert(zyPlayVideo.isPlaying());
可用性
Android系统
可提供的1.0.0及更高版本
resetURL
打开时更换播放地址
resetURL({params}, callback(ret))
params
url:
- 类型:字符串类型
- 描述:(必填)视频资源地址,支持网络和本地路径(fs://,widget://)
title:
- 类型:字符串类型
- 描述:(可选项)顶部标题文字
decoder:
- 类型:数字类型
- 描述:(可选项)设置默认解码器 0、MediaPlayer 1、IjkPlayer 2、ExoPlayer
- 默认值:play设置的解码器
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
var param = {
url:"http://7o50kb.com2.z0.glb.qiniucdn.com/c1.1.mp4",
title:"课程",
decoder:1
};
zyPlayVideo.resetURL(param);
可用性
Android系统
可提供的1.0.0及更高版本
isFull
是否全屏播放
isFull()
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
alert(zyPlayVideo.isFull());
可用性
Android系统
可提供的1.0.0及更高版本
setFull
设置是否全屏
setFull({params}, callback(ret))
params
full:
- 类型:字符串类型
- 描述:(必填)是否全屏
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
var param = {
full:true|false
};
zyPlayVideo.setFull(param);
可用性
Android系统
可提供的1.0.0及更高版本
getDuration
获取视频总时长(毫秒)
getDuration()
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
alert(zyPlayVideo.getDuration());
可用性
Android系统
可提供的1.0.0及更高版本
getPosition
获取视频当前播放时长(毫秒)
getPosition()
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
alert(zyPlayVideo.getPosition());
可用性
Android系统
可提供的1.0.0及更高版本
seekTo
跳转到指定位置(毫秒)
seekTo({params}, callback(ret))
params
mac:
- 类型:字符串类型
- 描述:(必填)跳转播放位置 单位(毫秒)
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
var param = {
mac:60000//1分钟 60*1000
};
zyPlayVideo.seekTo(param);
可用性
Android系统
可提供的1.0.0及更高版本
setRenderType
设置视频渲染类型
setRenderType({params}, callback(ret))
params
renderType:
- 类型:字符串类型
- 描述:(必填)设置渲染类型 0、TextureView 1、SurfaceView
- 默认值:0
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
var param = {
renderType:1
};
zyPlayVideo.setRenderType(param);
可用性
Android系统
可提供的1.0.0及更高版本
setRoundRectShape
设置视频圆角
setRoundRectShape({params}, callback(ret))
params
roundRectShape:
- 类型:数字类型
- 描述:(必填)角度
- 默认值:0
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
var param = {
roundRectShape:15
};
zyPlayVideo.setRoundRectShape(param);
可用性
Android系统
可提供的1.0.0及更高版本
setAspectRatio
设置视频画面比例
setAspectRatio({params}, callback(ret))
params
aspectRatio:
- 类型:字符串类型
- 描述:(必填) 16_9、4_3、FILL、MATCH、FIT、ORIGIN
- 默认值:FIT
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
var param = {
aspectRatio:"FILL"
};
zyPlayVideo.setAspectRatio(param);
可用性
Android系统
可提供的1.0.0及更高版本
setDecoder
设置视频解码器
setDecoder({params}, callback(ret))
params
decoder:
- 类型:数字类型
- 描述:(必填) 0、MediaPlayer 1、IjkPlayer 2、ExoPlayer
- 默认值:0
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
var param = {
decoder:0
};
zyPlayVideo.setDecoder(param);
可用性
Android系统
可提供的1.0.0及更高版本
setSpeed
设置视频倍数
setSpeed({params}, callback(ret))
params
speed:
- 类型:数字类型
- 描述:(必填) 几倍数播放 一般(0.5~3)
- 默认值:1
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
var param = {
speed:1
};
zyPlayVideo.setSpeed(param);
可用性
Android系统
可提供的1.0.0及更高版本
setVolume
设置是否开启声音
setVolume({params}, callback(ret))
params
volume:
- 类型:布尔类型
- 描述:(必填) 是否开启声音
- 默认值:true
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
var param = {
volume:true
};
zyPlayVideo.setVolume(param);
可用性
Android系统
可提供的1.0.0及更高版本
isWindowShow
是否窗口播放
isWindowShow()
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
alert(zyPlayVideo.isWindowShow());
可用性
Android系统
可提供的1.0.0及更高版本
setWindowPlay
打开窗口播放 (会自动请求权限, 返回权限失败时请手动在设置开启)
setWindowPlay(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true, //成功|失败
result:"", 失败会走回调 成功没有回调
}
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
zyPlayVideo.setWindowPlay(function(ret){
if(!ret.status){
//这里跳转设置权限页 请求权限
}
});
可用性
Android系统
可提供的1.0.0及更高版本
closeWindowPlay
关闭窗口播放
closeWindowPlay()
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
zyPlayVideo.closeWindowPlay();
可用性
Android系统
可提供的1.0.0及更高版本
isTopActivity
当前应用是否没有返回桌面 即app是否正在被用户浏览中
isTopActivity()
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
alert(zyPlayVideo.isTopActivity());
可用性
Android系统
可提供的1.0.0及更高版本
getParameter
获取播放器播放的参数
getParameter(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true, //成功
result:"", //格式请查看附加文档 https://docs.qq.com/doc/DTkpiZEp4YkdwZ0Fj
}
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
zyPlayVideo.getParameter(function(ret){
alert(JSON.stringify(JSON.parse(ret.result)));
});
可用性
Android系统
可提供的1.0.0及更高版本
removeReceiver
移除视图组件
removeReceiver({param},callback(ret))
params
name:
- 类型:字符串
- 描述:(必选项)视图组件名 loading_cover加载中 controller_cover界面控制 gesture_cover手势控制 complete_cover重播 error_cover错误重试 close_cover窗口关闭
- 默认值:无
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true, //成功|失败
result:"", //
}
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
var param = {
name:"controller_cover",//
};
zyPlayVideo.removeReceiver(param,function(ret){
if(ret.status){
alert("移除成功");
}else{
alert(ret.result);
}
});
可用性
Android系统
可提供的1.0.0及更高版本
addReceiver
增加视图组件
addReceiver({param},callback(ret))
params
name:
- 类型:字符串
- 描述:(必选项)视图组件名 loading_cover加载中 controller_cover界面控制 gesture_cover手势控制 complete_cover重播 error_cover错误重试 close_cover窗口关闭
- 默认值:无
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true, //成功|失败
result:"", //
}
示例代码
var zyPlayVideo = api.require('zyPlayVideo');
var param = {
name:"controller_cover",//
};
zyPlayVideo.addReceiver(param,function(ret){
if(ret.status){
alert("添加成功");
}else{
alert(ret.result);
}
});
可用性
Android系统
可提供的1.0.0及更高版本