项目简介

U直播是一个基于uniapp+vue+nvue+vuex等技术实现的小视频/直播界面/聊天等功能的跨端项目,分别仿制了抖音小视频、陌陌直播界面功能,可实现上下滑动切换播放、暂停,评论、商品等功能。

技术框架

编辑器+技术:HBuilderX + vue/NVue/uniapp/vuex

iconfont图标:阿里字体图标库

自定义导航栏 + 底部Tabbar

弹窗组件:uniPop(uni-app封装自定义Modal弹窗)

测试环境:H5端/小程序/App端/真机

App.vue页面获取顶部状态栏高度

import Vue from 'vue'

export default {

onLaunch: function() {

// console.log('App Launch')

uni.getSystemInfo({

success:function(e){

Vue.prototype.statusBar = e.statusBarHeight

// #ifndef MP

if(e.platform == 'android') {

Vue.prototype.customBar = e.statusBarHeight + 50

}else {

Vue.prototype.customBar = e.statusBarHeight + 45

}

// #endif

// #ifdef MP-WEIXIN

let custom = wx.getMenuButtonBoundingClientRect()

Vue.prototype.customBar = custom.bottom + custom.top - e.statusBarHeight

// #endif

// #ifdef MP-ALIPAY

Vue.prototype.customBar = e.statusBarHeight + e.titleBarHeight

// #endif

}

})

},

}

顶部透明导航栏实现

由于原生导航栏功能限制,有些效果不好实现,于是就自定义顶部导航栏模式,可设置透明背景(如:个人主页/朋友圈动态)效果, 具体可参看这篇文章:uni-app自定义导航栏按钮|uniapp仿微信顶部导航条

仿抖音小视频切换实现

uniapp+swiper实现类似抖音/火山小视频上下滑动切换视频效果,点击可播放、暂停,点赞、评论等功能

:controls="false" :loop="true" :show-center-play-btn="false" objectFit="fill">

# {{kwItem}}

{{item.subtitle}}

{{item.author}}{{item.attention ? '已关注' : '关注'}}

写评论...

{{ item.likeNum+(item.islike ? 1: 0) }}

{{item.replyNum}}

{{item.shareNum}}

let timer = null

export default {

data() {

return {

videoIndex: 0,

vlist: videoJson,

isPlay: true, //当前视频是否播放中

clickNum: 0, //记录点击次数

}

},

components: {

videoCart, videoComment

},

onLoad(option) {

this.videoIndex = parseInt(option.index)

},

onReady() {

this.init()

},

methods: {

init() {

this.videoContextList = []

for(var i = 0; i < this.vlist.length; i++) {

// this.videoContextList.push(this.$refs['myVideo' + i][0])

this.videoContextList.push(uni.createVideoContext('myVideo' + i, this));

}

setTimeout(() => {

this.play(this.videoIndex)

}, 200)

},

// 滑动切换

handleSlider(e) {

let curIndex = e.detail.current

if(this.videoIndex >= 0){

this.videoContextList[this.videoIndex].pause()

this.videoContextList[this.videoIndex].seek(0)

this.isPlay = false

}

if(curIndex === this.videoIndex + 1) {

this.videoContextList[this.videoIndex + 1].play()

this.isPlay = true

}else if(curIndex === this.videoIndex - 1) {

this.videoContextList[this.videoIndex - 1].play()

this.isPlay = true

}

this.videoIndex = curIndex

},

// 播放

play(index) {

this.videoContextList[index].play()

this.isPlay = true

},

// 暂停

pause(index) {

this.videoContextList[index].pause()

this.isPlay = false

},

// 点击视频事件

handleClicked(index) {

if(timer){

clearTimeout(timer)

}

this.clickNum++

timer = setTimeout(() => {

if(this.clickNum >= 2){

console.log('双击视频')

}else{

console.log('单击视频')

if(this.isPlay){

this.pause(index)

}else{

this.play(index)

}

}

this.clickNum = 0

}, 300)

},

// 喜欢

handleIsLike(index){

let vlist = this.vlist

vlist[index].islike =! vlist[index].islike

this.vlist = vlist

},

// 显示评论

handleVideoComment() {

this.$refs.videoComment.show()

},

// 显示购物车

handleVideoCart(index) {

this.$refs.videoCart.show(index)

},

}

}

基于Nvue小视频开发

由于原生video、map等原生组件层级较高,虽说cover-view组件可以覆盖其上,但其不能嵌套子组件,且限制较大,故只能采用编写.nvue(native vue)页面了。nvue页面语法结构和vue无太大差别,只是需要注意css编写方式,且只能使用flex布局模式,另外一些css属性无效。引入iconfont也有差异。

nvue引入iconfont方式:

beforeCreate() {

// 引入iconfont字体

// #ifdef APP-PLUS

const domModule = weex.requireModule('dom')

domModule.addRule('fontFace', {

fontFamily: "nvueIcon",

'src': "url('../../../static/fonts/iconfont.ttf')"

});

// #endif

},

好了,以上就是uniapp开发小视频/直播项目的介绍,希望对大家有些许帮助吧 ✍

