hookehuyr

✨ feat(组件): 新增纯视频播放组件

1 +<template>
2 + <div class="video-wrapper">
3 + <div
4 + class="video-div"
5 + :id="'mui-player-' + item.id"
6 + ></div>
7 + </div>
8 +</template>
9 +
10 +<script setup>
11 + /**
12 + * 视频组件通用模块
13 + */
14 + import 'mui-player/dist/mui-player.min.css';
15 + import MuiPlayer from 'mui-player';
16 + import { onMounted } from 'vue';
17 + // 视频基础属性
18 + const props = defineProps({
19 + item: Object,
20 + });
21 + // 视频播放事件回调
22 + const emit = defineEmits(['on-play']);
23 +
24 + onMounted(() => {
25 + const mp = new MuiPlayer({
26 + container: '#mui-player-' + props.item.id,
27 + title: props.item.title,
28 + src: props.item.video,
29 + poster: props.item.cover,
30 + autoFit: false,
31 + videoAttribute: [
32 + // 声明启用同层播放, 不让会自动全屏播放
33 + { attrKey: 'webkit-playsinline', attrValue: 'webkit-playsinline' },
34 + { attrKey: 'playsinline', attrValue: 'playsinline' },
35 + { attrKey: 'x5-video-player-type', attrValue: 'h5-page' },
36 + ],
37 + });
38 + const video = mp.video();
39 + // 监听原生video事件
40 + video &&
41 + video.addEventListener('play', function (event) {
42 + emit('on-play', {
43 + event,
44 + props: props.item,
45 + });
46 + });
47 + });
48 +</script>
49 +
50 +<style lang="less" scoped>
51 + .video-wrapper {
52 + margin: 1rem;
53 + border-bottom-left-radius: 5px;
54 + border-bottom-right-radius: 5px;
55 + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.13);
56 +
57 + .video-div {
58 + border-top-left-radius: 5px;
59 + border-top-right-radius: 5px;
60 + }
61 + }
62 +</style>
1 +export default [
2 + {
3 + "id": 314952,
4 + "localism_type": "普通话",
5 + "cover": "https://gd-pri.jinshujufiles.com/en/NAGn1D/FgYwXBnKzvOcLNoojqrpwYGsppQI_field_74_1652859614.png?token=7NK_Z1IEoKaIY6I9RXzO4b9uQPwuwdvnlGbzHZmF:A3XNpa2-O4eaFjPK5R0pM-wMS2Q=:eyJTIjoiZ2QtcHJpLmppbnNodWp1ZmlsZXMuY29tL2VuL05BR24xRC9GZ1l3WEJuS3p2T2NMTm9vanFycHdZR3NwcFFJX2ZpZWxkXzc0XzE2NTI4NTk2MTQucG5nKiIsIkUiOjE5Njg0MjkxNDZ9",
6 + "video": "https://gd-pri.jinshujufiles.com/en/NAGn1D/FjyggcxvTB9HJ6yFBv4i7-HDuW8F_field_20_1652859612.mp4?token=7NK_Z1IEoKaIY6I9RXzO4b9uQPwuwdvnlGbzHZmF:YLs7BNF-chzhTsnoFqje-x4RIao=:eyJTIjoiZ2QtcHJpLmppbnNodWp1ZmlsZXMuY29tL2VuL05BR24xRC9GanlnZ2N4dlRCOUhKNnlGQnY0aTctSER1VzhGX2ZpZWxkXzIwXzE2NTI4NTk2MTIubXA0KiIsIkUiOjE5Njg0MjkxNDZ9",
7 + "note": "z",
8 + "kg_id": 314481,
9 + "kg_name": "云南省普洱市镇沅彝族哈尼族拉祜族自治县者东镇幼儿园",
10 + "perf_id": 314950,
11 + "name": "胡二",
12 + "avatar": "https://cdn.ipadbiz.cn/ipadbiz/MjEwMzViY2QzM2RlZDJhZTEyNjM1Y2UxOGZiZDcyYjg0NmYxNDljNg.jpeg",
13 + "book_id": 314483,
14 + "book_name": "《它们从哪里来》",
15 + "comment_num": 0,
16 + "like_num": 1,
17 + "favor_num": 0,
18 + "play_num": 1,
19 + "is_like": 1
20 + },
21 + {
22 + "id": 314946,
23 + "localism_type": "普通话",
24 + "cover": "https://gd-pri.jinshujufiles.com/en/g7D0MT/FgYwXBnKzvOcLNoojqrpwYGsppQI_field_74_1652857953.png?token=7NK_Z1IEoKaIY6I9RXzO4b9uQPwuwdvnlGbzHZmF:CYT2_4fEbC6BoYDc8rXUJxXiZx4=:eyJTIjoiZ2QtcHJpLmppbnNodWp1ZmlsZXMuY29tL2VuL2c3RDBNVC9GZ1l3WEJuS3p2T2NMTm9vanFycHdZR3NwcFFJX2ZpZWxkXzc0XzE2NTI4NTc5NTMucG5nKiIsIkUiOjE5Njg0Mjc0ODV9",
25 + "video": "https://gd-pri.jinshujufiles.com/en/g7D0MT/FjyggcxvTB9HJ6yFBv4i7-HDuW8F_field_20_1652857950.mp4?token=7NK_Z1IEoKaIY6I9RXzO4b9uQPwuwdvnlGbzHZmF:1i5wziqwGbCx41ZKzO-qWwYZyeQ=:eyJTIjoiZ2QtcHJpLmppbnNodWp1ZmlsZXMuY29tL2VuL2c3RDBNVC9GanlnZ2N4dlRCOUhKNnlGQnY0aTctSER1VzhGX2ZpZWxkXzIwXzE2NTI4NTc5NTAubXA0KiIsIkUiOjE5Njg0Mjc0ODV9",
26 + "note": "Z",
27 + "kg_id": 314481,
28 + "kg_name": "云南省普洱市镇沅彝族哈尼族拉祜族自治县者东镇幼儿园",
29 + "perf_id": 314945,
30 + "name": "胡大",
31 + "avatar": null,
32 + "book_id": 314483,
33 + "book_name": "《它们从哪里来》",
34 + "comment_num": 1,
35 + "like_num": 1,
36 + "favor_num": 0,
37 + "play_num": 1,
38 + "is_like": 1
39 + }
40 +]