关于vue3开发西瓜视频播放器--xgplayer的那些坑

本文介绍了在Vue3中使用xgplayer开发直播流播放器时遇到的坑,包括视频格式选择、直播流插件配置以及注意事项,提供了flv和直播流的代码示例,希望能帮助开发者避免常见问题。

关于vue3开发西瓜视频播放器–xgplayer的那些坑

写在前面,官网地址:https://v2.h5player.bytedance.com/plugins/#xgplayer-flv-js

刚入职就接手一个需求,开发一个直播流,实现在线实时监控的播放功能。话不多说,直接进入主题,坑在哪里?

用西瓜视频播放器的插件实现时要注意区分视频格式是flv或者是MP4格式,还是直播流,每种类型的插件选择是不一样的,例如:这个是直播流的插件
在这里插入图片描述
踩坑踩多了也就习惯了,还好官网有示例,可以反复尝试。

各位小伙伴,如果需要实现flv视频播放的话,代码呈上,请笑纳!

记住,plugins是关键,因为这个配置没写,效果一直出不来

import Player from "xgplayer";
import FlvPlayer from "xgplayer-flv";
const initPlayer = () => {
  player = new Player({
    id: "player",
    url: url,
    plugins: [FlvPlayer],
    playsinline: false,
    autoplay: true,
    fluid: true,
    isLive: true,
    screenShot: true,
    whitelist: [""],
    ignores: ["time"],
    closeVideoClick: true,
    customConfig: {
      isClickPlayBack: false,
    },
  });
};

接下来就是直播流的了,写法都差不多,关键点就是配置项

import Player from "xgplayer";
import FlvJsPlayer from 'xgplayer-flv.js';
const initPlayer = ()=>{
  player= new Player({
				id: 'player',
				url: url,
        		plugins: [FlvJsPlayer],
				fluid: true,
				autoplay: true,
				isLive: true,
				playsinline: false,
				screenShot: true,
				whitelist: [''],
				ignores: ['time'],
				closeVideoClick: true,
				// errorTips: '<span class="app-error">无视频源</span>',
				customConfig: {
					isClickPlayBack: false
				},
				flvOptionalConfig: {
					enableWorker: true,
					enableStashBuffer: true, //启用缓存
					stashInitialSize: 4096, //缓存大小4m
					lazyLoad: false,
					lazyLoadMaxDuration: 40 * 60,
					autoCleanupSourceBuffer: true,
					autoCleanupMaxBackwardDuration: 35 * 60,
					autoCleanupMinBackwardDuration: 30 * 60
				} 
}

希望对各位小伙伴有用处,哈哈!

### 在 Vue3 中使用西瓜播放器实现播放列表功能 在 Vue3 项目中集成西瓜播放器并实现播放列表功能,可以通过以下方式完成。以下是具体的实现方法: #### 1. 安装西瓜播放器 首先需要安装西瓜播放器及其相关依赖: ```bash npm install xgplayer xgplayer-hls xgplayer-flv ``` #### 2. 创建播放器组件 创建一个专门用于管理播放器的组件 `XgPlayerWithPlaylist.vue`,并在其中初始化播放器实例。 ```vue <template> <div ref="videoEl" class="video-player"></div> </template> <script setup lang="ts"> import { ref, onMounted, onBeforeUnmount } from &#39;vue&#39;; import Player from &#39;xgplayer&#39;; import &#39;xgplayer/dist/index.min.css&#39;; const props = defineProps({ playlist: { type: Array, required: true, }, }); const videoEl = ref<HTMLDivElement | null>(null); let playerInstance: Player | null = null; onMounted(() => { if (videoEl.value) { playerInstance = new Player({ el: videoEl.value, url: props.playlist[0].url, // 默认加载第一个视频 poster: props.playlist[0].poster || &#39;&#39;, // 封面图 autoplay: false, width: 640, height: 360, controls: true, preload: &#39;auto&#39;, events: { ended() { nextVideo(); }, }, }); } }); const nextVideo = () => { if (playerInstance && props.playlist.length > 1) { const currentIndex = props.playlist.findIndex( (item) => item.url === playerInstance.config.url ); const nextIndex = (currentIndex + 1) % props.playlist.length; playerInstance.load(props.playlist[nextIndex].url, true); playerInstance.poster = props.playlist[nextIndex].poster || &#39;&#39;; } }; onBeforeUnmount(() => { playerInstance?.destroy(); playerInstance = null; }); </script> <style scoped> .video-player { width: 100%; height: 100%; } </style> ``` #### 3. 父组件中使用播放器组件 在父组件中定义播放列表数据,并传递给播放器组件。 ```vue <template> <div> <h1>西瓜播放器播放列表演示</h1> <hr /> <XgPlayerWithPlaylist :playlist="videoPlaylist" /> </div> </template> <script setup lang="ts"> import XgPlayerWithPlaylist from &#39;./components/XgPlayerWithPlaylist.vue&#39;; const videoPlaylist = [ { url: &#39;https://example.com/video1.mp4&#39;, poster: &#39;https://example.com/poster1.jpg&#39;, }, { url: &#39;https://example.com/video2.mp4&#39;, poster: &#39;https://example.com/poster2.jpg&#39;, }, { url: &#39;https://example.com/video3.mp4&#39;, poster: &#39;https://example.com/poster3.jpg&#39;, }, ]; </script> ``` #### 4. 播放列表功能说明 - 当前播放器会自动播放播放列表中的第一个视频。 - 当视频播放结束时,通过监听 `ended` 事件触发下一个视频的加载[^2]。 - 如果需要手动切换视频,可以在父组件中添加按钮或其他交互逻辑,调用播放器实例的 `load` 方法来加载指定的视频资源。 ### 注意事项 - 确保播放列表中的每个视频都包含有效的 `url` 和可选的 `poster` 属性。 - 如果需要支持 HLS 或 FLV 格式视频,需引入对应的插件 `xgplayer-hls` 或 `xgplayer-flv`[^3]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值