微信小程序云开发入门之后台获取视频并播放

注:笔者是自学小程序,自身开发经验不足,代码肯定存在不规范和不足,该博客参考一下就好

完整项目代码:https://github.com/zim-keavin/wxapp-cloud-demo

该教程目的是实现在云开发上存储视频,并将视频循环输出到小程序界面上,同时视频有封面,点击能播放并暂停上一个播放的视频。

最终效果(图中有多个视频):

 首先第一步是将你的视频,以及视频的封面上传到云开发的存储

然后复制你的存储链接,在云开发的数据库内创建集合,添加记录,并把存储链接放到记录中

 

注意注意!pulish属性是boolean类型!不是String!

要将集合的权限设置为所有用户可读,不然可能获取不到数据!

源代码: 

<view wx:for='{{items}}' wx:key>

  <view class='videoView' data-id='{{index}}'>
    <video src='{{item.video}}' class='video' id='my{{index}}'>
    </video>
    <image class='cover' src='{{item.cover}}' wx:if='{{show!=index}}' bindtap='cover' data-id='{{index}}'></image>
    <view class='time' wx:if='{{show!=index}}'>{{item.time}}</view>
  </view>

  <text class='text'>{{item.introduce}}</text>
  <view class='aline' wx:if="{{index<items.length-1}}"></view>
</view>
// pages/activityPhoto/activityPhoto.js
const db = wx.cloud.database()
const _ = db.command
Page({
  data: {
    items: [],  // 视频数据的数组
    show: -1,  // 记录正在播放的视频下标
    id: -1,  // 用于关掉上一个视频
  },

  /**
   * 从云开发后台获取数据
   */
  onLoad: function(options) {
    var that = this
    db.collection('commercialVideo').where({
      publish: _.eq(true)
    }).get({
      success(res) {
        that.setData({
          items: res.data.reverse()  // 反转使最新数据的在最上面
        })
      }
    })
  },

  /**
   * 点击视频后,隐藏封面,暂停上一次点击的视频,播放点击的视频
   */
  cover: function(e) {
    var index = e.currentTarget.dataset.id
    var id = 'my' + e.currentTarget.dataset.id
    if (this.data.show != index) {  // 此处的show是上一个视频的下标
      var i = 'my' + this.data.show
      this.videoContext = wx.createVideoContext(i)  // 小程序的视频api
      this.videoContext.pause({})  // 暂停上一个播放的视频
    }
    this.setData({
      show: index  // 将show更新至最新点击的视频的下标
    })
    this.videoContext = wx.createVideoContext(id)
    this.videoContext.play({})  // 开始播放当前视频
  }
})
page {
  background-color: white;
}

.videoView {
  position: relative;
  margin: 40rpx 50rpx 30rpx;
}

.video {
  width: 100%;
  height: 420rpx;
  border-radius: 20rpx;
  box-shadow: 2px 3px 10px #6b6b6b;
}

.cover {
  width: 100%;
  height: 420rpx;
  border-radius: 20rpx;
  position: absolute;
  left: 0rpx;
}

.text {
  margin-left: 40rpx;
  margin-right: 20rpx;
  font-size: 36rpx;
  font-weight: 650;
  /* font-family: NSimSun; */
}

.aline {
  margin: 0rpx 50rpx;
  margin-top: 40rpx;
  height: 1rpx;
  background-color: rgba(0, 0, 0, 0.041);
}

.time {
  position: absolute;
  right: 30rpx;
  bottom: 30rpx;
  color: white;
  font-size: 33rpx;
}

如果有更好的方法欢迎提出或者发个链接到评论区,共勉,谢谢!

 

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值