Flex
2025-03-31 d22f65477d269a8e13c216cedd47bdbf91d74e43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<!-- 针对mov视频的视频处理 -->
<template>
  <div class="w-full" :style="{ height: `${property.style.height}px` }">
    <el-image class="w-full w-full" :src="property.posterUrl" v-if="property.posterUrl" />
    <!-- :src="TakeUrl('/public/mov/processed_video.mov')" -->
    <video
      :style="{ height: `${property.style.height}px` }"
      v-else
      class="w-full w-full"
      :src=" TakeUrl(property.videoUrl) "
      :poster="property.posterUrl"
      :autoplay="property.autoplay"
      controls
      ref="videoRef"
    ></video>
  </div>
</template>
<script setup lang="ts">
import { ref } from "vue";
import { VideoPlayerProperty } from './config'
 
import { MoveToMp4 } from "@/utils/MovToMp4"
 
const videoRef = ref()
 
/** 视频播放 */
defineOptions({ name: 'VideoPlayer' })
 
defineProps<{ property: VideoPlayerProperty }>()
 
// 视频文件地址处理
 
const TakeUrl = async (url:string) => {
  let fileType = String( url.slice( url.lastIndexOf(".")+1 ) )
  if( fileType === 'mov' ){
    let file = await MoveToMp4( url )
    videoRef.value.src = file
  }else{
    videoRef.value.src = url
  }
  
}
 
 
</script>
 
<style scoped lang="scss">
/* 图片 */
img {
  display: block;
  width: 100%;
  height: 100%;
}
</style>