首页 > 编程语言 >实验3:视频播放小程序

实验3:视频播放小程序

时间:2022-08-20 10:44:08浏览次数:159  
标签:视频 index title 程序 mp4 校史 播放 弹幕

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

姓名:窦海彤 学号:20020007011
姓名学号 窦海彤,20020007011
课程 中国海洋大学22夏《移动软件开发》
实验名称 实验3:视频播放小程序
博客地址 https://www.cnblogs.com/dht21/
Github仓库地址 https://github.com/Domingo21/summer-term

一、实验目标

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

二、实验步骤

1. 页面配置

1.1 创建页面文件

​ 新建一个如图的项目,并且将app.json内pages属性中的“pages/logs/logs”删除

1.2 删除和修改文件

​ 1)删除utils文件夹及其所有内容

​ 2)删除pages文件夹下的log目录及其所有内容

​ 3)删除index.wxml和index.wxss和app.wxss中全部代码

​ 4)删除index.js中代码并输入page自动补齐,删除app.js中代码并输入app自动补齐

1.3 创建其他文件

​ 在该项目的根目录下新建一个images 文件夹用于存放视频播放图标素材

2. 视图设计

2.1 导航栏设计

​ 更换导航栏文字和颜色

{
  "pages":[
    "pages/index/index"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#87CEEB",  
    "navigationBarTitleText": "视频播放",
    "navigationBarTextStyle":"black"
  },
  "style": "v2",
  "sitemapLocation": "sitemap.json"
}

2.2 页面设计

​ 主要分为三个区域,区域一:视频播放区域、区域二:弹幕发送区域、区域三、视频列表,具体代码如下:

index.wxml:

<!--区域一:视频播放器-->
<video id="myVideo"controls></video>
<!--区域二:弹幕发送区-->
<view class="danmuArea">
  <input type="text"placeholder="请输入弹幕内容"></input>
  <button>发送弹幕</button>
</view>
<!--区域三:视频列表栏-->
<view calss = "videolist">
  <view class = "videoBar">
    <image src="/images/play.png"></image>
    <text>测试标题</text>
  </view>
</view>

index.wxss:

<!--区域一:视频播放器-->
<video id="myVideo"controls></video>
<!--区域二:弹幕发送区-->
<view class="danmuArea">
  <input type="text"placeholder="请输入弹幕内容"></input>
  <button>发送弹幕</button>
</view>
<!--区域三:视频列表栏-->
<view calss = "videolist">
  <view class = "videoBar">
    <image src="/images/play.png"></image>
    <text>测试标题</text>
  </view>
</view>

效果如图:

3.逻辑实现

3.1 更新播放列表

​ index.html

<!--区域一:视频播放器-->
<video id="myVideo"controls src="{{src}}"></video>
<!--区域二:弹幕发送区-->
<view class="danmuArea">
  <input type="text"placeholder="请输入弹幕内容"></input>
  <button>发送弹幕</button>
</view>
<!--区z域三:视频列表栏-->
<view calss = "videolist">
  <view class = "videoBar" wx:for="{{list}}" wx:key="video{{index}}">
    <image src="/images/play.png"></image>
    <text>{{item.title}}</text>
  </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'
    }
  ]
  }
})

效果如图:

3.2 点击播放视频

​ 对组件添加data-url属性和bindtap属性(data-url用于记录视频的播放地址,bindtap用于触发点击事件)

​ index.wxml:

<!--区域三:视频列表栏-->
<view calss = "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({
  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'
    }
  ]
  },
onLoad() {
    this.videoCtx = wx.createVideoContext('myVideo')
  },

  playVideo:function(e){
    this.videoCtx.stop()
    this.setData({
      src:e.currentTarget.dataset.url
    })
    this.videoCtx.play
    }
})

效果如图:

3.3 发送弹幕

​ 对组件添加属性使得其可发送弹幕,并在屏幕显示

index.wxml:

<!--区域一:视频播放器-->
<video id="myVideo"controls src="{{src}}" enable-danmu-btn></video>
<!--区域二:弹幕发送区-->
<view class="danmuArea">
  <input type="text"placeholder="请输入弹幕内容" bindinput="getDanmu"></input>
  <button bindtap="sendDanmu">发送弹幕</button>
