微信小程序抖音实战-支持手机播放小视频

技术小白 2018-08-22 15:50:53 ⋅ 1081 阅读

上一篇抖音播放小视频文章发出来后很多的粉丝纷纷留言问为什么手机不能用呀!
小编也是试了诸多方法,最后把经验总结出来给大家做了一个改进的例子

首先看下效果图

预览效果截图
点击后播放截图
点击屏幕出现暂停按钮截图

实现思路

给每个视频增加一个封面图片,轮播的时候只显示封面图片,当用户点击播放的时候,再弹出视频,当用户点击视频的时候显示暂停按钮,点击暂停按钮隐藏视频播放层并暂停播放

经过小编的多次尝试建议一个小程序只用一个视频标签,一个视频上下文实例,不然会出现很多稀奇古怪的问题。

局部代码变动

1. 播放提示按钮

<!-- 轮播图片 -->
<swiper duration="{{duration}}" vertical="true" bindchange="changeSubject" current="{{current}}" class='swiper'>
  <block wx:for="{{subjectList}}" wx:key="*this">
    <swiper-item>
      <image src="{{item.coverUrl}}" mode='aspectFill' class="slide-image" bindtap='previewSubject' />
    </swiper-item>
  </block>
</swiper>

<!-- 播放提示按钮 -->
<view class='play-box' wx:if="{{subject.type == 'video'}}">
  <image src="/image/play.png" mode='aspectFill' class="icon-play" bindtap='previewSubject' />
</view>

在轮播图下面增加了一个播放按钮,当时视频的时候显示出来

小编提示:如果是绝对定位的元素,请按照顺序摆放代码,页面的层次结构跟代码的上下顺序有关

2. 视频层

<!-- 视频层  -->
<view class="videoLayer" hidden='{{isHiddenVideo}}'>
  <video id="myVideo" src="{{videoSrc}}" binderror="videoErrorCallback" autoplay='{{true}}' controls='{{false}}' class='slide-image' loop='true' show-progress='false' show-play-btn='false' show-center-play-btn='true' show-fullscreen-btn='false' objectFit='fill'>
    <cover-view class='controls' bindtap="bindSwitchControls">
      <cover-view class="icon-box" hidden='{{isHiddenControls}}'>
        <cover-image class='icon-pause' src="/image/pause.png" bindtap="hidePreview" />
      </cover-view>
    </cover-view>
  </video>
</view>

3. 视频组件上下文

/**
   * 生命周期函数--监听页面初次渲染完成
   */

  onReady: function ({
    var that = this;

    wx.setNavigationBarTitle({
      title"微抖音",
    })

    // 评论弹出层动画创建
    this.animation = wx.createAnimation({
      duration400,
      timingFunction"ease",
      delay0
    })

    // 视频组件初始化
    this.videoContext = wx.createVideoContext('myVideo')
  },

初始化我们的视频组件

4. 播放视频,当用户点击播放按钮的时候播放视频

previewSubject: function(){
    var subject = this.data.subject;
    if (subject.type == 'video'){
      this.setData({
        videoSrc: subject.src,
        isHiddenVideofalse
      })
    }else{
      wx.previewImage({
        urls: [subject.coverUrl],
      })
    }
  },

如果是视频就显示视频层并自动播放,如果是图片就打开预览页面,这样的好处就是有些大的图片可以通过预览的方式看到全貌

5. 隐藏视频

hidePreview: function () {
    var subject = this.data.subject;
    if (subject.type == 'video') {
      // 暂停播放
      this.videoContext.pause();
      // 隐藏视频层
      this.setData({
        isHiddenVideo: true
      })
    }
  },

微信的视频插件虽然支持手动暂停按钮,但是无法自定义样式所以,还是建议自己做样式和事件处理

6. 自动隐藏暂停按钮,以及异常日志

time: null,
  bindSwitchControlsfunction ({
    if (this.time) {
      clearTimeout(this.time)
    }
    var isHidden = !this.data.isHiddenControls;
    this.setData({
      isHiddenControls: isHidden
    })

    // 自动隐藏按钮
    var that = this;
    if (!isHidden) {
      this.time = setTimeout(function ({
        var isHidden = that.data.isHiddenControls;
        if (!isHidden) {
          that.setData({
            isHiddenControlstrue
          })
        }
      }, 3000)
    }
  },

  videoErrorCallbackfunction (e{
    console.log('视频错误信息:' + this.data.subject.src)
    console.log(e.detail.errMsg)
  },

视频如果播放错误,一般都需要记录日志并反馈到后台分析处理

完整源码请到官网https://100boot.cn的抖音案例下载

更多精彩内容

关注我们

如果需要源码和素材可以关注“IT实战联盟”公众号并留言(微商城源码,5个字会收到源码下载地址,一定要看源码里面的操作手册会少走很多弯路),也可以加入交流群和作者互撩哦~~~



全部评论: 0

    我有话说:

    程序实战-支持播放视频

    之前的案例只支持图片的播放,经过粉丝的反馈说视频弄不出来,本节内容就教大家怎么做

    程序实战-首页(上)

    你也可以用程序编写一个

    程序实战-视频弹幕

    如果你去只是为了看视频就少了一大乐趣,评论区才是最有趣的地方,边看视频边看评论的弹幕是不是更有意思

    程序实战-首页(下)

    程序首页动态数据获取

    程序实战篇:实现评论效果

    我们在写程序的时候经常会遇到弹出层的效果而现有官网提供的跳转方法多数是不支持参数传递的。本文教大家做一个评论效果的程序......

    程序电商实战-首页(下)

    上一篇:程序电商实战-首页(上)好了,上一期我们把首页搜索、导航栏和广告轮播给做完了,那么接下来会继续

    程序电商实战-首页(上)

    上一篇:程序电商实战-入门篇 嗨,大家好!经过近两周的精心准备终于开始程序电商实战之路喽。那么最终会做成什么样呢?好了,不啰嗦了 我们先看首页长什么样吧!   首页效果图

    程序实现商品数量加减

    这是一个用程序原生代码实现的数量加减demo,主要是用于商品购物车或者商品详情修改数量使用

    程序实战篇:基于wxcharts.js绘制移动报表

    程序图表插件(wx-charts)是基于canvas绘制,体积巧,支持图表类型饼图、线图、柱状图 ......

    程序实战篇:商品属性联动选择(案例)

    本期的程序实战篇来做一个电商网站经常用到的-商品属性联动选择的效果,素材参考了一点点

    程序电商实战-商品详情(上)

    先看一下今天要实现程序商品详情页吧!

    程序商城(七):动态API实现商品分类

    程序商品分类页面布局并且调用动态API获取数据并加载

    程序实战篇:如何解决https域名问题 ?

    开发自己的程序绕不开https问题,为了能在程序中调用我们自己的API服务请打开看一看吧!!!

    程序电商实战-购物车(上)

    好久没更新程序电商实战的文章了,是因为最近一直做整体架构调整,一些准备工作也是比较耗费时间的。在这几天将会有新版的 程序电商教程推出.......

    程序电商实战-商品列表流式布局

    今天给大家分享一下程序中商品列表的流式布局方式,根据文章内容操作就可以看到效果哦~~~

    程序电商实战-入门篇

    程序开发工具有新版本更新啦!开发体验更好了,接下来一起为电商程序做一下准备前期准备工作~~

    程序实战篇:程序之页面数据传递

    我们在写程序的时候经常会遇到子页面向主页面回传数据或者普通页面跳转到tabBar 页面携带数......

    程序商城(九):授权并实现个人中心页面页面

    实现商城的授权并获取用户信息和个人中心页面布局