视频播放微信小程序

article/2025/10/29 15:43:19

2022年夏季《移动软件开发》实验报告

一、实验目标

1、掌握视频列表的切换方法;2、掌握视频自动播放方法;3、掌握视频随机颜色弹幕效果。

二、实验步骤

列出实验的关键步骤、代码解析、截图。

1、创建项目

填好项目名称、目录、AppID等信息后,点击确定即可创建项目了

创建好项目之后的初始界面如下:
在这里插入图片描述

2、页面配置

将app.json文件内pages属性中的“pages/logs/logs”删除,并删除上一行末尾的逗号,删除utils文件夹及其内部所有内容,删除pages文件夹下的logs目录及其内部所有内容,删除index.wxml和index.wxss中的全部代码,删除index.js中的全部代码,并且输人关键词page找到第二个选项按回车键让其自动补全函数,删除app.wxss中的全部代码,删除app.js中的全部代码,并且输人关键词app找到第一个选项按回车键让其自动补全函数

这些工作做好了之后,界面如图所示:

在这里插入图片描述

3、创建新文件夹存放微信小程序中用到的图片

创建新文件夹images,存放微信小程序中需要用到的图片play.png

在这里插入图片描述

4、导航栏设计

在app.json中修改导航栏标题和背景颜色。
app.json文件中需要修改的代码如下:

{"pages":["pages/index/index"],"window":{"backgroundTextStyle":"light","navigationBarBackgroundColor": "#987938","navigationBarTitleText": "口述校史","navigationBarTextStyle":"black"},"style": "v2","sitemapLocation": "sitemap.json"
}

其中"navigationBarBackgroundColor": “#987938”,是将背景颜色改为金棕色(#987938),“navigationBarTitleText”: “口述校史”,是将所有页面的导航栏标题文本改为“口述校史”

此时微信小程序的预览效果如下图所示:

在这里插入图片描述

5、页面设计

我们在页面中总共有3个区域需要设计的,分别是区域1:视频播放器(用于播放指定的视频)、区域2:弹幕发送区域(包含文本输入框和发送按钮)、区域3:视频列表(垂直排列多个视频标题,点击不同的标题播放对应的视频内容。)

区域1(视频组件)需要使用组件来实现一个视频播放器。
在index.wxml中需要修改的代码片段如下:

 <!--区域1:视频播放器--><video id ='myVideo' controls></video>

在index.wxss修改以下代码片段:

video{width: 100%;
}

区域2(弹幕区域)需要使用组件实现一个单行区域,包括文本输入框和发送按钮。
在index.wxml文件中修改的代码片段如下:

<!-- 区域2:弹幕区域 -->
<view class='danmuArea'><input type='text' placeholder='请输入弹幕内容'></input><button>发送弹幕</button>
</view>

在index.wxss修改以下代码片段:

.danmuArea{display: flex;                 /*flex模型布局*/flex-direction: row;           /*水平方向排列*/
}
input{border: 1rpx solid #987938;    /*1rpx宽的实线棕色边框*/flex-grow: 1;                  /*扩张多余空间宽度*/height: 100rpx;                /*高度*/
}
button{color: white;                  /*字体颜色*/background-color: #987938;     /*背景颜色*/
}

其中,display: flex;是设置flex模型布局,flex-direction: row;是设置水平方向排列,border: 1rpx solid #987938; 是设置1rpx宽的实线棕色边框,flex-grow: 1;是扩张多余空间宽度,height: 100rpx; 是设置高度,color: white;是设置字体颜色,background-color: #987938; 是设置背景颜色

此时微信小程序的预览效果如下图所示:

在这里插入图片描述

区域3(视频列表)需要使用组件实现一个可扩展的多行区域,每行包含一个播放图标和一个视频标题文本。当前先设计第一行效果,后续使用wx:for属性循环添加全部内容。
在index.wxml修改以下代码片段:

