This commit is contained in:
2024-07-19 12:50:28 +08:00
parent d846f7793c
commit 017f704905
98 changed files with 39251 additions and 19823 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,667 +0,0 @@
<template>
<view class="content">
<KJ-Player class="player" ref="player" :style="{width:'100%',height:palyerHeight}"
@onTimeChanged="onTimeChanged" @onKVO="onKVO" @onNotification="onNotification" @onPip="onPip"
@onSystem="onSystem">
<cover-view v-if="isShowVideoview" class="video-view" :style="{width:'100%',height:palyerHeight}"
@click="tap" @touchstart="touchStartHandle" @touchend="touchEndHandle" @touchcancel="touchCancelHandle"
@touchmove="touchMoveHandle">
<text class="tip" v-if="isShowTip"
:style="{position:'absolute',left:0,right:0,top:tipTop}">{{tip}}</text>
<view class=" top-title" :style="{width:'100%'}" v-if="isShowTitle">
<view>
<button type="primary" @click="pip2">画中画(全局)</button>
</view>
<text :style="{color:'#fff'}">标题</text>
<view>
<button type="primary" @click="pip">画中画</button>
</view>
</view>
<view class="bottom-title" :style="{width:'100%'}" v-if="isShowTitle">
<button type="primary" @click="playOrPause">{{playOrPauseText}}</button>
<text class="text">{{leftTime}}</text>
<view class="fullControls-center">
<chunLei-slider :max="duration" :value="current" :style="{width:`${fullControlsWidth-40}px`}"
:screenLeft="40" :width="fullControlsWidth-40" @change="changeCurrent" :ratio="1">
</chunLei-slider>
</view>
<text class="text">{{rightTime}}</text>
<button type="primary" @click="full">全屏</button>
</view>
</cover-view>
</KJ-Player>
<view class="btns">
<button type="primary" @click="init">初始化(系统自带界面)</button>
<button type="primary" @click="init2">初始化(自定义界面)</button>
<button type="primary" @click="stop">销毁</button>
<button type="primary" @click="replaceCurrentItemWithPlayerItem">切换播放源</button>
<button type="primary" @click="getCurrentTime">获取当前时间</button>
<button type="primary" @click="getDuration">获取时长</button>
<button type="primary" @click="play">播放</button>
<button type="primary" @click="pause">暂停</button>
<button type="primary" @click="getStatus">获取状态</button>
<button type="primary" @click="getTimeControlStatus">获取时间控制状态</button>
<button type="primary" @click="setMuted">设置是否静音</button>
<button type="primary" @click="getMuted">获取是否静音</button>
<button type="primary" @click="setVolume">设置音量</button>
<button type="primary" @click="getVolume">获取音量</button>
<button type="primary" @click="setRate">设置速率</button>
<button type="primary" @click="getRate">获取速率</button>
<button type="primary" @click="seekToTime">设置进度</button>
<button type="primary" @click="setVideoGravity">设置视频拉伸模式</button>
<button type="primary" @click="isPictureInPictureSuspended">设备是否支持画中画</button>
<button type="primary" @click="pip">自动切换画中画</button>
<button type="primary" @click="isPictureInPictureActive">是否已开启画中画</button>
<button type="primary" @click="startPictureInPicture">开启画中画</button>
<button type="primary" @click="stopPictureInPicture">停止画中画</button>
</view>
</view>
</template>
<script>
export default {
data() {
return {
url: "http://baobab.kaiyanapp.com/api/v1/playUrl?vid=164016&resourceType=video&editionType=high&source=aliyun&playUrlType=url_oss",
isShowVideoview: false,
duration: 60 * 60 * 1000, //精确总时长
fullControlsWidth: '200', //全屏宽
current: 0, //video进度
leftTime: "00:00:00",
rightTime: "00:00:00",
statusBarHeight: "20px",
getStatusBarHeight: "20px",
headerHeight: "44px",
palyerHeight: "500rpx",
tipTop: "250rpx",
tip: "加载中...",
isShowTip: true,
isShowTitle: true,
hideTitleTime: 6000,
isFull: false,
playOrPauseText: "播放",
touchHandleType: false, //滑动记录 progress // light // voice
handleDynamicX: 0, // 动态记录滑动的记录X轴
handleDynamicY: 0, // 动态记录Y轴滑动距离
videoNowLight: 0, // 当前屏幕的亮度
videoNowVoice: 0, // 当前的音量
onceClickTimer: null,
changing: false,
isPip: true,
pip_currentTime: null,
}
},
onLoad(options) {
uni.$emit('to-pip-path', {
path: null,
});
this.pip_currentTime = options.pip_currentTime;
uni.$on('pip-to', (res) => {
console.log(JSON.stringify(res));
var dic = {
"second": res.currentTime + ""
}
this.$refs.player.seekToTime(dic, (res) => {
console.log("seekToTime:" + JSON.stringify(res))
this.play();
})
})
},
onReady() {
this.init2();
setTimeout((res) => {
this.$refs.player.sendSubviewToBack()
if (this.pip_currentTime != undefined) {
var dic = {
"second": this.pip_currentTime + ""
}
this.$refs.player.seekToTime(dic, (res) => {
console.log("seekToTime:" + JSON.stringify(res))
this.play();
})
}
}, 100)
},
onUnload() {
if (this.isPip) {
uni.$emit('to-pip-path', {
path: "/pages/index/index",
});
}
},
onBackPress() {
},
methods: {
pip2() {
this.isPip = true;
this.pause();
this.$refs.player.getCurrentTime((res) => {
console.log("getCurrentTime:" + JSON.stringify(res))
uni.$emit('to-pip', {
currentTime: res.result + "",
url: this.url,
path: null
});
})
},
onTimeChanged(res) {
this.duration = parseInt(res.detail.total);
this.current = parseInt(res.detail.current);
this.leftTime = this.formatDuring(this.current)
this.rightTime = this.formatDuring(this.duration)
},
onKVO(res) {
console.log("onKVO:" + JSON.stringify(res.detail))
var attribute = res.detail.attribute
var value = res.detail.value
if (attribute == "timeControlStatus") {
if (value == 0) { //暂停
this.playOrPauseText = "播放";
} else if (value == 1) { //由于媒体缓冲数据不足而导致播放停止
this.playOrPauseText = "暂停";
} else if (value == 2) { //播放
this.tip = "加载中...";
this.isShowTip = false;
this.playOrPauseText = "暂停";
}
} else if (attribute == "playerItemStatus") {
if (value == 0) { //未知
this.playOrPauseText = "播放";
} else if (value == 1) { //已准备好播放
this.playOrPauseText = "暂停";
} else if (value == 2) { //失败
this.tip = "播放失败";
this.isShowTip = true;
this.playOrPauseText = "播放";
}
} else if (attribute == "status") {
if (value == 0) { //未知
} else if (value == 1) { //已准备好播放
} else if (value == 2) { //失败
this.tip = "播放失败";
this.isShowTip = true;
this.playOrPauseText = "播放";
}
}
},
onNotification(res) {
console.log("onNotification:" + JSON.stringify(res.detail))
if (res.detail.method == "AVPlayerItemTimeJumpedNotification") {
console.log("发生变化");
} else if (res.detail.method == "AVPlayerItemDidPlayToEndTimeNotification") {
console.log("播放完成");
} else if (res.detail.method == "AVPlayerItemFailedToPlayToEndTimeNotification") {
console.log("未能播放到其结束时间就中断");
} else if (res.detail.method == "AVPlayerItemPlaybackStalledNotification") {
console.log("播放暂停");
}
},
onPip(res) {
console.log("onPip:" + JSON.stringify(res.detail))
if (res.detail.method == "WillStartPictureInPicture") {
console.log("即将开启画中画");
} else if (res.detail.method == "DidStartPictureInPicture") {
console.log("已开启画中画");
} else if (res.detail.method == "failedToStartPictureInPicture") {
console.log("开启画中画失败");
} else if (res.detail.method == "WillStopPictureInPicture") {
console.log("即将停止画中画");
} else if (res.detail.method == "DidStopPictureInPicture") {
console.log("已停止画中画");
} else if (res.detail.method == "restoreUserInterfaceForPictureInPictureStop") {
console.log("画中画恢复");
}
},
onSystem(res) { //系统界面,才支持
console.log("onSystem:" + JSON.stringify(res.detail))
if (res.detail.method == "willBeginFullScreen") {
console.log("即将开始全屏");
} else if (res.detail.method == "willEndFullScreen") {
console.log("即将退出全屏");
}
},
comminit(playerType) {
var dic = {
"playerType": playerType, //custom system
"urlType": "network", //local(本地路径-传绝对路径plus.io.convertLocalFileSystemURL) network(网络地址)
"url": this.url,
"autoPlay": true,
"allowsPictureInPicturePlayback": true, //是否开启画中画
"canStartPictureInPictureAutomaticallyFromInline": true, //ios14.2 是否 进入后台,自动启动画中画
"videoGravity": "ResizeAspect", //设置视频拉伸模式
"systemPlayer": { //playerType为system有效
// "showsPlaybackControls": true, //是否显示媒体播放组件
// "showsTimecodes": true, //ios13
// "allowsVideoFrameAnalysis": true,
// "updatesNowPlayingInfoCenter": true,
// "entersFullScreenWhenPlaybackBegins": true,
// "exitsFullScreenWhenPlaybackEnds": true,
// "requiresLinearPlayback": true,
},
};
this.$refs.player.init(dic, (res) => {
console.log("init:" + JSON.stringify(res))
})
},
init() {
this.isShowVideoview = false;
this.$nextTick((res) => {
this.comminit("system")
})
},
init2() {
this.isShowVideoview = true;
this.$nextTick((res) => {
this.comminit("custom")
this.duration = 60 * 60 * 1000;
this.current = 0;
this.leftTime = this.formatDuring(this.current)
this.rightTime = this.formatDuring(this.duration)
})
},
stop() {
this.$refs.player.stop()
},
replaceCurrentItemWithPlayerItem() {
var dic = {
"urlType": "network", //local(本地路径-传绝对路径plus.io.convertLocalFileSystemURL) network(网络地址)
"url": this.url
}
this.$refs.player.replaceCurrentItemWithPlayerItem(dic, (res) => {
console.log("replaceCurrentItemWithPlayerItem:" + JSON.stringify(res))
})
},
getCurrentTime() {
this.$refs.player.getCurrentTime((res) => {
console.log("getCurrentTime:" + JSON.stringify(res))
})
},
getDuration() {
this.$refs.player.getDuration((res) => {
console.log("getDuration:" + JSON.stringify(res))
})
},
play() {
this.$refs.player.play((res) => {
console.log("play:" + JSON.stringify(res))
})
},
pause() {
this.$refs.player.pause((res) => {
console.log("pause:" + JSON.stringify(res))
})
},
getStatus() {
this.$refs.player.getStatus((res) => {
console.log("getStatus:" + JSON.stringify(res))
})
},
getTimeControlStatus() {
this.$refs.player.getTimeControlStatus((res) => {
console.log("getTimeControlStatus:" + JSON.stringify(res))
})
},
setMuted() {
var dic = {
"is": true
}
this.$refs.player.setMuted(dic, (res) => {
console.log("setMuted:" + JSON.stringify(res))
})
},
getMuted() {
this.$refs.player.getMuted((res) => {
console.log("getMuted:" + JSON.stringify(res))
})
},
setVolume() {
var dic = {
"volume": "1.0"
}
this.$refs.player.setVolume(dic, (res) => {
console.log("setVolume:" + JSON.stringify(res))
})
},
getVolume() {
this.$refs.player.getVolume((res) => {
console.log("getVolume:" + JSON.stringify(res))
})
},
setRate() {
var dic = {
"rate": "2.0"
}
this.$refs.player.setRate(dic, (res) => {
console.log("setRate:" + JSON.stringify(res))
})
},
getRate() {
this.$refs.player.getRate((res) => {
console.log("getRate:" + JSON.stringify(res))
})
},
seekToTime() {
var dic = {
"second": "3000.0"
}
this.$refs.player.seekToTime(dic, (res) => {
console.log("seekToTime:" + JSON.stringify(res))
})
},
isPictureInPictureSuspended() {
this.$refs.player.isPictureInPictureSuspended((res) => {
console.log("isPictureInPictureSuspended:" + JSON.stringify(res))
})
},
pip() {
this.$refs.player.pip()
},
isPictureInPictureActive() {
this.$refs.player.isPictureInPictureActive((res) => {
console.log("isPictureInPictureActive:" + JSON.stringify(res))
})
},
startPictureInPicture() {
this.$refs.player.startPictureInPicture()
},
stopPictureInPicture() {
this.$refs.player.stopPictureInPicture()
},
setVideoGravity() {
var dic = {
"videoGravity": "ResizeAspectFill"
}
this.$refs.player.setVideoGravity(dic, (res) => {
console.log("setVideoGravity:" + JSON.stringify(res))
})
},
requestFullScreen() {
this.$refs.player.requestFullScreen((res) => {
console.log("requestFullScreen:" + JSON.stringify(res))
})
},
exitFullScreen() {
this.$refs.player.exitFullScreen((res) => {
console.log("exitFullScreen:" + JSON.stringify(res))
})
},
playOrPause() {
this.$refs.player.getTimeControlStatus((res) => {
console.log(JSON.stringify(res))
if (res.result == 0) { //暂停
this.play();
} else if (res.result == 1) { //由于媒体缓冲数据不足而导致播放停止
this.pause();
} else if (res.result == 2) { //播放
this.pause();
}
})
},
full() {
if (!this.isFull) {
plus.screen.lockOrientation("landscape-primary");
//this.$refs.vlc.requestFullScreen()
} else {
plus.screen.lockOrientation("portrait-primary");
//this.$refs.vlc.exitFullScreen()
}
this.isFull = !this.isFull;
},
formatDuring(s) {
//console.log(mss)
var hours = parseInt(s / 60 / 60);
if (hours < 10) {
hours = "0" + hours
}
var minutes = parseInt(s / 60 % 60);
if (minutes < 10) {
minutes = "0" + minutes
}
var seconds = parseInt(s % 60);
if (seconds < 10) {
seconds = "0" + seconds
}
return hours + ":" + minutes + ":" + seconds;
},
//拖动滑块
changeCurrent(e) {
this.current = e.detail.value
console.log(JSON.stringify(e));
this.changing = true;
var dic = {
"second": "" + parseInt(this.current)
}
this.$refs.player.seekToTime(dic, (res) => {
console.log("seekToTime:" + JSON.stringify(res))
})
},
changing(e) {
this.changing = false;
},
full() {
if (!this.isFull) {
plus.screen.lockOrientation("landscape-primary");
//this.$refs.vlc.requestFullScreen()
} else {
plus.screen.lockOrientation("portrait-primary");
//this.$refs.vlc.exitFullScreen()
}
this.isFull = !this.isFull;
},
tap() {
console.log("tap")
if (this.onceClickTimer != null) {
clearTimeout(this.onceClickTimer);
this.onceClickTimer = null;
}
this.isShowTitle = !this.isShowTitle;
this.$forceUpdate()
if (this.isShowTitle) {
this.onceClickTimer = setTimeout(() => {
clearTimeout(this.onceClickTimer);
this.onceClickTimer = null;
this.isShowTitle = false;
}, this.hideTitleTime)
}
},
//监听当前操作
touchStartHandle(e) {
console.log(e);
this.touchStartTimeStamp = new Date().getTime();
this.handleDynamicY = e.changedTouches[0].screenY;
this.handleDynamicX = e.changedTouches[0].screenX;
},
//监听抬起操作
touchEndHandle(e) {
//this.tap();
if (this.touchHandleType) {
this.touchStartTimeStamp = 0;
this.handleDynamicY = 0;
this.handleDynamicX = 0;
this.touchHandleType = false;
if (this.progressBtnStatus) {
this.progressBtnStatus = false;
this.progressPercent = this.progressBtnPercent;
}
}
},
// 监听是否触发滑动事件
touchMoveHandle(e) {
// 判断左右上下滑动是否超过10px
let X = e.changedTouches[0].screenX;
let Y = e.changedTouches[0].screenY;
if (this.touchHandleType) {
this.handleFun(X, Y);
return;
}
let chaX = Math.abs(X - this.handleDynamicX);
let chaY = Math.abs(Y - this.handleDynamicY);
if (chaX > 10 || chaY > 10) {
if (chaX > 10) {
this.touchHandleType = 'progress';
this.handleDynamicX = X;
} else {
let left = uni.getSystemInfoSync().screenWidth / 2;
if (this.handleDynamicX > left) {
this.touchHandleType = 'voice'
} else {
this.touchHandleType = 'light'
}
this.handleDynamicY = Y;
}
}
},
// 操作当前的方法
handleFun(X, Y) {
let chaX = X - this.handleDynamicX;
let chaY = Y - this.handleDynamicY;
switch (this.touchHandleType) {
case 'progress':
console.log("progress")
this.progressBtnStatus = true;
if (chaX > 0) {
if (this.current >= this.duration) {
this.current = this.duration;
} else {
this.current += 1000;
}
} else {
if (this.current <= 0) {
this.current = 0;
} else {
this.current -= 1000;
}
}
var dic = {
"second": "" + parseInt(this.current)
}
this.$refs.player.seekToTime(dic, (res) => {
console.log("seekToTime:" + JSON.stringify(res))
})
break;
case 'light':
console.log("light")
if (chaY < 0) {
if (this.videoNowLight + 0.02 >= 1) {
this.videoNowLight = 1;
} else {
this.videoNowLight += 0.02
}
} else {
if (this.videoNowLight - 0.02 <= 0) {
this.videoNowLight = 0;
} else {
this.videoNowLight -= 0.02
}
}
plus.screen.setBrightness(this.videoNowLight)
break;
case 'voice':
console.log("voice")
if (chaY < 0) {
if (this.videoNowVoice + 0.02 >= 1) {
this.videoNowVoice = 1;
} else {
this.videoNowVoice += 0.02
}
} else {
if (this.videoNowVoice - 0.02 <= 0) {
this.videoNowVoice = 0;
} else {
this.videoNowVoice -= 0.02
}
}
plus.device.setVolume(this.videoNowVoice);
break;
default:
this.touchHandleType = false;
break;
}
this.handleDynamicX = X;
this.handleDynamicY = Y;
}
}
}
</script>
<style>
.text {
color: #fff;
font-size: 10px;
}
.play {
justify-content: center;
align-items: center;
background-color: black;
}
.video-view {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 999;
}
.tip {
position: absolute;
left: 0;
right: 0;
top: 250rpx;
text-align: center;
color: #fff
}
.top-title,
.bottom-title {
position: absolute;
left: 0;
right: 0;
height: 70px;
background-color: rgba(0, 0, 0, 0.1);
display: flex;
justify-content: space-between;
flex-direction: row;
align-items: center;
color: #fff;
padding: 16px;
}
.top-title {
top: 0;
width: 750rpx;
}
.bottom-title {
bottom: 0;
width: 750rpx;
}
.fullControls-center {
flex-direction: row;
align-items: center;
justify-content: center;
height: 40px;
}
.btns {
margin-top: 40px;
display: flex;
flex-wrap: wrap;
flex-direction: row;
align-items: center;
justify-content: center;
}
</style>

