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

article/2025/10/29 15:24:23

课程?中国海洋大学22夏《移动软件开发》
实验名称实验3:视频播放小程序

一、实验目标

1、掌握视频列表的切换方法;

2、掌握视频自动播放方法;

3、掌握视频随机颜色弹幕效果。

二、实验步骤

一、项目创建

 

二、页面配置

  1. 创建页面文件 并 删除和修改文件

  • [删除] utils文件夹及其内部所有内容;

  • [删除] app.json 文件内 pages 属性中的 "pages/logs/logs",并[删除] pages 文件夹下的 logs 目录机器内部所有内容;

  • [删除] index.wxml 及 index.wxss 文件中全部的代码;

  • [删除] index.js 中的全部代码,并输入关键词 page 找到并补全函数。

  • [删除] app.wxss 文件中全部的代码;

  • [删除] app.js 中的全部代码,并输入关键词 app 找到并补全函数。

  1. 创建图表文件夹

    • 在中间的目录结构单击 右键 新建 images 文件夹。

    右键单击 image 文件夹,点击 [在资源管理器中打开] 。将播放按键放入此文件夹。

 

三、视图设计

  1. 导航栏设计

    在 app.json 文件中自定义导航栏效果

    {"pages": ["pages/index/index"],"window": {"navigationBarBackgroundColor": "#987938","navigationBarTitleText": "口 述 校 史"},"sitemapLocation": "sitemap.json"
    }

    颜色 金棕色;导航栏标题 口述校史;

  2. 页面设计

    页面上主要包含三个区域:

     

    • 区域 1:视频播放器,可播放指定视频; video 组件;

    • 区域 2:弹幕发送区,包含文本输入框和发送按钮; view 组件,并定义 class='danmuArea';

      内部:input 组件和 button 组件;

    • 区域 3:视频列表,垂直排列多个视频标题。点击不同的标题播放对应的视频; view 组件,并定义 class='videoList';

      内单元行:view 组件,并定义 class='videoBar';

      单元行内:image 组件和 text 组件。

    • 页面整体:view 组件,并定义 class= 'container';

  1. 视频组件设计

    index.wxml 代码如下:

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

    controls属性用于播放/暂停 、音量控制等组件。

    index.wxss 代码如下:

    /**视频组件样式**/
    video{width: 100%;  /*视频组件宽度 100% */
    }

  2. 弹幕区域设计

    index.wxml 代码如下:

    <!--区域 1 :视频播放器-->……
    <!--区域 2 :弹幕发送-->
    <view class='danmuArea'><input type='text' placeholder="请输入弹幕内容"></input><button bindtap="sendDanmu">发送弹幕</button>
    </view>

    index.wxss 代码如下:

    /**弹幕发送样式**/
    /*弹幕发送区样式*/
    .danmuArea{width: 95%;margin: 10rpx;display: flex;  /*flex模型布局*/flex-direction: row;  /*水平排列*/
    }
    /*弹幕输入区样式*/
    input{border: 1rpx solid #987938;  /*1rpx宽实线金棕色边框*/flex-grow: 1;  /*扩张多余空间宽度*/height: 100rpx;
    }
    /*发送按钮样式*/
    button{color: white;  /*字体颜色*/background-color: #987938;  /*背景颜色*/
    }

  3. 视频列表设计

    index.wxml 代码如下:

    <!--区域 1 :视频播放器-->……
    <!--区域 2 :弹幕发送-->……
    <!--区域 3 :视频列表-->
    <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-direction: row;border: 1rpx solid #987938;margin: 10rpx;  /*外边框*/
    }
    /*播放图标样式*/
    image{width: 70rpx;height: 70rpx;margin: 20rpx;
    }
    /*视频标题样式*/
    text{font-size: 45rpx;  /*字体大小*/color: #987938;margin: 20rpx;flex-grow: 1;
    }

四、逻辑实现

  1. 更新播放列表

    index.wxml 代码修改如下:

    <!--index.wxml-->
    <view class="container"><!--区域 1 :视频播放器--><video id='myVideo' controls src='{{src}}'></video>
    ​<!--区域 2 :弹幕发送-->……
    ​<!--区域 3 :视频列表--><view class='videoList'><view class='videoBar' wx:for="{{list}}" wx:key="video{{index}}"><image src='/images/play.png'></image><text>{{item.title}}</text></view></view>
    </view>

    index.js 文件的 page 函数的 data属性 中添加:

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

  2. 点击播放视频

    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>

    index.js 文件的 page 函数进行如下修改:

    /*** 生命周期函数--监听页面加载*/
    onLoad: function (options) {this.videoCtx = wx.createVideoContext('myVideo')
    }

    index.js 文件的 page 函数添加如下自定义函数:

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

  3. 发送弹幕

    对 区域1 的 video 组件添加 enable-danmu 和 danmu-btn 属性,用于允许发送弹幕和显示“发送弹幕”按钮。

    index.wxml 代码修改如下:

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

    index.js 代码修改如下:

    /*** 页面的初始数据*/
    data: {danmuTxt:'',list: [……]
    },
    ​
    /*** 播放视频:此处略*/​
    /*** 更新弹幕内容*/
    getDanmu: function(e){this.setData({danmuTxt: e.detail.value})
    },
    ​
    /*** 发送弹幕*/
    sendDanmu: function(e){let text = this.data.danmuTxt;this.videoCtx.sendDanmu({text: text,color: getRandomColor()  //自定义函数--弹幕颜色随机生成})
    }

    为实现弹幕颜色的随机生成,在 index.js 文件的 page 函数之外中添加自定义函数:

    //生成随机颜色
    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('')
    }

三、程序运行结果

 

四、问题总结与体会

一、遇到的问题 及 解决方法

  1. 渲染层错误

    调试时会出现渲染层报错。原因为浏览器禁止视频自动播放,无视即可。不影响小程序中视频的播放。

  2. 热重载

    关闭模拟器处的热重载,不然会有很多莫名其妙的 Bug 。

二、收获和体会

  1. 熟悉 video 组件的使用

  2. 学习列表的切换,为下一个实验做准备。


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

相关文章

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

小程序中可以使用视频组件来播放自己想要展示的视频&#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;宜使用其他方案提高访问性能 …

PHP 页面静态化

前言 随着网站的内容的增多和用户访问量的增多&#xff0c;网站加载会越来越慢&#xff0c;受限于带宽和服务器同一时间的请求次数的限制&#xff0c;我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化。 一、页面静态化概念 静态化定义 静态化就是指把原本的动态…

页面静态化

前言 我们在使用购物网站的时候&#xff0c;会选择相应的商品点击查看详情&#xff0c;其实会发现每件商品的商品详情页面都是差不多的&#xff0c;除了一些数据外&#xff0c;其余结构布局都是一模一样的&#xff0c;那么是为每件商品都写一个详情页面吗&#xff1f;很显然这…