uni-app nvue页面中使用video视频播放组件

这篇具有很好参考价值的文章主要介绍了uni-app nvue页面中使用video视频播放组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我遇到的问题是,在nvue页面引用video组件,然后啥也没显示的,显示了无法控制播放,折腾了好久,在这里记录下来!希望可以帮助到需要的人

我的代码是这样的(src换成官方的举例)

<video id="myVideo" object-fit="cover" controls show-loading class="r-video" @ended="videoEnd()"
				       :vslide-gesture="true" :vslide-gesture-in-fullscreen="true"
					   src="https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/%E7%AC%AC1%E8%AE%B2%EF%BC%88uni-app%E4%BA%A7%E5%93%81%E4%BB%8B%E7%BB%8D%EF%BC%89-%20DCloud%E5%AE%98%E6%96%B9%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B@20200317.mp4">
				</video>

 问题1:视频页面一片空白,后来去查官方文档是这样说的

uni-app nvue页面中使用video视频播放组件

我以为按照官方提示勾选 manifest.json->App 模块权限配置->VideoPlayer 模块就可以看到视频了,结果重新编译代码后还是一片空白,百思不得其解。又检查一遍视频的src路径、确定浏览器可以播放,复制放在微信小程序运行也没有问题,又看了manifest.json文件,确实没有问题!后面重新打一个自定义基座就可以看到视频了(原来是勾选之后要重新打包才生效)

uni-app nvue页面中使用video视频播放组件

问题2:播放本地视频? 不是网络视频,也不是项目中static文件下的视频,而是后端接口返回https视频链接,然后下载到本机本地中,视频路径从本地读取

因为公司做的是旅游行业,需求是做一个景区的景点播报,一个景区可以有多个景点,list就是我拿到的景点列表,因为怕下载的视频太多占用内存,所以先删除再下载到本地文件中!

savedFilePath 路径是这样的  _doc/uniapp_save/16833647476817.mp4

//先删除本地文件
			deleteFile(list) {
				uni.getSavedFileList({  
					success:(res)=> {  
			            if (res.fileList.length > 0) {
							for(var i=0;i<res.fileList.length;i++) {
								uni.removeSavedFile({
								    filePath: res.fileList[i].filePath,  
									complete: (res) => {
										console.log('删除本地文件成功')
									}  
								})
								//循环结束
								if(i == res.fileList.length - 1) {
									this.filterFile(list)
								}
							}  
						} else{
							this.filterFile(list)
						} 
					}  
				});  
			},
			//判断MP3、MP4文件是否为空
			filterFile(list) {
				for(var i=0;i<list.length;i++) {
					if(list[i].radio !='') {
						this.downloadFile(i,list[i].radio,'r')
					}
					if(list[i].video !='') {
						this.downloadFile(i,list[i].video,'v')
					}
				}
			},
			//下载文件
			downloadFile(index,url,name) {
				uni.downloadFile({
					url: url,   //下载地址接口返回
					success: (data) => {
						if (data.statusCode === 200) {
							//文件保存到本地
							uni.saveFile({
								tempFilePath: data.tempFilePath,   //临时路径
								success: (res) => {
									if(name == 'r')	{
										this.pointList[index].radio = res.savedFilePath
									} else {
										this.pointList[index].video = res.savedFilePath
									}
									console.log('pointList===',this.pointList)
								}
							});
						}
					},
					fail: (err) => {
						console.log('下载失败',err)
					},
				});
			},

本地路径弄到了,但是我想通过js控制播放视频,发现播放不了!尝试过多种方法

例如:

1、在组件上面ref绑定,然后通过 this.$refs.myVideo.play() 也不行

2、在组件上面设置id,然后 onLoad、onReady里面创建createVideoContext 也不行

3、尝试过拿到本地路径后,再转换一遍路径 plus.io.convertLocalFileSystemURL(url) 也不行

uni-app nvue页面中使用video视频播放组件

 后来百度搜索,发现社区里有一个官方的回答是这样的

uni-app nvue页面中使用video视频播放组件

 复制放上去,这会儿可以控制播放视频了!!!文章来源地址https://www.toymoban.com/news/detail-435169.html

//如果缓存中的播报id和出现的播报id不同,那么就播报
					if (uni.getStorageSync('popupIds') != id) { //这个id是每秒获取的景点id
						let popupIdList = uni.getStorageSync('popupIdList') || []
						if(!popupIdList.includes(id)) {  //判断数组中是否包含某个值
							popupIdList.push(id)
							uni.setStorageSync('popupIds', id)
							uni.setStorageSync('popupIdList', popupIdList)
							var list = this.pointList //这是景点列表,音频和视频是本地路径
							for(var i=0;i<list.length;i++) {
								console.log('bbbbbbbbbbbbb===',id,list[i].id)
								if(list[i].id == id) {
									this.scenic_name = list[i].name
									this.scenic_image = list[i].image
									this.scenic_radio = list[i].radio
									if(list[i].introduce!='') {
										this.scenic_introduce = HTMLParser(list[i].introduce) //获取到的html字符;再进行转换
										this.popup1 = true
										this.popup1Num = 60
										this.popup1Timer = setInterval(()=>{
											this.popup1Num -= 1
											if(this.popup1Num == 0) {
												this.closePopup1()
											}
										},1000)
									}
									if(list[i].video !='') {
										this.scenic_video = list[i].video
										this.popup2 = true
										this.$nextTick(() => {
										  this.videoContext = uni.createVideoContext("myVideo", this); 
										  this.videoContext.play();  
										})
									}
									this.$forceUpdate()
									break;
								}
							}
						}
					}

