vue使用v-html渲染video不能播放?

有个重构项目的需求,其中有个功能就是渲染后端返回的html字符串。

一般的标签展示出来没问题,但是在有video标签时出现了问题,此时控制台有一些403的报错

如果直接在网上找的视频,是可以直接使用的,但是调了接口就会出现403的报错

video标签加载出来了,但是不能进行控制播放

代码:

<div class="html_container text_start" ref="content" v-html='vHtml'></div>

<script>
export default {
	data(){
		return {
			vHtml:'<div>......</div>', // 假设vHtml为包含video的html字符串
		}
	}
}
</script>

猜测错误原因:

猜测1. v-html在渲染video时有问题

对应操作: 不使用v-html,改为element.append或者element.insertAdjacentHTML
代码:

<div class="html_container text_start" ref="content" id="content"></div>


<script>
export default {
	mounted(){
		let vHtml = '<div>......</div>'; // 假设vHtml为包含video的html字符串
		let element = document.getElementById('content');
		element.insertAdjacentHTML("beforeend", vHtml);
	},
}
</script>

页面查看效果和之前用v-html的效果是一样的

猜测2. 为什么会有403

原因:Referer携带了我们自身网站的域名,第三方网站认为这是非法访问,所以报错403 forbidden,因此我们需要在自己项目中跳转第三方外链的时候,去掉Referer信息

这是本地使用v-html渲染video获取视频的请求:

在这里插入图片描述

直接在网页打开该视频链接获取事情的请求:

在这里插入图片描述

对应操作:
在html文件里添加一个meta标签

<meta name="referrer" content="never">

如此即可正常播放!!!

### 如何在 Vue2 中使用 `vue-video-player` 播放 HLS 视频 #### 安装依赖库 为了能够在 Vue2 项目中播放 HLS 流媒体视频,需要安装必要的 npm 包: ```bash npm install video.js vue-video-player hls.js --save ``` 这会安装 Video.js 及其对应的 Vue 组件以及专门处理 HTTP Live Streaming (HLS) 的 JavaScript 库。 #### 导入样式文件和初始化插件 确保导入 Video.js 和 Hls.js 所需的 CSS 文件,并注册 `vue-video-player` 插件以便可以在整个应用程序中使用它。通常,在项目的入口文件(如 main.js 或 app.js)里完成此操作: ```javascript // 引入VideoJS的基础样式表 import 'video.js/dist/video-js.css'; // 如果想要自定义主题,则引入对应的主题CSS import 'vue-video-player/src/custom-theme.css'; // 注册全局组件 import { VideoPlayer } from 'vue-video-player' Vue.component('video-player', VideoPlayer) // 初始化hls插件到videojs环境 const Hls = require('hls.js'); if (Hls.isSupported()) { window.Hls = Hls; } ``` #### 使用 `video-player` 组件并设置 HLS URL 当创建包含 `<video-player>` 标签的模板时,可以通过传递 options 属性来指定要使用的源和技术参数。对于 HLS 类型的内容,应该提供一个有效的 m3u8 地址作为 src 值的一部分[^1]: ```html <template> <div class="example"> <!-- 配置项 --> <video-player :options="playerOptions"></video-player> </div> </template> <script> export default { data() { return { playerOptions: { autoplay: false, controls: true, sources: [{ type: "application/x-mpegURL", // 对于HLS流应为MPEG-DASH或HTTP Live Stream src: "https://your-hls-url.com/playlist.m3u8" }], techOrder: ['html5'], flash: { hls: { withCredentials: false }}, html5: { hls: { overrideNative: true }} } }; }, }; </script> ``` 上述代码片段展示了如何通过选项对象中的 `sources` 数组指定了 HLS 资源的位置,并设置了技术顺序优先考虑 HTML5 技术栈而不是 Flash 来渲染视频内容。同时启用了覆盖原生行为的功能以确保最佳兼容性和性能表现。 #### 解决音量控制条显示异常的问题 如果遇到音量调节控件无法正确展示的情况,可能是因为缺少了特定版本下的样式资源链接。按照下面的方式调整 import 语句可能会有所帮助[^2]: ```javascript require('vue-video-player/node_modules/video.js/dist/video-js.min.css') ``` 另外需要注意的是,某些浏览器出于用户体验考量会对自动播放功能施加严格限制,因此即使设置了 `autoplay=true` ,也可能不会立即开始回放音频或视频数据除非用户进行了交互动作触发[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值