171 lines
4.7 KiB
Vue
171 lines
4.7 KiB
Vue
<template>
|
||
<view class="fullHeight">
|
||
<headers :showBack="true" :themeType="'#3A7BFF'">
|
||
<view class="headerName">
|
||
视频回放
|
||
</view>
|
||
</headers>
|
||
<!-- <video class="videoBox" id="myVideo" :custom-cache="false" :src="url" controls autoplay></video> -->
|
||
<!-- 外网IP地址访问视频监控 -->
|
||
<!-- <video class="videoBox" id="myVideo" :custom-cache="false" :src="'rtsp://42.180.188.17:'+url.substring(20)" controls autoplay></video> -->
|
||
<video class="videoBox" id="myVideo" ></video>
|
||
<!-- :custom-cache="false" :src="url" controls autoplay -->
|
||
<view class="videoName">
|
||
<text>{{passData.videoName}}</text>
|
||
<text>{{passData.beginTime}}<br />至<br />{{passData.endTime}}</text>
|
||
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import headers from '../../components/headers/headers.vue';
|
||
import videojs from 'video.js';
|
||
import 'video.js/dist/video-js.min.css';
|
||
// import 'videojs-contrib-hls';
|
||
import 'videojs-flvjs-es6';
|
||
import 'videojs-flash';
|
||
// import SWF_URL from 'videojs-swf/dist/video-js.swf';
|
||
export default {
|
||
components:{headers},
|
||
data() {
|
||
return {
|
||
url:'',//rtsp://admin:jxj12345@192.168.0.64:554/h264/ch1/main/av_stream
|
||
streamType: 1, //1是子码流 2是主码流
|
||
passData: {},
|
||
streamType: 'RTSP',
|
||
player: null
|
||
};
|
||
},
|
||
onLoad(options) {
|
||
//videoType 1萤石云,2乐橙,3ISC,4大华,5宇视,6国标
|
||
// this.url = options.url
|
||
if(options.obj){
|
||
this.passData = JSON.parse(options.obj)
|
||
}
|
||
console.log(this.passData,777888)
|
||
this.loadData()
|
||
},
|
||
beforeDestroy () {
|
||
this.disposePlayer()
|
||
},
|
||
methods:{
|
||
// 初始化播放器
|
||
initPlayer () {
|
||
this.$nextTick(() => {
|
||
let playerOption = {
|
||
preload: 'auto', // 预加载
|
||
autoplay: true, // 自动播放
|
||
controls: true,
|
||
techOrder: ['html5', 'flvjs', 'flash'], // 这里的顺序一定要 'flvjs' 在 'flash' 前面,要不然 flv 格式的就无法播放了
|
||
// 如果报 app.js:242798 Uncaught TypeError: this.el_.vjs_getProperty is not a function 错误,只保留 'flash' 就不报错了
|
||
// 报错 The "flash" tech is undefined. Skipped browser support check for that tech. 可以查看 videojs-flash 里面 node_modules 查看需要的 video.js 的版本,然后修改video.js的版本就可以了
|
||
flash: {
|
||
hls: { withCredentials: false },
|
||
// swf: SWF_URL // 引入静态文件swf
|
||
},
|
||
flvjs: {
|
||
mediaDataSource: {
|
||
cors: true,
|
||
withCredentials: false,
|
||
},
|
||
},
|
||
sources: [
|
||
{
|
||
src: this.url,
|
||
type: this.getType(this.streamType)
|
||
}
|
||
],
|
||
}
|
||
// uni.createSelectorQuery().in(this).select('#myVideo').boundingClientRect(result => {
|
||
// if (result) {
|
||
// this.viewHeight = result.height * 2
|
||
// } else {
|
||
// this.viewHeight = 0
|
||
// }
|
||
// }).exec();
|
||
console.log(this.$el.querySelector('#myVideo'), uni.createSelectorQuery().in(this).select('#myVideo'))
|
||
this.player = videojs(this.$el.querySelector('#myVideo'), playerOption, function onPlayerReady () {
|
||
console.log('onPlayerReady', this)
|
||
})
|
||
})
|
||
},
|
||
//获取项目视频
|
||
loadData() {
|
||
var that = this
|
||
let requestData = {
|
||
projectSn: that.passData.projectSn,
|
||
serialNumber: that.passData.serialNumber
|
||
}
|
||
if(that.passData.beginTime && that.passData.endTime){
|
||
requestData.beginTime = that.passData.beginTime
|
||
requestData.endTime = that.passData.endTime
|
||
}
|
||
that.sendRequest({
|
||
url: "xmgl/videoItem/callPostPlaybackURLsV2",
|
||
data: requestData,
|
||
method: "POST",
|
||
success(res) {
|
||
console.log('找封面', res)
|
||
that.url = res.result.url
|
||
if(that.url.indexOf("10.168.1.100") != -1){
|
||
that.url = that.url.replace("10.168.1.100", "42.180.188.17")
|
||
console.log(that.url,888999)
|
||
}
|
||
that.initPlayer()
|
||
}
|
||
})
|
||
},
|
||
// 销毁播放器
|
||
disposePlayer () {
|
||
if (this.player) {
|
||
this.player.dispose()
|
||
}
|
||
},
|
||
getType (type) {
|
||
let playerType = ''
|
||
switch (type) {
|
||
case 'FLV':
|
||
playerType = 'video/x-flv'
|
||
break
|
||
case 'HLS':
|
||
playerType = 'application/x-mpegURL'
|
||
break
|
||
case 'RTMP':
|
||
playerType = 'rtmp/flv'
|
||
break
|
||
case 'RTSP':
|
||
playerType = 'video/mp4'
|
||
break
|
||
}
|
||
return playerType
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.fullHeight{
|
||
background-color: #F4F5FD;
|
||
}
|
||
.videoBox{
|
||
width: 100%;
|
||
}
|
||
.videoName{
|
||
margin: 20rpx 30rpx;
|
||
position: relative;
|
||
display: flex;
|
||
flex-direction: column;
|
||
font-size: 32rpx;
|
||
font-family: PingFang SC, PingFang SC;
|
||
font-weight: 600;
|
||
text:nth-child(1){
|
||
color: #000000;
|
||
}
|
||
text:nth-child(2){
|
||
color: #6F6F6F;
|
||
margin-top: 12rpx;
|
||
}
|
||
}
|
||
</style>
|