neteasePlayer
来自于:AC模块工作室立即使用
open show hide close switchContentUrl isPlaying setHardwareDecoder seekTo currentPlaybackTime addEventListener showAlert
论坛示例
为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。
概述
neteasePlayer 封装了网易云视频播放器。可快进、快退设置播放位置等操作,亦可通过手势设置系统声音大小。接口可获取模块上的各种手势操作事件。使用本模块相当于open一个window。本模块通过 open 接口,打开一个纯播放器界面
功能特性
支持 HTTP、RTMP、HLS 协议的流媒体播放
支持常见的音视频文件播放(MP4、flv、MP3 等)
支持 MediaCodec 硬件解码;支持硬件解码(iOS 8.0及以上)
支持多种画面预览模式(填充,拉伸,裁剪)
支持 ARM, ARMv7a, ARM64v8a, X86 架构
支持的CPU架构:armv7、arm64、i386、x86_64
支持 Android 4.0及以上系统,支持iOS 7.0及以上系统
支持音频后台播放
可高度定制化播放器UI控件
优化 RTMP 直播首屏秒开
优化 RTMP 直播累积延时
open
打开一个自带界面的视频播放器,本播放器为全屏横屏显示,支持屏幕随设备自动旋转。用户单击播放器时,会弹出 foot 和 head 导航条,再次单击则关闭之。
open({params}, callback(ret, err))
params
title:
- 类型:字符串
- 描述:(可选项)视频标题
definition:
- 类型:数组
- 描述:(可选项)视频清晰度
- 默认:
["高清","标清","流畅"]
styles:
- 类型:JSON 对象
- 描述:(可选项)模块的样式设置
- 内部字段:
{
head:{//(可选项)JSON对象;播放器顶部导航条样式
bg: 'rgba(161,161,161,0.5)', //(可选项)字符串类型;顶部导航条背景,支持#、rgb、rgba、img;默认:rgba(161,161,161,0.5)
height: 44, //(可选项)数字类型;顶部导航条的高;默认:44
title:{
size:13, //(可选项)数字类型;顶部标题字体大小;默认:13
color:'#fff', //(可选项)字符串类型;顶部标题字体颜色;默认:#fff
width:100, //(可选项)标题的宽度,文本超过该宽度,显示...
leftMargin:10 //(可选项)距离左边控件的外边距,默认:10
},
backSize: 44, //(可选项)数字类型;顶部返回按钮大小;默认:44
backImg:'fs://img/back.png', //(可选项)字符串类型;顶部返回按钮的背景图片,要求本地路径(widget://、fs://);默认:返回小箭头图标
definition:{
bg:'#fff' //(可选项)数字类型;清晰度背景颜色;默认:'#00000'
textSize:14, //(可选项)数字类型;清晰度标签大小;默认:14
textColor:"#FFF", //(可选项)字符串类型;清晰度标签颜色,支持#、rgba、rgb;默认:#FFF
textWidth: 30, //(可选项) 数字类型;清晰度的宽度
marginRight:5 // (可选项) 数字类型;右边距,默认:5
},
playCenterBtn:{
size : 44, //(可选项)数字类型;屏幕中间的播放/暂停按钮大小;默认:44
playCenterImg:'fs://img/play.png', //(可选项)字符串类型;底部播放按钮的背景图片,要求本地路径(widget://、fs://);默认:播放按钮图标
pauseCenterImg:'fs://img/pause.png',//(可选项)字符串类型;底部暂停按钮的背景图片,要求本地路径(widget://、fs://);默认:暂停按钮图标
},
foot:{ //(可选项)JSON对象;播放器底部导航条样式
bg: 'rgba(161,161,161,0.5)', //(可选项)字符串类型;底部导航条背景,支持#、rgb、rgba、img;默认:rgba(161,161,161,0.5)
height: 44, //(可选项)数字类型;底部导航条的高;默认:44
playBtn:{
size : 44, //(可选项)数字类型;底部播放/暂停按钮大小;默认:44
playImg:'fs://img/play.png', //(可选项)字符串类型;底部播放按钮的背景图片,要求本地路径(widget://、fs://);默认:播放按钮图标
pauseImg:'fs://img/pause.png',//(可选项)字符串类型;底部暂停按钮的背景图片,要求本地路径(widget://、fs://);默认:暂停按钮图标
marginLeft:5 //(可选项)数字类型;左边距,默认:5
},
currentTimeLabel:{
textSize:14, //(可选项)数字类型;底部时间标签大小;默认:14
textColor:"#FFF", //(可选项)字符串类型;底部时间标签颜色,支持#、rgba、rgb;默认:#FFF
textWidth: 30, //(可选项)数字类型;时间标签的宽度
marginLeft:5 //(可选项)数字类型;左边距,默认:5
},
seekBar:{
sliderImg:'fs://img/slder.png', //(可选项)字符串类型;底部进度条滑块背景图片,要求本地路径(widget://、fs://);默认:滑块小图标
sliderW : 20, // 数字类型; slider 的宽度
sliderH : 20, // 数字类型; slider 的高度
progressColor: '#696969', //(可选项)字符串类型;进度条背景色,支持#、rgba、rgb;默认:#696969
progressSelected: '#76EE00', //(可选项)字符串类型;滑动后的进度条背景色,支持#、rgb、rgba;默认:#76EE00
marginLeft:5 // (可选项)数字类型;左边距,默认:5
marginRight:5 // (可选项)数字类型;右边距,默认:5
},
totalTimeLabel:{
textSize:10, //(可选项)数字类型;底部时间标签大小;默认:10
textColor:"#FFF", //(可选项)字符串类型;底部时间标签颜色,支持#、rgba、rgb;默认:#FFF
textWidth: 30, //(可选项)数字类型;时间标签的宽度
marginRight:5 //(可选项)数字类型;右边距,默认:5
},
voiceBtn:{
visible:true, //(可选项)布尔类型;是否可见,默认:true
size:44, //(可选项)数字类型;底部右边声音按钮大小;默认:44
muteImg:'widget://img/muteImg.png', //(可选项)字符串类型;底部静音按钮的背景图片,要求本地路径(widget://、fs://);默认:静音按钮图标
disMuteImg:'widget://img/disMuteImg.png', //(可选项)字符串类型;底部非静音按钮的背景图片,要求本地路径(widget://、fs://);默认:非静音按钮图标
},
fullscreenBtn:{
size:44, //(可选项)数字类型;底部全屏/非全屏按钮大小;默认:44
verticalImg:'fs://img/vertical.png', //(可选项)字符串类型;底部横竖屏切换按钮的背景图片,竖屏状态下的切换按钮,要求本地路径(widget://、fs://);默认:竖屏按钮图标
horizontalImg:'fs://img/horizontal.png', //(可选项)字符串类型;底部横竖屏切换按钮的背景图片,横屏状态下的切换按钮,要求本地路径(widget://、fs://);默认:横屏按钮图标
}
}
}
shareConfig:
- 类型: JSON对象
- 描述:分享UI配置
{
bg:'#000', //(可选项)分享面板的背景;默认:黑色
shareBtn:{ //(可选项)JSON对象;分享按钮设置(不传不显示)
iconPath:"widget://res/shareBtn.jpg", //(可选项)按钮图标,支持widget:// fs://
size:30, //(可选项)按钮大小,默认:30
marginRight:20 //(可选项)右边距,默认:20
},
shareItems:[{ // JSON数组;分享选项设置
iconPath:'widget://res/qq.jpg', // 字符串;分享item的图标
text:'QQ分享' // 字符串;分享item的文本
}]
}
path:
- 类型:字符串
- 描述:(可选项)文档的路径,支持网络和本地(fs://)路径,在 android 平台上不支持 widget
autoPlay:
- 类型:布尔
- 描述:(可选项)打开时是否自动播放
- 默认值:true(自动播放)
autoRotate:
- 类型:布尔
- 描述:是否自动旋转
- 默认值:false
fixedOn:
- 类型:字符串类型
- 描述:(可选项)模块视图添加到指定 frame 的名字(只指 frame,传 window 无效)
- 默认:模块依附于当前 window
fixed:
- 类型:布尔
- 描述:(可选项)模块是否随所属 window 或 frame 滚动
- 默认值:true(不随之滚动)
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
eventType:'share',
shareId:0, // 数字类型;点击分享item的索引
status: // 布尔类型;是否打开播放组件并显示,true|false;Will be deprecated in ther future
}
示例代码
var neteasePlayer = api.require('neteasePlayer');
neteasePlayer.open({
title:'少林寺',
definition:["高清","标清","流畅"],
styles:{
head:{
bg: 'rgba(161,161,161,1)',
height: 44,
title:{
size:20,
color:'#fff',
width:100,
leftMargin:10
},
backSize: 44,
backImg:'widget://image/back.png',
definition:{
bg:'#fff',
textSize:14,
textColor:"#FFF",
textWidth: 30,
marginRight:5
},
},
playCenterBtn:{
size : 44,
playCenterImg:'fs://img/play.png',
pauseCenterImg:'fs://img/pause.png',
},
foot:{
bg: 'rgba(0,0,0,0.5)',
height: 44,
playBtn:{
size: 44,
playImg:'widget://image/play.png',
pauseImg:'widget://image/pause.png',
marginLeft:5
},
currentTimeLabel:{
textSize:10,
textColor:"#FFF",
textWidth: 50,
marginLeft:5
},
seekBar:{
sliderImg:'widget://image/circle.png',
sliderW : 20,
sliderH : 20,
progressColor: '#696969',
progressSelected: '#76EE00',
marginLeft:10,
marginRight:10
},
totalTimeLabel:{
textSize:10,
textColor:"#FFF",
textWidth: 50,
marginRight:5
},
voiceBtn:{
size:44,
muteImg:'widget://img/muteImg.png',
disMuteImg:'widget://img/disMuteImg.png',
},
fullscreenBtn:{
size:44,
verticalImg:'widget://image/vertical.png',
horizontalImg:'widget://image/horizontal.png',
}
} },
path:'http://baobab.wdjcdn.com/1455782903700jy.mp4',
autoPlay: true
},function(ret, err){
if(ret){
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
close
关闭播放器
close()
示例代码
var neteasePlayer = api.require('neteasePlayer');
neteasePlayer.close();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
switchContentUrl
播放过程中切换播放地址
switchContentUrl()
params
aUrl:
- 类型:字符串
- 描述:(可选项)待切换的播放地址,支持网络和本地(fs://)路径,在 android 平台上不支持 widget
示例代码
var neteasePlayer = api.require('neteasePlayer');
neteasePlayer.switchContentUrl({
aUrl : 'http://xxx/xx.mp4'
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
isPlaying
判断当前播放状态
isPlaying(ret)
callback(ret)
{
state: true // boolean类型,true表示正在播放,否则为暂停状态
}
示例代码
var neteasePlayer = api.require('neteasePlayer');
neteasePlayer.isPlaying(function(ret){
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setHardwareDecoder
设置是否开启硬件解码,仅IOS 8.0以上支持,默认不开启
setHardwareDecoder()
params()
status:
- 类型:布尔
- 描述:true是后台暂停 false是继续播放
- 默认:false
示例代码
var neteasePlayer = api.require('neteasePlayer');
neteasePlayer.setHardwareDecoder({
status:false
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
seekTo
设置当前播放时间点
seekTo({params})
params
seconds:
- 类型:数字
- 描述:跳转到音视频播放的秒数
示例代码
var neteasePlayer = api.require('neteasePlayer');
neteasePlayer.seekTo({
seconds: 20
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
currentPlaybackTime
获取当前播放时长
currentPlaybackTime({params})
callBack
{
duration: 10s // 数字类型
}
示例代码
var neteasePlayer = api.require('neteasePlayer');
neteasePlayer.currentPlaybackTime(function(ret){
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
addEventListener
播放器监听事件
addEventListener(ret)
callback
ret:
{
eventType: 'play', // 字符串类型;点击播放按钮;取值范围:
// pause 点击暂停播放按钮
// complete 播放器播放完成
// error 播放器异常
// back 返回按钮
// upFling 在播放器上任意位置快速上滑
// downFling 在播放器上任意位置快速下滑
definition: '' //该字段返回 open -> definition相应的item
}
示例代码
var neteasePlayer = api.require('neteasePlayer');
neteasePlayer.addEventListener(function(ret){
if(ret && ret.eventType == 'back'){
alert('点击back按钮');
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
showAlert
弹出提醒信息(暂仅支持Android)
showAlert()
params
title:
- 类型:字符串
- 描述:弹框标题
msg:
- 类型:字符串
- 描述:弹框信息
okBtnTitle:
- 类型:字符串
- 描述:确认按钮标题
- 默认:确定
示例代码
var neteasePlayer = api.require('neteasePlayer');
neteasePlayer.showAlert({
title:'温馨提示',
msg:'您的手机未安装qq',
okBtnTitle:'确定'
});