到了这里,关于uni-app nvue页面中使用video视频播放组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-app基础详解(组件、弹窗、数据缓存、页面跳转)

    uni-app组件 scroll-view 回到顶部 swiper text 文本 属性 说明 selectable 是否选中 decode 解码 例如: lt; , gt; 等 space 是否显示空格 space的参数值 参数 说明 emsp 中文字符空格大小 ensp 中文字符空格一半大小 nbsp 根据字体设置的空格大小 button 按钮 input 输入框 属性名 类型 默认值 说明

    2024年01月18日
    浏览(34)
  • uni-app自定义组件components导入失败或页面不显示文本等

            一般来说分三步走,如下图  如果引入不成功则考虑以下几个问题: 是 components 而非 component 导入后的命名方式采用驼峰命名法 检查需要引入的文件路径和文件名是否正确 如果还有问题,则采用第二种方式直接在 components 中引入、注册一体,引入直接使用 chan

    2024年02月16日
    浏览(43)
  • uni-app引入海康威视h5player实现视频监控的播放

    知识储备 uni-app web-view组件相关知识:点击学习。 海康威视相关工具下载:点击跳转下载。 web-view组件不全屏显示:uni-app web-view 如果设置不全屏 不自动铺满。 工具下载 首先下载海康威视h5player的demo 在uni-app项目中static文件夹下创建文件目录,我命名为h5player 将demo中bin文件

    2024年02月02日
    浏览(35)
  • uni-app中监听网络状态,并在嵌入webView页面的组件中添加网络监测

    下载插件 打开网络异常组件页面,点击\\\"下载插件并导入HBuilderX\\\"按钮,打开HBuilderX软件后,选择需要导入插件的项目,点击“确定即可”。 使用插件 pages/network/index页面,仿照微信。 效果展示 修改网络监测组件mz-network-error 当网络状态发生变化时emit相关事件 修改组件调用

    2024年02月12日
    浏览(34)
  • 微信小程序:uni-app页面Page和组件Component生命周期执行的先后顺序

    文档 页面生命周期 https://uniapp.dcloud.net.cn/tutorial/page.html#lifecycle 组件生命周期 https://uniapp.dcloud.net.cn/tutorial/page.html#componentlifecycle 经测试,得出结论: H5和微信小程序的生命周期函数调用顺序不一致 一般情况下,主要使用的周期函数如下,他们的执行顺序是固定的 页面 组件

    2024年02月08日
    浏览(43)
  • Uni-app组件使用

    组件是 视图层的基本组成单元 。是一个单独且 可复用的功能模块的封装 。 组件名称是由尖括号包裹的,可以看成一个语义化标签,是有开始标签和结束标签的。 如下举个简单的例子: uni-card  //这是开始标签 text 这是一个基础卡片示例,内容较少,此示例展示了一个没有任

    2024年02月09日
    浏览(34)
  • uni-app如何使用组件

    使用组件是uni-app的常见操作之一。以下是使用组件的步骤: 在uni-app项目中创建组件。 可以通过在components文件夹中创建一个.vue文件来创建组件。 也可以通过在HBuilderX中使用模板或向导来创建组件。 在需要使用组件的页面或组件中引入组件。 可以使用import导入组件,例如:

    2024年02月13日
    浏览(34)
  • uni-app之使用内置组件Canvas

    UniApp 是一个基于 Vue.js 的跨平台开发框架,它允许开发者使用一套代码同时构建多个平台的应用程序。UniApp 提供了丰富的内置组件,其中包括 Canvas 组件,用于在应用中绘制图形和实现图形动画效果。本文将详细介绍 UniApp 内置组件 Canvas 的使用方法,以及提供示例代码和说明

    2024年02月12日
    浏览(33)
  • uni-app自定义组件及拓展(uni-ui)组件的使用

    UniApp 是一个基于 Vue.js 的跨平台应用框架,可以用来开发同时运行在多个平台(如微信小程序、支付宝小程序、App等)的应用程序。在 UniApp 中,组件的使用与 Vue.js 中的组件使用基本类似,但需要考虑跨平台兼容性。 1. 创建组件文件 在 UniApp 项目中创建一个新的组件,通常

    2024年04月29日
    浏览(33)
  • uni-app:vue3 + uni-app 在微信小程序中无法使用app.component全局注册组件

    按上文中的代码执行后,会发现在微信小程序开发中全局注册的组件是无法显示的,这是uniapp的一个未解决bug, 在uniapp中出了可以通过vue实例的component方法注册全局组件外,uniapp支持另一种全局注册的方式,就是通过 easycom 扫描注册,步骤如下 easycom 的扫描流程是:通过代码

    2024年02月16日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包