1、wxml部分代码 ,主要是利用swiper 标签滑动切换,事件处理,具体参数说明可以去小程序官网文档看。https://developers.weixin.qq.com/miniprogram/dev/component/swiper.html

    <swiper vertical="{{true}}"current="{{current}}" circular="{{false}}" bindchange="bindchange"easing-function="default"><block wx:for="{{videoList}}" wx:key="*this" wx:for-index="i"><swiper-item><view class="swiper-item"><videobindtap="clickVideo"object-fit="cover"id="video_{{i}}"show-fullscreen-btn="{{false}}"autoplay="{{i==0 && firstRequest}}"wx:if="{{i>current-2 && current+2>i}}"loop="{{true}}" src="{{item.video_url}}" class="video-dom"></video><!-- i>current-2 && current+2>i 这个判断的作用是,加载当前视频和前面一个和后面一个视频资源,  不多加载,做到按需加载,节流-->
<!-- autoplay="{{i==0 && firstRequest}}"  首次打开的时候,第一个视频自动播放,其它的滑动的时候触发播放 --></view></swiper-item></block></swiper>

2、js 部分


Page({/*** 页面的初始数据*/data: {isPlay:true,video_id:"video_0",videoList:[],pageShow:false,current:0, // 当前滑块vertical:false,  // 滑块方向offset:0,page_index:1,firstRequest:true,isRequest:true,  // 是否正在发起请求,控制不会多次滑动出发接口请求多次问题page_count:5,isHaveData:true // 判断接口返回的还有没有数据,没有设置成false},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {this.getShortVideo();},// current 改变时会触发 change 事件bindchange(e){this.setData({current: e.detail.current})this.swiperVideo(e);if(this.data.isHaveData && e.detail.current >= this.data.videoList.length-2 && !this.data.isRequest){this.setData({page_index: this.data.page_index+1},res=>{this.setData({offset: (this.data.page_index-1) * this.data.page_count,isRequest: true,})this.getShortVideo();})}},// 点击视频暂停活播放clickVideo(e){//这里的vid是视频的id,因为这里我是用接口传数据的,里面有视频idlet vid = e.currentTarget.id;let indexVideoContext = wx.createVideoContext(vid)if(this.data.isPlay){indexVideoContext.pause();}else{indexVideoContext.play();}this.setData({isPlay: !this.data.isPlay})},// 获取视频列表getShortVideo(){wx.cloud.callFunction({name:"short-video",data:{type:"checkList",offset: this.data.offset,page_count: this.data.page_count}}).then(res=>{console.log(res)if(this.data.page_index==1){this.setData({indexVideo:res.result.list[0]})}// 请求接口的数据和每次获取条数如果不相等,说明后面已经没有数据了 isHaveData: falseif(res.result.list.length!=this.data.page_count){this.setData({isHaveData:false})}this.setData({isRequest: false,videoList: [ ...this.data.videoList, ...res.result.list],})})},// 滑动切换视频swiperVideo(e){//这里的vid是视频的id,因为这里我是用接口传数据的,里面有视频idlet vid = `video_${e.detail.current}`;// 上个一视频idvar prev_id = this.data.video_id;// 停止山一个视频播放wx.createVideoContext(prev_id).pause();this.setData({firstRequest:false,video_id:vid,isPlay:true})// 延迟500ms,再播放本视频setTimeout(function(){wx.createVideoContext(vid).play();},500)},})

以上是主要代码部分,如有不明白的留言,相互探讨交流

(完结)

下面是我的小程序实现的效果,可以扫码看看

小程序如何实现抖音视频效果?相关推荐

  1. 微信小程序——全屏幕(抖音视频)展示

    效果: 应用场景: 如类似抖音视频,视频是需要铺满屏幕的: 解决方式: https://developers.weixin.qq.com/miniprogram/dev/reference/confi ...

  2. 微信小程序(实现抖音播放效果)上下滑动全屏播放效果

    最近项目要做一个类似于抖音的一个视频播放 需要小程序完成 在再次确定了需要这个需求的情况下就开始了(其实因为不是说这个功能不好做主要是但心做出来肯定不流畅 卡顿什么的 优化不好优化然后费了好大的劲优化 ...

  3. 微信小程序实现抖音视频效果

    当我们进行开发的时候可能会遇到需要实现抖音视频效果的需求,并且网上该效果的开源代码少,找到的开源代码代码量大,很难进行二次开发 对此我将自己的代码进行简化,仅留下可动性高的代码模块 以上是实现效果与此 ...

  4. “小程序+直播”怎样搅动音视频技术生态?

    ​ 责编 / 王宇豪 策划 / LiveVideoStack 12月26日晚间,微信小程序开放了直播能力,并首先向社交.教育.医疗.政务民生.金融等五大应用场景开放.与原生App应用和基于浏览器的H5 ...

  5. 微信小程序转头条/抖音小程序的方法

    很多公司都在做小程序,现在主流小程序有不少:微信小程序/头条小程序/百度小程序/支付宝小程序/QQ小程序...,很多公司为了方便开发都会采用taro或uni等开发方式,直接多端使用,但是对于小公司这些 ...

  6. 微信小程序实现类似抖音效果

    背景 公司有个小程序项目要求做类似抖音的效果. 由于微信小程序受video兼容性的原因,总会产生很多意想不到的关于video的兼容性bug. 为了解决视频列表太多造成的卡顿,判断页面中只有滑动到当前页 ...

  7. 爆款视频生成器小程序开发及抖音分享接入方案

    一.什么是爆款视频生成器 爆款视频生成器,是一款可以帮助抖音用户快速生成爆款视频的工具,可以帮助创作者提供创作灵感,支持爆款文案+热门视频+创意标题等,模板化视频加持,阻力商家流量提升及团单转化. 2 ...

  8. 微信小程序 voip-room 多人音视频对话 组件

    完整微信小程序(Java后端) 技术贴目录清单页面(必看) 多人音视频对话.需用户授权 scope.camera.scope.record.相关接口: wx.joinVoIPChat 暂只针对国内主体 ...

  9. 微信小程序原生实现抖音的视频翻页效果

    效果如下图 : 具体实现, 用scroll-view video cover-view, 滑动结束后只展示当前视频品和当前前后的两个视频, 代码就不贴了, 因为代码一大堆, 包含了一些点赞.评论.转发 ...

最新文章

  1. Visual Studio 2013 Update 2 RTM 发布
  2. C++ ,leetcode 43. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式
  3. 【Windows程序设计】Unicode简介
  4. javase中的super、this和protected关键字
  5. HDU 3932 模拟退火
  6. 动态规划——0-1背包问题
  7. caffe开始训练自己的模型(转载并验证过)
  8. centos 搭建php运行环境
  9. 幻想英雄2-战神再起折扣号新手入门攻略
  10. 摘录本的摘录内容_使用tSQLtSQL单元测试数据仓库摘录
  11. 4.正则匹配与re模块
  12. Web容器(二):HTTP协议
  13. 外派linux运维,请好好善待你身边的Linux运维工程师,因为他们...
  14. 工作中需要MP4视频文件怎么办?用Python随手采集一些【订阅赠品】
  15. ESP32开发2——新建项目
  16. redis之瘦小精干的位图 (一)
  17. [JOI 2014 Final]裁剪线
  18. 【测控电路】滤波电路
  19. OHEM,Focal loss,GHM loss二分类pytorch代码实现(减轻难易样本不均衡问题)
  20. 【tkinter组件专栏】LabelFrame:规划布局frame的小老弟

热门文章

  1. BNU 0919 日常训练 之 G N! ——高精度 万进制 10000的阶乘
  2. 亿美软通打造5G消息精品案例,覆盖多垂直电商领域
  3. VMware安装的虚拟机启动后一直黑屏没反应
  4. 【bugku】 web_game1_来啊盖楼啊
  5. Plato Farm元宇宙IEO上线四大,链上交易颇高
  6. (六)Python:Pandas中的DataFrame
  7. 创客板Arduino之LED控制暗到明 明到暗
  8. OpenGL基础知识介绍和简单使用
  9. 【转载】EEG中常用的功能连接指标汇总
  10. APS生产排程实现服装行业的车间生产计划智能化