基于android的防抖音直播,uniapp 仿火山 / 抖音短视频|uni-App+vue 直播实例相关推荐

  1. 用uni-app仿写抖音短视频APP推荐页(微信小程序版本)

    一.可能写文章会让我更有动力去学习吧,那就先把已经实现的推荐页写出来吧. 先看看效果:(界面不太美观) 可以点击链接看一下动图https://gitee.com/wangjinchan/resume/ ...

  2. 老罗直播带货,抖音依然没有准备好和快手、淘宝直播的PK

    文 |iihahe 来源 | 螳螂财经(ID:TanglangFin) 老罗离"带货一哥"越来越远. 老罗直播带货已经进行了三场.在线人数.销售额均在下降.尤其是第三场中,要不是一 ...

  3. obs多推流地址_抖音obs推流直播怎么操作,抖音直播推流地址如何获取?

    玩过抖音直播的朋友应该都知道,想要在抖音直播间中直播游戏,那就必须要具备两个条件,分别是抖音直播推流地址以及obs直播软件. 那抖音obs直播怎么操作,抖音直播推流地址如何获取呢? 由于很多刚入门的主 ...

  4. 长虹美菱:公司主要通过抖音短视频等平台进行直播带货

    [TechWeb]5月17日,直播带货已经成为了一种风潮,尤其是在疫情期间,各大品牌的CEO纷纷亲自带货,董明珠更是在抖音.快手和京东等平台现身,为格力呐喊造势.日前,针对股友的关于直播带货的提问,长 ...

  5. 抖音账号如何打造,抖音直播带货怎么做:国仁楠哥

    用户在哪里,哪里就是红利.随着抖音短视频的兴起,直播带货也成为各大企业网红创收的重要途径了. 抖音带货,已经成为众多用户玩抖音的重要原因之一. 那么,怎样才能抓住时代的机遇,创造出爆款抖音号呢? 1. ...

  6. 2022-5月如何使用疯狂URL获取抖音推流码地址(抖音无人直播教程)

    什么是推流地址? 平时我们如果是下载直播,叫拉流.但如果是你自己要直播,属于上传直播流数据,叫推流,即:把直播流数据推送到视频服务器,然后别人才能看到直播画面 推流地址有什么用? 有了推流地址,我们就 ...

  7. obs多推流地址_一文搞懂:抖音obs直播怎么操作,抖音直播推流地址如何获取!...

    玩过抖音直播的朋友应该都知道,想要在抖音直播间中直播游戏,那就必须要具备两个条件,分别是抖音直播推流地址以及obs直播软件. 那抖音obs直播怎么操作,抖音直播推流地址如何获取呢? 由于很多刚入门的主 ...

  8. android怎么玩大头特效,安卓系统上抖音大头特效怎么弄?

    安卓系统上抖音大头特效怎么弄?相信很多小伙伴都下载过抖音或者玩过抖音,小编之前刚下抖音的时候,一天刷短视频2个小时,感觉时间好快啊.不过,光看,自己不动手制作,好像缺了点什么?那本期小编就根据自己用安 ...

  9. 解决不了“不可能三角”,火山抖音化只是个昏招

    (图片来源于网络) 文 | 易不二 来源 | 螳螂财经(ID:TanglangFin) 快手"傍上"春晚,字节头条坐不住了. 近日,抖音CEO张楠在今日头条发文宣布,对火山进行品牌 ...

最新文章

  1. sqlplusw下登录sys账户
  2. 天平游码读数例题_量筒、天平经典习题
  3. java读取本地文件下载_java 读取本地的json文件
  4. 重磅推荐:2020年人工智能最精彩的25篇论文(附下载)
  5. tomcat和idea都占用了8080_IDEA 启动tomcat 端口占用原因以及解决方法( 使用debug模式)...
  6. android项目出现红色大感叹号的问题解决方法
  7. ImportError: dynamic module does not define module export function (PyInit__caffe)
  8. 反应速度测试软件,用批处理实现的反应速度测试工具
  9. 吉首大学 问题 L: 小李子的老年生活
  10. 使用变量的值作为JS对象的属性名,从而获取其对应的值
  11. 发布一个MsBuild任务组件-可用于同时发布多个网站
  12. 用python开发的运维管理系统_Python运维三十六式:用Python写一个简单的监控系统...
  13. android 生成长截图,【UNIAPP截长图】方案之一:滚动截屏 Android
  14. 自监督学习中的 Contrastive Learning 对比学习(持续更新)
  15. 常用的几种集合(Map另写)
  16. 全球都在乘“云”而上,从十几亿暴涨至千亿规模的云计算究竟是什么来头?
  17. 服务器开机显示器没反应,老司机教你开机显示器没反应怎么办
  18. 阿里云服务器的Linux系统中搭建springboot项目
  19. html防微信抢红包,如何实现仿微信抢红包
  20. 怎么在windows桌面添加便签

热门文章

  1. 盈世邮箱服务器pop3,iPhone (苹果手机)盈世邮箱POP3设置
  2. java代码规范(转载整合)
  3. 没有相爱,只有相杀:微软和谷歌又撕上了...
  4. docker 可视化管理工具 shipyard 简介
  5. Linux下提示命令找不到:bash:command not found
  6. x264参数中文详解
  7. 管理模式和商业模式的区别
  8. TCGA数据库的学习-系列一
  9. 【文献阅读】Probabilistic Terrain Mapping for Mobile Robots With Uncertain Localization
  10. 【java逻辑运算】java逻辑运算符的使用与计算