</view>

index.js:

Page({
  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:'red'
    })
  }
})

效果如图:

3.4 添加随机彩色弹幕

​ 修改index.js文件,使发送弹幕的颜色为函数getcolor的返回值

index.js:

function getRandomColor(){
  var letter = "0123456789ABCDEF";
  var color = [];
  var c = "#";
  for (var i = 0; i < 6; i++) {
    c = c + letter[Math.floor(Math.random() * 16)]
  }
  color.push(c);
  return color;
}

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

三、运行截图

四、问题总结与体会

问题

将弹幕改为随机颜色弹幕时,无返回值,导致无法发出弹幕,检查后发现是返回值有误,将其改成如下即可获取随机颜色弹幕并发送

function getRandomColor(){
  var letter = "0123456789ABCDEF";
  var color = [];
  var c = "#";
  for (var i = 0; i < 6; i++) {
    c = c + letter[Math.floor(Math.random() * 16)]
  }
  color.push(c);
  return color;
}
体会

通过本次实验,我掌握了视频列表的切换方法、掌握了视频自动播放的方法、掌握了视频随机颜色弹幕效果,并且明白了随机颜色的原理,更加熟悉了html、css和JavaScript语言,和制作微信小程序。

标签:视频,index,title,程序,mp4,校史,播放,弹幕
From: https://www.cnblogs.com/dht21/p/16607271.html

相关文章

  • 网络编程-TCP通信程序(下)代码
     TCP通信的客户端:向服务器发送连接请求,给服务端发送数据,读取服务端回写的数据表示客户端的类:java.net.Socket:该类实现客户端套接字(也称为“套接字”)。套接字是两台机器......
  • 学习:python 程序打包exe文件
    python程序打包exe.py首先要安裝模块pipinstall pyinstaller按住shift右鍵 打开命令窗口-输入命令intaller-F文件名.py,等待执行完成后,文件夹内会多一个dis......
  • 框架-逻辑层(逻辑层简介和注册程序)
    逻辑层简介小程序逻辑层小程序开发框架的逻辑层是使用JavaScript编写的。逻辑层将数据进行处理后发送给视图层,同时接收视图层的事件反馈。在JavaScript的基础上,微信......
  • nohup后台运行程序
         ......
  • 网络编程-TCP通信程序(上)理论
    TCP通信程序概述 TCP通信能实现两台计算机之间的数据交互通信的两端要严格区分客户端(Client)与服务端(Server)两端通信时步骤1.服务端程序需要事先启动等待客户端的链......
  • 程序员做技术分享或公开演讲时的建议,希望能帮到大家
    演讲资料准备注意点:内容完善性:准备的演讲资料需要涵盖全部演讲知识点,如果资料没有准备完善演讲的内容含金量就会有所下降,从资料准备的完善性也能看出这个人对演讲的用心......
  • qt程序在linux下生成core dump
    linux系统支持生成coredump,设置系统就行,通过ulimit命令查看一下系统是否支持coredump功能。通过ulimit-c,可以查看corefile大小的配置情况,如果为0,则表示系统关闭了co......
  • 引入B站视频如何自动播放
    由于网页中需要播放视频,则选择从B站上面引入在线视频,但又希望在打开页面的同时自动播放。1、找到要引用的视频,点击分享,选择嵌入代码。 2、将代码复制到网页预定位置......
  • AI智能安防视频监控平台EasyCVR视频广场初次加载调用通道接口的优化
    EasyCVR平台拓展性强、兼容性高,拥有灵活丰富的视频能力,包括视频实时监控直播、云端录像、云存储、回放与检索、智能告警、视频快照、视频转码与分发、平台级联等。平台可支......
  • 反编译获取线上任何微信小程序源码(转)
    看到人家上线的小程序的效果,纯靠推测,部分效果在绞尽脑汁后能做出大致的实现,但是有些细节,费劲全力都没能做出来。很想一窥源码?查看究竟?看看大厂的前端大神们是如何规避了小......