View File

@@ -1,468 +0,0 @@
<template>
<div>
<oxeVideo ref='video'
:isLive='boxIsLive'
:coreType='boxCoreType'
:callback='boxCallback'
:style='boxStyle'></oxeVideo>
<button @click="replay"> 重播 </button>
<button @click="prev"> 上一集 </button>
<button @click="next"> 下一集 </button>
<button @click="enterTinyWindow"> 小屏播放 </button>
<button @click="remove"> 移除播放器 </button>
<button @click="addDanmaku"> 发送弹幕 </button>
<button @click="pause"> 暂停 </button>
<button @click="start"> 播放 </button>
<button @click="showVipView"> 显示vip</button>
<button @click="hideVipView"> 隐藏vip</button>
<button @click="hidePlay"> 隐藏播放器</button>
<button @click="showPlay"> 显示播放器</button>
<button @click="isFull"> 是否全屏</button>
<button @click="getDuration"> 获取时长</button>
<button @click="updateAll"> 更新视频数据</button>
<button @click="openDanmaku"> 开启弹幕</button>
<button @click="closeDanmaku"> 关闭弹幕</button>
</div>
</template>
<script>
//所有图片支持http开头网络图片
let w = uni.getSystemInfoSync().windowWidth;
let h = 400;
//component 自定义控件 radius 圆角值 backgroundColor 背景色 border 边框 borderColor边框颜色
//alignment 文字对齐0:居中 1上左对齐 2上中对齐 3上右对齐 4上两端对齐 5下左对齐 6下中对齐 7下右对齐 8下两端对齐 9居中两端对齐
//textSize:14 文字大小 textColor:'#C0FF3E' 文字颜色 alpha 背景透明度
//hidden 是否隐藏
//code:16//控件标识 同时作为点击事件返回码 01,2,3,4,5占用 不能使用 组件 code值不能重复 rect 图片位置(相对父组件component位置)
//type为full显示在全屏 small 显示在小屏
let component = {
x: w - 20,
y: 60,
w: 50,
h: 50,
type: 'full',
radius: 0,
backgroundColor: '#FFFFFF',
alpha: 0.2,
border: 0,
borderColor: '#E066FF',
code: 66,
hidden: false,
autoHidden: true,
animation: 0, //隐藏 动画 显示隐藏时起作用 0正常 1左 2右 3上 4下
pics: [{
path: '/static/btn_number.png',
x: 0,
y: 0,
w: 50,
h: 50,
code: 661
}]
}; //自定义组件
//let styles = [component];
let styles = [];
let vdata = [{
uid: '', //扩展字段 用户id(可选,会随事件返回)
vid: '', //扩展字段 视频id(可选,会随事件返回)
title: '第一集',
index: '01',
thumb: '/static/cover.jpg',
url: 'https://1318977462.vod-qcloud.com/c41d38favodtranscq1318977462/fb2a2e113270835010023253556/v.f1443687.mp4'
},
{
uid: '', //扩展字段 用户id(可选,会随事件返回)
vid: '', //扩展字段 视频id(可选,会随事件返回)
title: '第二集',
index: '02',
thumb: '/static/cover.jpg',
url: 'https://1318977462.vod-qcloud.com/c41d38favodtranscq1318977462/fb2a2e113270835010023253556/v.f1443687.mp4',
}
];
let data = {
selectAutoPlay: true, //选集点击是否自动播放 默认自动播放
forceDeviceOrientation: false, //旋转方向 true 全屏视频不旋转
radius: 0, //圆角大小 默认 0 没有圆角
showBack: true, //返回按钮是否显示小屏幕
showSelect: true, //选集按钮是否显示
showSpeed: true, //倍速按钮是否显示
showShot: true, //截图按钮是否显示
showDlna: {
small: true,
full: true
}, //投屏按钮是否显示
showDunmaku: {
small: true,
full: true
}, //弹幕按钮是否显示
showMore: {
small: true,
full: true
}, //跟多按钮是否显示
showBottomProcess: true,
autoPlay: false, //默认false
openCache: true, //是否开启缓存
fullGestureSlide: true,
smallGestureSlide: true,
isDrag: true,//进度条条是否拖动
styles: styles,//自定义控件
hideControl: false, //是否隐藏所有控件
backgroundHolder: '', //视频背景图片
backgroundAlpha: 0.3, //0 背景透明度
loop: false, //是否单急循环
ad: {
isShow: false,
url: 'http://t8.baidu.com/it/u=2247852322,986532796&fm=79&app=86&f=JPEG?w=1280&h=853',
skipUrl: 'http://wap.hao123.com'
}, //中间暂停广告,为空则不播放广告
vad: {
isShow: false,
isShowSkip: true,
type: 'image',
duration: 10,
url: 'https://cms-bucket.nosdn.127.net/eb411c2810f04ffa8aaafc42052b233820180418095416.jpeg',
skipUrl: 'http://wap.hao123.com'
}, //播放前视频广告
index: 0,
data: vdata
};
export default {
data() {
return {
boxStyle: {
'height': 400,
'width': '750upx',
},
boxIsLive: false,
boxCoreType: 0,
boxCallback: 'callback'
}
},
onLoad() {
this.wWidth = uni.getSystemInfoSync().windowWidth;
this.boxStyle.width = this.wWidth;
},
onReady() {
//事件监听
//0 小屏状态下返回按钮点击
//1 播放进度实时返回position
//2 视频广告点击事件
//3 暂停广告点击事件
//4 vip点击返回
//5 弹幕开启状态
//6 播放
//7 暂停
//8 缓冲返回
//9 网络错误
//10 钢笔图标点击
//11 选集点击事件
//12 广告详情按钮点击
//13 大小屏切换事件
//14 广告划过事件
//15 广告倒计时点击事件
//16 广告播放完成事件
//17 播放完成事件
//18 下一集事件
//20 准备播放
var globalEvent = weex.requireModule('globalEvent');
var ox = this.$refs.video;
///注意 initVideoData初始化可在 组件中添加 或在 onReady里添加 只能选择一种 数据格式一样
ox.initVideoData(data);
globalEvent.addEventListener(this.boxCallback, function(e) {
let code = e.code;
if (code == 0) {
uni.navigateBack({
delta: 1,
animationType: 'pop-out',
animationDuration: 200
});
} else if (code == 1) {
console.log(e);
} else if (code == 20) {
} else if (code == 10) {
} else if (code == 661) {
} else if (code == 14) {
// ox.openDanmaku();
// ox.clearDanmaku();
// ox.addDanmakus([{
// text: '32323',
// isSelf: false,
// color: '#FFFFFF'
// }
// ]);
} else if (code == 3) {
// ox.exitFullScreen();
// setTimeout(function() {
// uni.navigateTo({
// url: 'zb'
// });
// }, 3000)
}
})
},
methods: {
showVipView: function() {
var ox = this.$refs.video;
ox.showVipView();
//vip显示
},
hideVipView: function() {
var ox = this.$refs.video;
ox.hideVipView();
//vip隐藏
},
addComponent: function() {
var ox = this.$refs.video;
ox.addComponent(component);
//动态添加控件 code不能重复
},
updateComponent: function() {
var ox = this.$refs.video;
ox.updateComponent(component);
//动态更新控件 更新的控件 code一定要对应
},
updateDataAtIndex: function() {
var ox = this.$refs.video;
ox.updateDataAtIndex({
index: 1,
data: {
uid: '', //扩展字段 用户id(可选,会随事件返回)
vid: '', //扩展字段 视频id(可选,会随事件返回)
title: '第二集',
index: '02',
thumb: 'https://cms-bucket.nosdn.127.net/cb37178af1584c1588f4a01e5ecf323120180418133127.jpeg',
url: 'https://v3.szjal.cn/20191120/IYfYSiin/index.m3u8',
}
});
//更新索引位置视频数据
ox.playIndex(1);
},
updateAll: function() {
var ox = this.$refs.video;
ox.updateAll({data:[{
uid: '', //扩展字段 用户id(可选,会随事件返回)
vid: '', //扩展字段 视频id(可选,会随事件返回)
title: '第一集',
index: '01',
thumb: 'https://cms-bucket.nosdn.127.net/eb411c2810f04ffa8aaafc42052b233820180418095416.jpeg',
url: 'http://www.easydarwin.org/public/video/3/video.m3u8'
},
{
uid: '', //扩展字段 用户id(可选,会随事件返回)
vid: '', //扩展字段 视频id(可选,会随事件返回)
title: '第二集',
index: '02',
thumb: 'https://cms-bucket.nosdn.127.net/cb37178af1584c1588f4a01e5ecf323120180418133127.jpeg',
url: 'http://vfx.mtime.cn/Video/2019/03/21/mp4/190321153853126488.mp4',
}
]});
setTimeout(function() {
ox.playIndex(0);
}, 500)
//更新所有视频数据
},
seekTo: function() {
var ox = this.$refs.video;
ox.seekTo(1200);
//滑动到指定时间播放毫秒
},
setSpeed: function() {
var ox = this.$refs.video;
ox.setSpeed(1.5);
//设置倍数
},
setVolume: function() {
var ox = this.$refs.video;
ox.setVolume(1.5);
//设置声音
},
setMuted: function() {
var ox = this.$refs.video;
ox.setMuted(true);
//是否静音
},
clearCache: function() {
var ox = this.$refs.video;
ox.clearCache();
//清理缓存
},
next: function() {
var ox = this.$refs.video;
ox.next();
//播放下一条记录
},
prev: function() {
var ox = this.$refs.video;
ox.prev();
//播放上一条记录
},
playIndex: function() {
var ox = this.$refs.video;
ox.playIndex(2);
//播放索引记录
},
start: function() {
var ox = this.$refs.video;
ox.start();
//开始播放
},
pause: function() {
var ox = this.$refs.video;
ox.pause();
//暂停播放
},
replay: function() {
var ox = this.$refs.video;
ox.replay();
//循环播放
},
remove: function() {
var ox = this.$refs.video;
ox.remove();
//去除播放器
},
hidePlay: function() {
var ox = this.$refs.video;
ox.hidePlay();
//隐藏播放器
},
showPlay: function() {
var ox = this.$refs.video;
ox.showPlay();
//显示播放器
},
enterFullScreen: function() {
var ox = this.$refs.video;
ox.enterFullScreen();
//进入全屏
},
exitFullScreen: function() {
var ox = this.$refs.video;
ox.exitFullScreen();
//退出全屏
},
isFull: function() {
var ox = this.$refs.video;
ox.isFull(result => {
let isFull = result.isFull;
uni.showModal({
title: '提示',
content: '是否全屏:' + isFull,
success: function(res) {
}
});
});
//是否全屏
},
getSpeed: function() {
var ox = this.$refs.video;
ox.getSpeed(result => {
let speed = result.speed;
uni.showModal({
title: '提示',
content: '倍速:' + speed,
success: function(res) {
}
});
});
//获取倍速
},
addDanmaku: function() {
var ox = this.$refs.video;
ox.addDanmaku({
text: '测试',
isSelf: true
});
//单条弹幕发送
},
addDanmakus: function() {
var ox = this.$refs.video;
ox.addDanmakus([{
text: '测试',
isSelf: true,
color: '#FFFFFF'
}]);
//多条弹幕发送
},
closeDanmaku: function() {
var ox = this.$refs.video;
ox.closeDanmaku();
//关闭弹幕
},
openDanmaku: function() {
var ox = this.$refs.video;
ox.openDanmaku();
//开启弹幕
},
getDuration: function() {
var ox = this.$refs.video;
ox.duration(result => {
let duration = result.duration;
uni.showModal({
title: '时长',
content: JSON.stringify(result),
success: function(res) {
if (res.confirm) {
console.log('用户点击确定');
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
});
//获取视频时长 毫秒
},
getScreenShot: function() {
var ox = this.$refs.video;
ox.screenShot(result => {
let base64 = result.base64;
});
//截图 返回base64
},
adSkip: function() {
var ox = this.$refs.video;
ox.adSkip();
//划过广告
},
setOptionValue: function() {
var ox = this.$refs.video;
ox.setOptionValue({
value: '',
key: '',
category: 1
});
//ijk设置 option category 1 FormatOption 2 CodecOption 3 SwsOption 4 PlayerOption
},
setOptionIntValue: function() {
var ox = this.$refs.video;
ox.setOptionIntValue({
value: 0,
key: '',
category: 1
});
//ijk设置 option category 1 FormatOption 2 CodecOption 3 SwsOption 4 PlayerOption
},
setScreenScaleType: function() {
var ox = this.$refs.video;
ox.setScreenScaleType(1);
//设置视频画面 适应 1 2 3
},
enterTinyWindow: function() {
var ox = this.$refs.video;
ox.enterTinyWindow({x:80,y:400});
}
}
};
</script>
<style>
</style>

View File

@@ -1,129 +0,0 @@
<template>
<div>
<view>
<view class="title">播放进度</view>
<text style="color: #576B95;">{{text}}</text>
</view>
<button @click="startSearch"> 搜索投屏设备 </button>
<button @click="startPush"> 开始投屏 </button>
<button @click="startPushed"> 开始投屏2 </button>
<button @click="stopPush"> 停止投屏 </button>
<button @click="pausePush"> 暂停 </button>
<button @click="resumePush"> 播放 </button>
<button @click="seekTo"> 快进10秒 </button>
<button @click="getVolume"> 获取电视声音 </button>
</div>
</template>
<script>
const ox = uni.requireNativePlugin('Jiang-OxePlayer');
var device;
var p = 0;
export default {
data() {
return {
text: '0'
}
},
onReady() {
console.log('44444444');
ox.initDlna();
const that = this;
var globalEvent = weex.requireModule('globalEvent');
globalEvent.addEventListener('dlnaCallback', function(e) {
console.log(e);
let code = e.code;
if (code == 10) {
let v = e.volume;
ox.setVolume({
volume: v
});
}else if(code == 0){
let t = e.position
that.text = t;
p = t;
}
});
},
methods: {
startSearch: function() {
ox.startSearch(result => {
console.log(result);
if (result.code == 0) {
var ds = result.devices;
device = ds[0];
}
});
},
startPush: function() {
ox.stopPush();
setTimeout(function() {
ox.startPush({
url: 'https://yixuancdn.bangju.com/%E6%8E%8C%E6%8F%A1%E5%81%A5%E5%BA%B7%E7%9A%84%E9%87%91%E9%92%A5%E5%8C%99%20%5BAVC%20720p%5D_batch_batch.mp4',
device: device
});
}, 1000);
},
startPushed: function() {
ox.stopPush();
setTimeout(function() {
ox.startPush({
url: 'https://yixuancdn.bangju.com/%E8%B6%B3%E9%83%A8%E5%8F%8D%E5%B0%84%E7%96%97%E6%B3%95%E7%AC%AC%E4%B8%80%E7%BB%84%E3%80%8B%20%5BAVC%20720p%5D~1.mp4',
device: device
});
}, 1000);
},
stopPush: function() {
ox.stopPush();
},
pausePush: function() {
ox.pause();
},
resumePush: function() {
ox.resume();
},
seekTo: function() {
ox.seek({position:p+10});
},
getVolume: function() {
ox.getVolume(result => {
console.log(result);
});
}
}
}
</script>
<style>
.card {
width: 750rpx;
margin-top: 60rpx;
flex-direction: row;
flex-wrap: wrap;
background-color: #C0C0C0;
}
.box {
width: 185rpx;
height: 185rpx;
justify-content: center;
align-items: center;
}
.row-box {
width: 120rpx;
height: 120rpx;
margin: 10rpx;
background-color: #00000000;
}
.uni-form-item .title {
padding: 20rpx 20;
}
</style>

View File

@@ -1,57 +0,0 @@
<template>
<div>
<button @click="startSearch"> 搜索投屏设备 </button>
<button @click="startPush"> 开始投屏 </button>
<button @click="stopPush"> 停止投屏 </button>
<button @click="pausePush"> 暂停 </button>
<button @click="resumePush"> 播放 </button>
</div>
</template>
<script>
const ox = uni.requireNativePlugin('Jiang-OxePlayer');
var device;
export default {
onReady() {
console.log('44444444');
ox.initDlna();
var globalEvent = weex.requireModule('globalEvent');
globalEvent.addEventListener('dlnaCallback', function(e) {
console.log(e);
});
},
methods: {
startSearch: function() {
ox.startSearch(result => {
console.log(result);
if(result.code==0){
var ds =result.devices;
device = ds[0];
}
});
},
startPush: function() {
ox.startPush({
url: 'http://www.easydarwin.org/public/video/3/video.m3u8',
device: device
});
},
stopPush: function() {
ox.stopPush();
},
pausePush: function() {
ox.pause();
},
resumePush: function() {
ox.resume();
}
}
}
</script>
<style>
</style>

View File

@@ -1,78 +0,0 @@
<template>
<view>
<zhimi_aliplayer_view ref="playerView" style="width:100%;height:300px;"></zhimi_aliplayer_view>
<button type="primary" @click="start()">开始</button>
<button type="primary" @click="pause()">暂停</button>
</view>
</template>
<script>
export default {
data() {
return {
}
},
onLoad() {
},
onShow () {
},
onHide () {
this.pause()
},
mounted() {
var playerView = this.$refs.playerView;
playerView.setVidSts({
"vid": "d0c8e6d23e5f71ef81714531858c0102",
"accessKeyId": "STS.NTGWXhnCVxeiE3jv2FPkaconD",
"securityToken": "CAISwgJ1q6Ft5B2yfSjIr5fyHOLcg5x3z6eCRxXbkjITXORNjKrFpjz2IHhMdHFuB+4YsP41lWtS7f8alqJvRoRZXkHfdsp36MzvQMIQgNCT1fau5Jko1beDewHKeT+ZsebWZ+LmNqS/Ht6md1HDkAJq3LL+bk/Mdle5MJqP+/EFA8oQUlv6F00kYu1bPQx/ssQXGGLMPPK2SH7Qj3HXEVBjt3gX6wo9y9zmnJXAtUaG1Qalmr5M9tyuGPX+MZkwZqUYesyuwel7epDG1CNt8BVQ/M909vccoWef4I/DXQcLuUTdabGNqscAMgh1fK8+Fr7vNBB7d2X80Aa6tfMUq34lVYk9O0xUlBgvRFbCU6ovuoKM/1JX7+gpfvTOV/+7+kpvCikgLwgpMPFKCRxrQicnUVK3ROLZvj6DDGitI72BtpVoufIdGoABffDnFykDKsxFFQZwKGrrVUFPL1V48K4ovYkHx15iw2mW6RqNrJDDSl56UfTxDcaRSk0HqA8+e+1pO3LW2vMRHrIhIqhu3gCbbCBATVb8v96Y5HIXIIw29gX9o0xfMgFIdHTZ+YsMSjacnXpvmslLzRD7vNiVgC2E6ySVcvzQOG0gAA==",
"accessKeySecret": "GcyVng2e6UBbmbKiEN1ArqFqy3uGSAg8dsc8N1Pajm2V",
"expireTime": "2024-07-16T10:50:38Z",
"Region": "cn-shanghai",
});
let isFullScreen = true;
// fixed fullscreen play on android
if (plus.os.name.toLowerCase() === 'android') {
plus.key.addEventListener('backbutton', e => {
if (isFullScreen) {
playerView.changeScreenMode(0, false)
isFullScreen = false
} else {
// 这里由于安卓无法监听返回按键这里只能通过plus监听然后自己模拟退回
uni.navigateBack()
}
});
}
playerView.setPlayerCallBack(({ type, data }) => {
switch (type) {
case 'isFullScreen':
isFullScreen = Boolean(data)
break
default:
console.log({ type, data })
}
})
},
methods: {
start() {
var playerView = this.$refs.playerView;
playerView.start();
},
pause() {
var playerView = this.$refs.playerView;
playerView.pause();
}
}
}
</script>
<style>
</style>

View File

@@ -1,257 +0,0 @@
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport"
content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
<meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
<title>顾问主页设置</title>
<link rel="stylesheet" type="text/css" href="css/aui.css" />
</head>
<body>
<div class="outerScroller" id="outerScroller">
<div class="aui-content aui-margin-b-15">
<ul id="datalist" class="aui-list">
</ul>
</div>
<footer class="aui-bar aui-bar-tab">
<div class="aui-content-padded">
<div id="btn_add" class="aui-btn aui-btn-info" tapmode onclick="add()">发布</div>
<div id="btn_edit" class="aui-btn" tapmode onclick="edit()">编辑</div>
<div id="btn_del" class="aui-btn" tapmode onclick="del()">删除</div>
</div>
</footer>
</div>
</body>
<script type="text/javascript" src="js/api.js"></script>
<script type="text/javascript" src="js/aui-dialog.js"></script>
<script type="text/javascript" src="js/mui.min.js"></script>
<script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="js/pull-load.min.js"></script>
<script type="text/javascript">
var dialog = new auiDialog();
var page = 1;
var isAdd = true;
var oid = '';
var username = '';
var title = '';
$(document).ready(function() {
var id = getParameter("id");
var glsort = getParameter("glsort");
var glsort2 = getParameter("glsort2");
var x_Sn = getParameter("x_Sn");
var templateId = getParameter("templateId");
var token = getParameter("token");
var baseSort = getParameter("baseSort");
var param = 'cisId=' + id + '&glsort=' + glsort + '&basesort=' + 1 + '&codesort=json&page=' + page +
'&pagesize=' + 20;
var url = 'https://www.01as.com/manage/function/qy/gwzy.aspx?' + param;
loadDataList(url, token, false);
});
new PullLoad({
container: document.getElementById("outerScroller"),
down: {
distance: 50, //默认距离
enable: true,
callback: function(end) {
//这个当作测试用。
setTimeout(function() {
var id = getParameter("id");
var glsort = getParameter("glsort");
var glsort2 = getParameter("glsort2");
var token = getParameter("token");
var baseSort = getParameter("baseSort");
page = 1;
var param = 'cisId=' + id + '&glsort=' + glsort + '&basesort=' + 1 +
'&codesort=json&page=' + page + '&pagesize=' + 20;
var url = 'https://www.01as.com/manage/function/qy/gwzy.aspx?' + param;
loadDataList(url, token, false);
isAdd = true;
var btn_add = $api.byId('btn_add');
var btn_edit = $api.byId('btn_edit');
var btn_del = $api.byId('btn_del');
btn_add.setAttribute("class", "aui-btn aui-btn-info")
btn_edit.setAttribute("class", "aui-btn")
btn_del.setAttribute("class", "aui-btn")
end(false);
}, 1500);
}
},
up: {
distance: 50, //默认距离也是创建的div的默认g高度
isScrollLoad: false,
isInitLoad: false,
enable: true,
callback: function(end) {
//这个当作测试用。
setTimeout(function() {
var id = getParameter("id");
var glsort = getParameter("glsort");
var glsort2 = getParameter("glsort2");
var token = getParameter("token");
var baseSort = getParameter("baseSort");
page++;
var param = 'cisId=' + id + '&glsort=' + glsort + '&basesort=' + 1 +
'&codesort=json&page=' + page + '&pagesize=' + 20;
var url = 'https://www.01as.com/manage/function/qy/gwzy.aspx?' + param;
loadDataList(url, token, true);
end(false);
}, 1500);
}
}
});
function loadDataList(url, token, isUp) {
$.ajax({
type: "POST",
url: url,
headers: {
'token': token
},
data: {
type: 'Get'
},
cache: false,
dataType: "text",
success: function(data, textStatus, jqXHR) {
var dd = JSON.parse(data);
if (dd.status == 'success') {
var arr = dd.data;
var listDom = $api.byId('datalist');
if (!isUp) {
listDom.innerHTML = '';
}
if (arr != null && arr.length > 0) {
$.each(arr, function(n, value) {
var str = '<div class="aui-list-item-inner">' +
'<div class="aui-list-item-title">' +
'<label><input class="aui-radio" type="radio" name="gw" value="' +
value.oid + '" data="' + value.username + '" title="' + value.title +
'">用户名:' + value.username + '(' + value.title + ')</label>' +
'</div>' +
'<div class="aui-list-item-right">查看</div>' +
'</div>';
var liDom = document.createElement("li");
liDom.setAttribute("class", "aui-list-item")
liDom.innerHTML = str;
listDom.appendChild(liDom); // 加在列表的后面,上拉加载
});
}
$('input[type=radio]').click(function() {
if (oid == this.value) {
$('input[type="radio"]').prop('checked', false);
oid = '';
isAdd = true;
var btn_add = $api.byId('btn_add');
var btn_edit = $api.byId('btn_edit');
var btn_del = $api.byId('btn_del');
btn_add.setAttribute("class", "aui-btn aui-btn-info")
btn_edit.setAttribute("class", "aui-btn")
btn_del.setAttribute("class", "aui-btn")
} else {
oid = this.value;
username = this.getAttribute("data");
title = this.getAttribute("title");
isAdd = false;
var btn_add = $api.byId('btn_add');
var btn_edit = $api.byId('btn_edit');
var btn_del = $api.byId('btn_del');
btn_add.setAttribute("class", "aui-btn")
btn_edit.setAttribute("class", "aui-btn aui-btn-info")
btn_del.setAttribute("class", "aui-btn aui-btn-info")
}
});
}
}
});
}
function add() {
if (isAdd) {
mui.openWindow({
id: 'gw_add',
url: 'gw_add.html',
show: {
aniShow: 'fade-in',
duration: 300
},
waiting: {
autoShow: false
}
});
}
}
function edit() {
if (!isAdd) {
var param = 'cisId=' + id + '&glsort=' + glsort + '&basesort=' + 1 +
'&codesort=json&page=' + page + '&pagesize=' + 20;
mui.openWindow({
id: 'gw_edit',
url: 'gw_edit.html',
show: {
aniShow: 'fade-in',
duration: 300
},
waiting: {
autoShow: false
}
});
}
}
function del() {
if (!isAdd) {
dialog.alert({
title: "提示",
msg: '确定删除记录吗?',
buttons: ['取消', '确定']
}, function(ret) {
if (ret.buttonIndex == 1) {
var param = 'cisId=' + oid;
var url = 'https://www.01as.com/manage/function/qy/gwzy.aspx?' + param;
$.ajax({
type: "POST",
url: url,
headers: {
'deloid': oid,
'token': token
},
data: {
type: 'Get'
},
cache: false,
dataType: "text",
success: function(data, textStatus, jqXHR) {
var dd = JSON.parse(data);
alert(data);
}
});
}
})
}
}
function getParameter(sProp) {
var re = new RegExp(sProp + "=([^\&]*)", "i");
var a = re.exec(document.location.search);
if (a == null) return null;
return a[1];
}
</script>
</html>

View File

@@ -1,228 +0,0 @@
<template>
<div>
<oxeVideo ref='video'
:isLive='boxIsLive'
:coreType='boxCoreType'
:callback='boxCallback'
:data='boxData'
:style='boxStyle'></oxeVideo>
<button @click="addDanmaku"> 发送弹幕 </button>
<button @click="pause"> 暂停 </button>
<button @click="start"> 播放 </button>
<button @click="showVipView"> 显示vip</button>
<button @click="hideVipView"> 隐藏vip</button>
<button @click="hidePlay"> 隐藏播放器</button>
<button @click="showPlay"> 显示播放器</button>
</div>
</template>
<script>
//所有图片支持http开头网络图片
let w = uni.getSystemInfoSync().windowWidth;
let h = 250;
//component 自定义控件 radius 圆角值 backgroundColor 背景色 border 边框 borderColor边框颜色
//alignment 文字对齐0:居中 1上左对齐 2上中对齐 3上右对齐 4上两端对齐 5下左对齐 6下中对齐 7下右对齐 8下两端对齐 9居中两端对齐
//textSize:14 文字大小 textColor:'#C0FF3E' 文字颜色 alpha 背景透明度
//hidden 是否隐藏
//code:16//控件标识 同时作为点击事件返回码 01,2,3,4,5占用 不能使用 组件 code值不能重复 rect 图片位置(相对父组件component位置)
//type为full显示在全屏 small 显示在小屏
let component = {
x: w - 120,
y: 60,
w: 60,
h: 80,
type: 'small',
radius: 0,
backgroundColor: '#000000',
alpha: 0.5,
border: 0,
borderColor: '#E066FF',
code: 66,
hidden: false,
autoHidden: false,
pics: [{
path: '/static/shop.jpg',
x: 0,
y: 0,
w: 60,
h: 80,
code: 661
}],
texts: []
}; //自定义组件
let styles = [component];
let data = {
forceDeviceOrientation: false, //旋转方向 true 全屏视频不旋转
radius: 5, //圆角大小 默认 0 没有圆角
showBack: true, //返回按钮是否显示小屏幕
showShot: true, //截图按钮是否显示
showDlna: {
small: true,
full: true
}, //投屏按钮是否显示
showDunmaku: {
small: true,
full: true
}, //弹幕按钮是否显示
showMore: {
small: true,
full: true
}, //跟多按钮是否显示
autoPlay: true, //默认false
styles: styles,
hideControl: false, //是否隐藏所有控件
backgroundHolder: '', //视频背景图片
backgroundAlpha: 0.3, //0 背景透明度
loop: false, //是否单急循环
ad: {
isShow: true,
url: 'http://t8.baidu.com/it/u=2247852322,986532796&fm=79&app=86&f=JPEG?w=1280&h=853',
skipUrl: 'http://wap.hao123.com'
}, //中间暂停广告,为空则不播放广告
index: 0,
data: [{
uid: '', //扩展字段 用户id(可选,会随事件返回)
vid: '', //扩展字段 视频id(可选,会随事件返回)
title: 'cctv1',
index: '01',
thumb: 'https://cms-bucket.nosdn.127.net/eb411c2810f04ffa8aaafc42052b233820180418095416.jpeg',
url: 'http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8'
}]
};
export default {
data() {
return {
boxStyle: {
'height': 250,
'width': '750upx',
},
boxIsLive: true,
boxCoreType: 1,
boxCallback: 'callback',
boxData: data
}
},
onLoad() {
this.wWidth = uni.getSystemInfoSync().windowWidth;
this.boxStyle.width = this.wWidth;
},
onReady() {
//事件监听
//0 小屏状态下返回按钮点击
//1 播放进度实时返回position
//3 暂停广告点击
//4 vip点击返回
//5 弹幕开启状态
//6 播放
//7 暂停
//8 缓冲返回
//9 网络错误
//10 钢笔图标点击
//11 选集点击事件
var globalEvent = weex.requireModule('globalEvent');
var ox = this.$refs.video;
///注意 initVideoData初始化可在 组件中添加 或在 onReady里添加 只能选择一种 数据格式一样
//ox.initVideoData(data);
globalEvent.addEventListener(this.boxCallback, function(e) {
let code = e.code;
if (code == 0) {
uni.navigateBack({
delta: 1,
animationType: 'pop-out',
animationDuration: 200
});
}else if(code == 1){
}
})
},
methods: {
showVipView: function() {
var ox = this.$refs.video;
ox.showVipView();
//vip显示
},
hideVipView: function() {
var ox = this.$refs.video;
ox.hideVipView();
//vip隐藏
},
addComponent: function() {
var ox = this.$refs.video;
ox.addComponent(component);
//动态添加控件 code不能重复
},
updateComponent: function() {
var ox = this.$refs.video;
ox.updateComponent(component);
//动态更新控件 更新的控件 code一定要对应
},
setVolume: function() {
var ox = this.$refs.video;
ox.setVolume(1.5);
//设置声音
},
setMuted: function() {
var ox = this.$refs.video;
ox.setMuted(true);
//设置静音
},
start: function() {
var ox = this.$refs.video;
ox.start();
//开始播放
},
pause: function() {
var ox = this.$refs.video;
ox.pause();
//暂停播放
},
replay: function() {
var ox = this.$refs.video;
ox.replay();
//循环播放
},
remove: function() {
var ox = this.$refs.video;
ox.remove();
//去除播放器
},
hidePlay: function() {
var ox = this.$refs.video;
ox.hidePlay();
//隐藏播放器
},
showPlay: function() {
var ox = this.$refs.video;
ox.showPlay();
//显示播放器
},
enterFullScreen: function() {
var ox = this.$refs.video;
ox.enterFullScreen();
//进入全屏
},
exitFullScreen: function() {
var ox = this.$refs.video;
ox.exitFullScreen();
//退出全屏
},
addDanmaku: function() {
var ox = this.$refs.video;
ox.addDanmaku({
text: '测试',
isSelf: true
});
//弹幕
}
}
};
</script>
<style>
</style>