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及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2024/10/21