<!-- 第三个区域:视频列表 -->
<view class='videoList'><view class='videoBar'><image src='/images/play.png'></image><text>这是一个测试标题</text></view>
</view>

在index.wxss修改以下代码片段

.videoList{width: 100%;/*宽度*/min-height: 400rpx;/*最小高度*/
}
.videoBar{width: 95%;/*宽度*/display: flex;/*flex模型布局*/flex-direction: row;/*水平方向布局*/border-bottom: 1rpx solid #987938;/*1rpx宽的实线棕色边框*/margin: 10rpx;/*外边距*/
}
image{width: 70rpx;/*宽度*/height: 70rpx;/*高度*/margin: 20rpx;/*外边距关*/
}
text{font-size: 45rpx;/*字体大小*/color: #987938;/*字体颜色为棕色*/margin: 20rpx;/*外边距*/flex-grow: 1;/*扩张多余空间宽度*/
}

在这里插入图片描述

6、更新播放列表

在区域3对<view class='videoBar>组件添加wx:for属性,改写为循环展示列表。
在index.wxml修改以下代码片段:

<!--区域3:视频列表-->
<view class="videoList"><view class="videoBar" wx:for="{{list}}" wx:key="video{{index}}" data-url="{{item.videoUrl}}" bindtap="playVideo"><image src='/images/play.png'></image><text>{{item.title}}</text></view>
</view>

然后在JS文件的data属性中追加list数组,用于存放视频信息。
在index.js修改以下代码片段:

Page({data: {list: [{id: '299371',title: '杨国宜先生口述校史实录',videoUrl: 'http://arch.ahnu.edu.cn/__local/6/CB/D1/C2DF3FC847F4CE2ABB67034C595_025F0082_ABD7AE2.mp4?e=.mp4'},{id: '299396',title: '唐成伦先生口述校史实录',videoUrl: 'http://arch.ahnu.edu.cn/__local/E/31/EB/2F368A265E6C842BB6A63EE5F97_425ABEDD_7167F22.mp4?e=.mp4'},{id: '299378',title: '倪光明先生口述校史实录',videoUrl: 'http://arch.ahnu.edu.cn/__local/9/DC/3B/35687573BA2145023FDAEBAFE67_AAD8D222_925F3FF.mp4?e=.mp4'},{id: '299392',title: '吴仪兴先生口述校史实录',videoUrl: 'http://arch.ahnu.edu.cn/__local/5/DA/BD/7A27865731CF2B096E90B522005_A29CB142_6525BCF.mp4?e=.mp4'}]},})

此时已经可以展示全部视频列表了,微信小程序的预览效果如下图所示:

在这里插入图片描述

7、点击播放视频
在区域3对组件添加data-url属性和bindtap属性。其中data-url用于记录每行视频对应的播放地址,bindtap用于触发点击事件。
在index.wxml修改以下代码片段:

<!--区域3:视频列表-->
<view class="videoList"><view class="videoBar" wx:for="{{list}}" wx:key="video{{index}}" data-url="{{item.videoUrl}}" bindtap="playVideo"><image src='/images/play.png'></image><text>{{item.title}}</text></view>
</view>

然后在JS文件的onLoad函数中创建视频上下文,用于控制视频的播放和停止。
在index.js修改以下代码片段:

onLoad: function (options) {this.videoCtx=wx.createVideoContext('myVideo')},

接着添加自定义函数playVideo

在index.js文件中加入以下代码片段:

