|
@@ -1,80 +1,25 @@
|
|
<template name="vodShort">
|
|
<template name="vodShort">
|
|
<view>
|
|
<view>
|
|
<swiper class="swiper" autoplay="false" vertical="true" interval="990000" @change="changeVod">
|
|
<swiper class="swiper" autoplay="false" vertical="true" interval="990000" @change="changeVod">
|
|
- <swiper-item v-for="(v, k) in item">
|
|
|
|
-
|
|
|
|
- <video
|
|
|
|
- :src="v.video"
|
|
|
|
- preload
|
|
|
|
- :show-play-btn="true"
|
|
|
|
- :show-center-play-btn="false"
|
|
|
|
- :controls="false"
|
|
|
|
- :loop="true"
|
|
|
|
- :id="id(k)"
|
|
|
|
- objectFit="fill"
|
|
|
|
- :enable-progress-gesture="false"
|
|
|
|
- @click="start"
|
|
|
|
- ref="video_url"
|
|
|
|
- play-btn-position="center"
|
|
|
|
- class="video"
|
|
|
|
- :x5-playsinline="true"
|
|
|
|
- :playsinline="true"
|
|
|
|
- :webkit-playsinline="true"
|
|
|
|
- :x5-video-can-play-with-audio="true"
|
|
|
|
- x5-video-orientation="portraint"
|
|
|
|
- x-webkit-airplay="allow"
|
|
|
|
-
|
|
|
|
- >
|
|
|
|
- </video>
|
|
|
|
-
|
|
|
|
- <cover-image v-if="show_play_poster" class="poster" :src="v.pic">
|
|
|
|
- </cover-image>
|
|
|
|
-
|
|
|
|
- <cover-image
|
|
|
|
- class="ico-video-play" v-if="show_play"
|
|
|
|
- @tap="start"></cover-image>
|
|
|
|
|
|
+ <swiper-item v-for="(v, k) in item">
|
|
|
|
|
|
- <pos :item="v" :down="v.video"></pos>
|
|
|
|
|
|
+ <dever-video
|
|
|
|
+ :item="v"
|
|
|
|
+ :src="v.video"
|
|
|
|
+ :pic="v.pic"
|
|
|
|
+ :index="k"
|
|
|
|
+ :vid="v.id"
|
|
|
|
+ ref="video"
|
|
|
|
+ >
|
|
|
|
+ </dever-video>
|
|
|
|
|
|
- <cover-view class="cover-view-right" v-if="showInfo">
|
|
|
|
- <cover-image :src="item[0].pic"
|
|
|
|
- class="avater img"
|
|
|
|
- @click.stop="tapAvater"></cover-image>
|
|
|
|
-
|
|
|
|
- <text class="right-follow">+</text>
|
|
|
|
- <cover-image
|
|
|
|
- style="position:relative;top:-20upx;"
|
|
|
|
- :src="up ? '../../static/video/axc.png' : '../../static/video/bed.png'"
|
|
|
|
- class="img-left" @click.stop="tapLove"></cover-image>
|
|
|
|
-
|
|
|
|
- <text class="right-text">1</text>
|
|
|
|
- <cover-image src="@/static/video/ay2.png"
|
|
|
|
- style="height: 80upx;" class="img-left" @click.stop="tapMsg"></cover-image>
|
|
|
|
-
|
|
|
|
- <text class="right-text">10</text>
|
|
|
|
- <cover-image src="@/static/video/b6p.png"
|
|
|
|
- style="height: 76upx;" class="img-left" @click.stop="tapShare"></cover-image>
|
|
|
|
-
|
|
|
|
- <text class="right-text">10</text>
|
|
|
|
- <cover-image src="@/static/video/changpian.png" class="musicIcon img">
|
|
|
|
- </cover-image>
|
|
|
|
-
|
|
|
|
- <cover-view class="progressBar" :animation="animationData" ></cover-view>
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- </cover-view>
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
</swiper-item>
|
|
</swiper-item>
|
|
</swiper>
|
|
</swiper>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
-<script>
|
|
|
|
-import pos from "@/pages/dream/view/pos.vue";
|
|
|
|
|
|
+<script>
|
|
|
|
+import deverVideo from '@/lib/dever/components/video.nvue';
|
|
var play = true;
|
|
var play = true;
|
|
export default {
|
|
export default {
|
|
name: "vodShort",
|
|
name: "vodShort",
|
|
@@ -90,86 +35,30 @@ export default {
|
|
},
|
|
},
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
- page : 0,
|
|
|
|
- up: false,
|
|
|
|
- time: 0,
|
|
|
|
- barWidth:0,
|
|
|
|
- animationData: {},
|
|
|
|
- times:null,
|
|
|
|
- show_play:true,
|
|
|
|
- show_play_poster:true,
|
|
|
|
- muted: true,
|
|
|
|
current_index: 0,
|
|
current_index: 0,
|
|
- showInfo: false,
|
|
|
|
};
|
|
};
|
|
},
|
|
},
|
|
created() {
|
|
created() {
|
|
- /*
|
|
|
|
- 进入页面自动播放,已取消
|
|
|
|
- setTimeout(()=>{
|
|
|
|
- play = true;
|
|
|
|
- this.start();
|
|
|
|
- },1000)
|
|
|
|
- */
|
|
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ mounted() {
|
|
|
|
+ this.config.stop[this.config.page] = this;
|
|
},
|
|
},
|
|
- methods:{
|
|
|
|
- //获取video_id
|
|
|
|
- id : function(index) {
|
|
|
|
- var video_id = this.item[index].id;
|
|
|
|
- return 'video_short_' + video_id;
|
|
|
|
- },
|
|
|
|
- update : function(event) {
|
|
|
|
- let t_w = parseInt(this.width);
|
|
|
|
- this.duration = event.detail.duration;
|
|
|
|
- this.time = event.detail.currentTime;
|
|
|
|
- let width = (this.time / this.duration) * t_w;
|
|
|
|
- let w = 0;
|
|
|
|
- },
|
|
|
|
- start : function() {
|
|
|
|
- this.config.stop[this.config.page] = this;
|
|
|
|
- this.handle(play);
|
|
|
|
- },
|
|
|
|
- stop : function() {
|
|
|
|
- this.handle(false);
|
|
|
|
- },
|
|
|
|
- handle : function(state) {
|
|
|
|
- this.show_play_poster = false;
|
|
|
|
- var id = this.id(this.current_index);
|
|
|
|
- if (state) {
|
|
|
|
- this.videoCtx = uni.createVideoContext(id, this);
|
|
|
|
- this.videoCtx.play();
|
|
|
|
- this.muted = false;
|
|
|
|
- this.show_play = false;
|
|
|
|
- play = false;
|
|
|
|
- //console.info('播放', id, this.current_index);
|
|
|
|
- } else if(!play) {
|
|
|
|
- this.videoCtx = uni.createVideoContext(id, this);
|
|
|
|
- this.videoCtx.pause();
|
|
|
|
- this.muted = true;
|
|
|
|
- this.show_play = true;
|
|
|
|
- play = true;
|
|
|
|
- //console.info('暂停', id, this.current_index);
|
|
|
|
- }
|
|
|
|
|
|
+ methods:{
|
|
|
|
+ start : function() {
|
|
|
|
+ this.$refs.video[this.current_index].start();
|
|
|
|
+ },
|
|
|
|
+ stop : function() {
|
|
|
|
+ this.$refs.video[this.current_index].stop();
|
|
},
|
|
},
|
|
- changeVod : function(e) {
|
|
|
|
- // 暂停之前的视频
|
|
|
|
- this.stop();
|
|
|
|
- this.current_index = e.detail.current;
|
|
|
|
- // 播放现在的视频
|
|
|
|
- this.start();
|
|
|
|
-
|
|
|
|
- // 判断是否第一条
|
|
|
|
- if (e.detail.current == 0) {
|
|
|
|
- //console.log('到顶了');
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 判断是否最后一条
|
|
|
|
- if (e.detail.current == this.item.length-1) {
|
|
|
|
- //console.log('到底了');
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ changeVod : function(e) {
|
|
|
|
+ var self = this;
|
|
|
|
+ self.$nextTick(()=>{
|
|
|
|
+ self.stop();
|
|
|
|
+ self.current_index = e.detail.current;
|
|
|
|
+ self.start();
|
|
|
|
+ });
|
|
|
|
+
|
|
},
|
|
},
|
|
tapMsg : function(e) {
|
|
tapMsg : function(e) {
|
|
console.log(5, e);
|
|
console.log(5, e);
|
|
@@ -183,13 +72,9 @@ export default {
|
|
console.log(7, e);
|
|
console.log(7, e);
|
|
}
|
|
}
|
|
},
|
|
},
|
|
- watch: {
|
|
|
|
- play : function(newVal, oldVal) {
|
|
|
|
- this.start();
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
|
|
+
|
|
components:{
|
|
components:{
|
|
- pos
|
|
|
|
|
|
+ deverVideo
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
</script>
|
|
@@ -202,132 +87,6 @@ export default {
|
|
position: relative;
|
|
position: relative;
|
|
top: 0;
|
|
top: 0;
|
|
left: 0;
|
|
left: 0;
|
|
-}
|
|
|
|
-.video {
|
|
|
|
- width: 100%;
|
|
|
|
- height: 100%;
|
|
|
|
- position: relative;
|
|
|
|
-}
|
|
|
|
-.play{
|
|
|
|
- position: absolute;
|
|
|
|
- width: 20vw;
|
|
|
|
- height: 20vw;
|
|
|
|
- left: 40vw;
|
|
|
|
- top: 40vh;
|
|
|
|
- opacity: 0.5;
|
|
|
|
-}
|
|
|
|
-.poster{
|
|
|
|
- background-size: cover;
|
|
|
|
- position: absolute;
|
|
|
|
- left: 0;
|
|
|
|
- top: 0;
|
|
|
|
- width: 100%;
|
|
|
|
- height: 100%;
|
|
|
|
-}
|
|
|
|
-.progressBar {
|
|
|
|
- border-radius: 2upx;
|
|
|
|
- height: 4upx;
|
|
|
|
- background-color: #FF4500;
|
|
|
|
- z-index: 999999;
|
|
|
|
- position: absolute;
|
|
|
|
- bottom: 68rpx;
|
|
|
|
-}
|
|
|
|
-.ico-video-play{
|
|
|
|
- background: url(@/static/icon/ico-video-play.png) no-repeat;
|
|
|
|
- background-size: cover;
|
|
|
|
- width: 100rpx;
|
|
|
|
- height: 100rpx;
|
|
|
|
- position: absolute;
|
|
|
|
- left: 50%;
|
|
|
|
- top: 50%;
|
|
|
|
- transform: translate3d(-50%,-50%,0);
|
|
|
|
-}
|
|
|
|
-.cover-view-left {
|
|
|
|
- position: absolute;
|
|
|
|
- margin-left: 20upx;
|
|
|
|
- width: 580upx;
|
|
|
|
- bottom: 110upx;
|
|
|
|
- z-index: 9999;
|
|
|
|
- font-size: 14px;
|
|
|
|
- color: #ffffff;
|
|
|
|
-}
|
|
|
|
-.left-text {
|
|
|
|
- font-size: 14px;
|
|
|
|
- color: #ffffff;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.cover-view-right {
|
|
|
|
- position: absolute;
|
|
|
|
- bottom: 40px;
|
|
|
|
- right: 30upx;
|
|
|
|
- z-index: 9999;
|
|
|
|
- text-align: center;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.avater {
|
|
|
|
- border-radius: 50%;
|
|
|
|
- border-width: 2px;
|
|
|
|
- border-style: solid;
|
|
|
|
- border-color: #ffffff;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.img {
|
|
|
|
- height: 90upx;
|
|
|
|
- width: 90upx;
|
|
|
|
- margin-bottom: 110upx;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.img-left {
|
|
|
|
- width: 80upx;
|
|
|
|
- height: 66upx;
|
|
|
|
- padding-left: 4px;
|
|
|
|
-}
|
|
|
|
-.right-follow {
|
|
|
|
- position: absolute;
|
|
|
|
- z-index: 100;
|
|
|
|
- top: 75upx;
|
|
|
|
- left: 28upx;
|
|
|
|
- color: #ffffff;
|
|
|
|
- font-size: 16px;
|
|
|
|
- width: 34upx;
|
|
|
|
- height: 34upx;
|
|
|
|
- background-color: #f12f5b;
|
|
|
|
- text-align: center;
|
|
|
|
- line-height: 34upx;
|
|
|
|
- border-radius: 17upx;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.right-text {
|
|
|
|
- color: #ffffff;
|
|
|
|
- font-size: 11px;
|
|
|
|
- text-align: center;
|
|
|
|
- margin-bottom: 40upx;
|
|
|
|
-}
|
|
|
|
-.musicIcon {
|
|
|
|
- margin-top: 40upx;
|
|
|
|
-}
|
|
|
|
-@keyframes rotating {
|
|
|
|
- from {
|
|
|
|
- transform: rotate(0);
|
|
|
|
- }
|
|
|
|
- to {
|
|
|
|
- transform: rotate(360deg);
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-.view-left-text-content {
|
|
|
|
- flex: 1;
|
|
|
|
-}
|
|
|
|
-.view-left-text {
|
|
|
|
- color: #ffffff;
|
|
|
|
- font-size: 18px;
|
|
|
|
- margin-bottom: 10upx;
|
|
|
|
- font-weight: bold;
|
|
|
|
-}
|
|
|
|
-.text-content-text {
|
|
|
|
- color: #ffffff;
|
|
|
|
- font-size: 16px;
|
|
|
|
- line-height: 50upx;
|
|
|
|
- height: 100upx;
|
|
|
|
- overflow: hidden;
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
</style>
|
|
</style>
|