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

关于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 项目中集成西瓜播放器 (XGPlayer),首先需要安装必要的 npm 包。 ```bash npm install @xgplayer/core @xgplayer/flv.js --save ``` 这会下载核心播放器以及 FLV 支持所需的文件[^1]。 #### 创建播放组件 创建一个新的 Vue 组件 `LiveStream.vue` 来封装 XGPlayer 的实例化逻辑: ```vue <template> <div ref="playerContainer"></div> </template> <script setup> import { onMounted, ref } from &#39;vue&#39; import Player from &#39;@xgplayer/core&#39; import flvjsPlugin from &#39;@xgplayer/flv.js&#39; const playerContainer = ref(null) onMounted(() => { const playerInstance = new Player({ el: playerContainer.value, url: &#39;your_flv_stream_url_here&#39;, plugins: [ [flvjsPlugin] ], autoplay: true, controls: true }) // 销毁玩家实例以防止内存泄漏 function destroyPlayer() { if (!playerInstance.destroyed) { playerInstance.destroy() } } window.addEventListener(&#39;beforeunload&#39;, destroyPlayer) }) </script> <style scoped> /* 自定义样式 */ .player-container { width: 100%; height: auto; } </style> ``` 此代码片段展示了如何初始化一个支持 FLV 流媒体格式的播放器,并将其附加到指定 DOM 元素上。注意设置 `url` 属性指向实际使用的直播流地址。 #### 处理跨域问题 当从不同源获取视频资源时可能会遇到 CORS(跨域资源共享)错误。可以通过配置 Nginx 或其他反向代理服务器来解决这个问题。对于 Nginx,可以按照如下方式修改其配置文件[^2]: ```nginx location /live/ { add_header Access-Control-Allow-Origin *; # 设置允许访问的所有域名 proxy_pass http://backend_server_address/; ... } ``` 上述配置使得前端能够顺利请求来自后端的服务接口而不受同源策略限制。 #### 解决常见问题 - **黑屏不播放**:确认 URL 正确无误;检查网络连接状况; - **加载缓慢**:优化 CDN 缓存机制;调整缓冲区大小参数; - **断流卡顿重连**:启用自动恢复功能;增加最大尝试次数选项。 通过以上步骤可以在 Vue3 应用程序里成功部署基于 XGPlayer 的直播解决方案。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值