playVideo: function (e) {this.videoCtx.stop()// 停止播放之前正在播放的视频this.setData({src: e.currentTarget.dataset.url})// 更新视频地址this.videoCtx.play()// 播放新的视频},

其中this.videoCtx.stop()是停止播放之前正在播放的视频,src: e.currentTarget.dataset.url是更新视频地址,this.videoCtx.play()是播放新的视频

运行效果如图所示:

在这里插入图片描述

8、发送弹幕
在区域1对组件添加enable-danmu和danmu-btn属性,用于允许发送弹幕和显示“发送弹幕”按钮。
在index.wxml文件中修改以下代码片段:

<!--区域 1:视频播放器-->
<video id='myVideo' controls src='{{src}}' enable-danmu='true' danmu-btn='true'></video>

然后在区域2为文本输入框追加bindinput属性,用于获取弹幕文本内容;为按钮追加bindtap属性,用于触发点击事件。

在index.wxml中修改以下代码片段:

<!--区域 2:弹幕控制-->
<view class="danmuArea"><input type="text" placeholder="请输入弹幕内容" bindinput="getDanmu"></input><button bindtap="sendDanmu">发送弹幕</button>
</view>

在对应的index.js文件中的data段中加入下面片段:

danmuTxt:''

此时可以发出红色文本的弹幕,运行效果如图6-13所示。
在这里插入图片描述

此时可见可以发送红色弹幕

如果希望发出随机颜色的弹幕内容,可以在JS文件中追加自定义函数getRandomColor
在index.js中加入以下代码片段:

function getRandomColor() {let rgb = []for (let i = 0; i < 3; ++i) {let color = Math.floor(Math.random() * 256).toString(16)color = (color.length == 1) ? '0' + color : colorrgb.push(color)}return '#' + rgb.join('')
}

上述代码可以随机生成一个十六进制的颜色,将其在原先需要录入color属性的地方调用即可实现彩色弹幕效果。

在index.js中修改以下代码片段:

sendDanmu:function(e){let text=this.data.danmuTxtthis.videoCtx.sendDanmu({text:text,color:getRandomColor()})},

此时可以发出彩色文本的弹幕,微信小程序的运行效果如下图所示:
在这里插入图片描述

三、程序运行结果

列出程序的最终运行结果及截图。

这是发送红色弹幕的运行结果:

在这里插入图片描述

这是发送随机彩色弹幕的运行结果:
在这里插入图片描述

四、问题总结与体会

描述实验过程中所遇到的问题,以及是如何解决的。有哪些收获和体会,对于课程的安排有哪些建议。

1、实验过程中遇到的问题以及解决方法:

①问题1:在实验过程中,点击播放按钮没有反应

解决方法:后来知道是没有联网,连接上网络就可以播放了

②问题②:一开始我发现我只能播放一个视频,下面三个不能播放

解决方法:后来认真看代码才发现是我在index.wxml文件中忘了给视频播放地址src添加变量,添加上关于src的变量即可

2、收获和体会

①通过做这次的小实验,我掌握了视频列表的切换方法、视频自动播放方法和视频随机颜色弹幕效果的方法。

②这个实验很考验布局,就需要再wxss文件上话很长时间,所以在做完这个实验了之后,我对微信小程序的wxss文件有了很深刻的理解,也会熟练掌握了微信小程序的布局。

③这个实验和之前的两个实验有很大的区别就是逻辑事件变多了,例如点击切换播放视频,点击发送弹幕等等,所以通过这次的实验,我对.js文件有了更深的认识。

击播放按钮没有反应

解决方法:后来知道是没有联网,连接上网络就可以播放了

②问题②:一开始我发现我只能播放一个视频,下面三个不能播放

解决方法:后来认真看代码才发现是我在index.wxml文件中忘了给视频播放地址src添加变量,添加上关于src的变量即可

2、收获和体会

①通过做这次的小实验,我掌握了视频列表的切换方法、视频自动播放方法和视频随机颜色弹幕效果的方法。

②这个实验很考验布局,就需要再wxss文件上话很长时间,所以在做完这个实验了之后,我对微信小程序的wxss文件有了很深刻的理解,也会熟练掌握了微信小程序的布局。

③这个实验和之前的两个实验有很大的区别就是逻辑事件变多了,例如点击切换播放视频,点击发送弹幕等等,所以通过这次的实验,我对.js文件有了更深的认识。

3、对课程安排的建议:通过做了这三个实验,我觉得wxml文件是不难理解,不难写的,但是wxss和js文件就没有怎么容易懂了,所以如果老师能专门讲一下wxss和js文件的写法就更好了。


http://chatgpt.dhexx.cn/article/QT6ti4I7.shtml

相关文章

微信小程序视频基本操作

微信小程序视频基本操作 1、视频1.1 wx.createVideoContext(string id,Object this)接口1.1.2 VideoContext对象常用函数1.1.3 小案例 1.2 wx.chooseVideo()接口object.success 回调函数参数Object res 示例代码 1.2.1 小案例 1.3 wx.saveVideoToPhotosAlbum(Object object)接口…

【微信小程序】视频播放小程序

课程&#xff1f;中国海洋大学22夏《移动软件开发》实验名称实验3&#xff1a;视频播放小程序 一、实验目标 1、掌握视频列表的切换方法&#xff1b; 2、掌握视频自动播放方法&#xff1b; 3、掌握视频随机颜色弹幕效果。 二、实验步骤 一、项目创建 二、页面配置 创建页面…

微信小程序如何使用视频组件

小程序中可以使用视频组件来播放自己想要展示的视频&#xff0c;具体步骤如下 一、添加视频组件 1、点击“店铺”——“装修店铺”——“编辑”&#xff0c;进入小程序页面编辑。 2、点击“组件库”——“视频”&#xff0c;页面会添加视频组件&#xff0c;点击视频组件的“编…

PHP实现页面静态化、纯静态化及伪静态化

概念 php静态化分为&#xff1a;纯静态化 和 伪静态化&#xff1b; 纯静态化又分为&#xff1a;局部静态化 和 完全静态化 纯静态化&#xff1a;是把PHP生成的动态页面保存成静态的html文件&#xff0c;用户访问该静态页面&#xff0c;而不是用户每一次访问都重新生成一张相…

SpringBoot整合Thymleaf实现页面静态化

文章整理题材来源于传智播客乐优商城项目实战&#xff01; 1. 问题需求分析 在做乐优商城时&#xff0c;页面是通过Thymeleaf模板引擎渲染后返回到客户端。当商品详情页数据渲染时&#xff0c;在后台需要大量的数据查询&#xff0c;而后渲染得到HTML页面。在用户访问量大的情况…

网站页面静态化(二)thymeleaf生成

今年是农历大年初三&#xff0c;在这里首先给各位朋友拜个年&#xff0c;祝大家新年快乐&#xff0c;虎年大吉大利&#xff0c;事业蒸蒸日上。过年无事&#xff0c;把页面静态化技术整理整理。本文将以thymeleaf为例子&#xff0c;说明在springboot当中&#xff0c;如何基于thy…

HTML页面静态化技术

随着网站的内容的增多和用户访问量的增多&#xff0c;无可避免的是网站加载会越来越慢&#xff0c;受限于带宽和服务器同一时间的请求次数的限制&#xff0c;我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化。 此文已Django的电商网站为例&#xff08;处理高并…

Thymeleaf动态页面静态化

Thymeleaf 目标 Thymeleaf的介绍Thymeleaf的入门Thymeleaf的语法及标签搜索页面渲染商品详情页静态化功能实现 1.Thymeleaf介绍 1动态页面&#xff1a; 通过执行asp、php、jsp和.net等程序生成客户端网页代码的网页。通常可以通过网站后台管理系统对网站的内容进行更新管理…

Java使用Freemarker页面静态化生成实现

Java使用Freemarker页面静态化生成实现 页面静态化其实就是将原来的动态网页(例如通过ajax请求动态获取数据库中的数据并展示的网页)改为通过静态化技术生成的静态网页&#xff0c;这样用户在访问网页时&#xff0c;服务器直接给用户响应静态html页面&#xff0c;没有了动态查询…

CMS-页面静态化技术

页面静态化技术 页面静态化技术是什么&#xff1f; 页面静态化主要运用在一些大型网站&#xff0c;有大量信息需要与数据库交互。比如大型电商网站京东&#xff0c;淘宝 &#xff0c;天猫等。电商网站最大的特点是什么&#xff1f;数据庞大&#xff0c;页面众多。那么我们都知…

java页面静态化

1.概念 页面静态化&#xff0c;其实就是将动态生成的jsp页面&#xff0c;变成静态的HTML页面&#xff0c;让用户直接访问。 2.优点 &#xff08;1&#xff09;加快页面打开浏览速度&#xff0c;静态页面无需连接数据库&#xff0c;打开速度较动态页面有明显提高。 &#xff…

页面静态化流程

本文首先采用CMS管理页面。 首先我们知道模板数据模型输出&#xff0c;页面静态化需要准备数据模型和模板&#xff0c;先知道数据模型的结构才可以编写模板&#xff0c;因为在模板中要引用数据模型中的数据&#xff0c;那么下面我来系统讲解CMS页面数据模型获取、模板管理及静…

django笔记--页面静态化

什么是页面静态化&#xff1a; 1&#xff09;减少数据库查询次数 2&#xff09;提高页面响应效率 页面静态化的作用&#xff1a; 1&#xff09;将动态渲染生成的页面结果保存成html文件&#xff0c;放到静态文件服务器中。 2&#xff09;用户直接去静态服务器&#xff0c;访问…

PHP实现页面静态化

为什么要页面静态化&#xff1f; 1.动态文件执行过程:语法分析-编译-运行 2.静态文件&#xff0c;不需要编译&#xff0c;减少了服务器脚本运行的时间&#xff0c;降低了服务器的响应时间&#xff0c;直接运行&#xff0c;响应速度快&#xff1b;如果页面中一些内容不经常改动…

【Java】页面静态化

1.页面静态化介绍 2.Freemarker介绍 3.Freemarker入门案例 3.1环境搭建 创建maven工程并导入Freemarker的maven坐标 <dependency><groupId>freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.23</version> &…

网站优化---页面静态化技术

一&#xff1a; 首先先区分一下动态页面和静态页面的区别 动态文件&#xff1a;PHP脚本、Java脚本等 动态文件的执行过程&#xff1a;词法、语法分析 -> 编译 -> 渲染输出 静态文件&#xff1a;HTML文件 从加载速度上可以看出&#xff0c;静态文件明显比动态文件速度…

openresty 页面静态化及多级缓存

openresty 页面静态化及多级缓存 多级缓存&#xff1a; 数据缓存的好处不用介绍了吧&#xff01;&#xff0c; 所谓多级缓存&#xff0c;即在整个系统架构的不同系统层级进行数据缓存&#xff0c;以提升访问效率&#xff0c;这也是应用最广的方案之一。而 nginx 是可以缓存数据…

java网站页面静态化方案

要生活得漂亮&#xff0c;需要付出极大的忍耐&#xff0c;一不抱怨&#xff0c;二不解释&#xff0c;绝对是个人才。——《变形记》 1、概述 在大型网站中&#xff0c;如京东和当当商品详情界面&#xff0c;看到的页面基本上是静态页面。为什么都要把页面静态化呢&#xff1f;…

freemarker 页面静态化技术

文章目录 一.背景二.页面静态化技术freemarker三.Freemarker基本操作1.引入依赖&#xff1a;2.创建模板文件&#xff1a;3.FTL指令&#xff1a; 四.freemarker整合spring五.总结&#xff1a;1.什么是网页静态化技术2.网页静态化技术与缓存技术的比较3.网页静态化技术的应用场景…

springboot 页面静态化

springboot 页面静态化 页面静态化&#xff1a;将动态渲染的页面保存为静态页面&#xff08;一般存储在nginx&#xff09;&#xff0c;提高访问速度 说明&#xff1a;页面静态化适用于数据不常变更的场景&#xff0c;如果数据频繁变更&#xff0c;宜使用其他方案提高访问性能 …