服务器之家

服务器之家 > 正文

微信小程序视频弹幕发送功能的实现

时间:2021-12-21 18:07     来源/作者:保护我方豆豆

1. 目录结构

微信小程序视频弹幕发送功能的实现

2. videoDanmu

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!-- 视频区域 -->
<video src="{{src}}"
id='video'
danmu-btn
enable-danmu
danmu-list="{{ danmuList }}"
>
</video>
 
<!-- 弹幕发送区域 -->
<view class='sendDanmu'>
  <textarea name="" id="" cols="30" rows="10" placeholder="请输入弹幕"
  bindinput="handleDanmuContent"
  ></textarea>
  <button type='primary' bindtap="handleSendDanmu"> 发送 </button>
</view>
 
<!-- 是否随机颜色 -->
<view class='selectColor'>
  <text> 随机颜色 </text>
  <switch bindchange='handleChange'></switch>
</view>
 
<!-- 选择默认颜色 -->
 
<view class='selectDefaultColor' bindtap="handleGotoSelectColor">
  <text> 选择颜色 </text>
  <view style="background: {{ defaultColor }}"></view>
</view>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/* pages/videoDanmu/videoDanmu.wxss */
 
#video{
  width: 100%;
  height: calc(750rpx * 225 / 300);
}
 
.sendDanmu{
  display: flex;
  height: 100rpx;
}
 
.sendDanmu textarea{
  border: 1px solid #ddd;
  height: 100rpx;
}
 
.selectColor{
  display: flex;
  justify-content: space-between;
  margin-top: 20rpx;
  border: 1px solid #ddd;
  align-items: center;
}
 
.selectDefaultColor{
  display: flex;
  justify-content: space-between;
  align-items: center;
  border: 1px solid #ddd;
  margin-top: 20rpx;
  margin-right: 30rpx;
}
 
.selectDefaultColor view{
  width: 50rpx;
  height: 50rpx;
  background-color: red;
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// pages/videoDanmu/videoDanmu.js
Page({
 
  /**
   * 页面的初始数据
   */
  data: {
    // 视频地址
    src:"http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400",
    danmuList:
    [{
     text: '第 1s 出现的弹幕',
     color: '#ff0000',
     time: 1
    }, {
     text: '第 3s 出现的弹幕',
     color: '#ff00ff',
     time: 3
    }], // 初始弹幕列表
    defaultColor: 'red', // 弹幕默认颜色
    isRandomColor: false, // 控制弹幕是否随机颜色
 
  },
 
  // 获取弹幕内容
  handleDanmuContent(e){
    this.content = e.detail.value;
 
  },
  // 随机弹幕颜色
  randomColor(){
    let red = Math.random() * 255;
    let green = Math.random() * 255;
    let blue = Math.random() * 255;
    return `rgb(${red}, ${green}, ${blue})`
  },
  // 发送弹幕
  handleSendDanmu(){
    let color = '';
    // 通过状态值判断是默认颜色还是随机颜色
    if(this.data.isRandomColor){
      color = this.randomColor()
    }else{
      color = this.data.defaultColor
    }
    this.videoContext.sendDanmu({
      text: this.content,
      color
     })
  },
  // 处理弹幕是否随机颜色
  handleChange(e){
    // console.log(e.detail.value)
    this.setData({
      isRandomColor: e.detail.value
    })
  },
  // 跳转到选择颜色页面
  handleGotoSelectColor(){
    wx.navigateTo({
     url: "/pages/selectColor/selectColor",
    })
  },
 
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    // 创建 video 上下文 VideoContext 对象。通过这个对象发送弹幕
    this.videoContext = wx.createVideoContext('video', this)
  }
})

3. selectColor

?
1
2
3
4
5
6
7
8
9
<view class='color-wrap'>
  <view wx:for="{{ color }}" wx:key='index'
  style="background: {{ item.number }}"
  bindtap="handleGetColor"
  data-color=" {{ item.number }} "
  >
    {{ item.color }}
  </view>
</view>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* pages/selectColor/selectColor.wxss */
 
.color-wrap{
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
}
 
.color-wrap view{
  width: 100rpx;
  height: 100rpx;
  background-color: red;
  margin-top: 20rpx;
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// pages/selectColor/selectColor.js
import color from './color'
Page({
 
  /**
   * 页面的初始数据
   */
  data: {
    color
  },
  // 获取选择的颜色
  handleGetColor(e){
    // console.log(e.currentTarget.dataset.color)
    const color = e.currentTarget.dataset.color;
    // 获取页面栈
    const pages = getCurrentPages()
    const page = pages[0]; // 上一页面
    page.setData({
      defaultColor: color
    })
    // 返回上一页面
    wx.navigateBack({
     delta: 0,
    })
  }
})
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
export default [
  { key: 1, color: ' 白色 ', number: '#FFFFFF' },
 
  { key: 2, color: ' 红色 ', number: '#FF0000' },
 
  { key: 3, color: ' 绿色 ', number: '#00FF00' },
 
  { key: 4, color: ' 蓝色 ', number: '#0000FF' },
 
  { key: 5, color: ' 牡丹红 ', number: '#FF00FF' },
 
  { key: 6, color: ' 青色 ', number: '#00FFFF' },
 
  { key: 7, color: ' 黄色 ', number: '#FFFF00' },
 
  { key: 8, color: ' 黑色 ', number: '#000000' },
 
  { key: 9, color: ' 海蓝 ', number: '#70DB93' },
 
  { key: 10, color: ' 巧克力色 ', number: '#5C3317' },
 
  { key: 11, color: ' 蓝紫色 ', number: '#9F5F9F' },
 
  { key: 12, color: ' 黄铜色 ', number: '#B5A642' },
 
  { key: 13, color: ' 亮金色 ', number: '#D9D919' },
 
  { key: 14, color: ' 棕色 ', number: '#A67D3D' },
 
  { key: 15, color: ' 青铜色 ', number: '#8C7853' },
 
  { key: 16, color: ' 2号青铜色 ', number: '#A67D3D' },
 
  { key: 17, color: ' 士官服蓝色 ', number: '#5F9F9F' },
 
  { key: 18, color: ' 冷铜色 ', number: '#D98719' },
 
  { key: 19, color: ' 铜色 ', number: '#B87333' },
 
  { key: 20, color: ' 珊瑚红 ', number: '#FF7F00' },
 
  { key: 21, color: ' 紫蓝色 ', number: '#42426F' },
 
  { key: 22, color: ' 深棕 ', number: '#5C4033' },
 
  { key: 23, color: ' 深绿 ', number: '#2F4F2F' },
 
  { key: 24, color: ' 深铜绿色 ', number: '#4A766E' },
 
  { key: 25, color: ' 深橄榄绿 ', number: '#4F4F2F' },
 
  { key: 26, color: ' 深兰花色 ', number: '#9932CD' },
 
  { key: 27, color: ' 深紫色 ', number: '#871F78' },
 
  { key: 28, color: ' 深石板蓝 ', number: '#6B238E' },
 
  { key: 29, color: ' 深铅灰色 ', number: '#2F4F4F' },
 
  { key: 30, color: ' 深棕褐色 ', number: '#97694F' },
 
  { key: 32, color: ' 深绿松石色 ', number: '#7093DB' },
 
  { key: 33, color: ' 暗木色 ', number: '#855E42' },
 
  { key: 34, color: ' 淡灰色 ', number: '#545454' },
 
  { key: 35, color: ' 土灰玫瑰红色 ', number: '#856363' },
 
  { key: 36, color: ' 长石色 ', number: '#D19275' },
 
  { key: 37, color: ' 火砖色 ', number: '#8E2323' },
 
  { key: 38, color: ' 森林绿 ', number: '#238E23' },
 
  { key: 39, color: ' 金色 ', number: '#CD7F32' },
 
  { key: 40, color: ' 鲜黄色 ', number: '#DBDB70' },
 
  { key: 41, color: ' 灰色 ', number: '#C0C0C0' },
 
  { key: 42, color: ' 铜绿色 ', number: '#527F76' },
 
  { key: 43, color: ' 青黄色 ', number: '#93DB70' },
 
  { key: 44, color: ' 猎人绿 ', number: '#215E21' },
 
  { key: 45, color: ' 印度红 ', number: '#4E2F2F' },
 
  { key: 46, color: ' 土黄色 ', number: '#9F9F5F' },
 
  { key: 47, color: ' 浅蓝色 ', number: '#C0D9D9' },
 
  { key: 48, color: ' 浅灰色 ', number: '#A8A8A8' },
 
  { key: 49, color: ' 浅钢蓝色 ', number: '#8F8FBD' },
 
  { key: 59, color: ' 浅木色 ', number: '#E9C2A6' },
 
  { key: 60, color: ' 石灰绿色 ', number: '#32CD32' },
 
  { key: 61, color: ' 桔黄色 ', number: '#E47833' },
 
  { key: 62, color: ' 褐红色 ', number: '#8E236B' },
 
  { key: 63, color: ' 中海蓝色 ', number: '#32CD99' },
 
  { key: 64, color: ' 中蓝色 ', number: '#3232CD' },
 
  { key: 65, color: ' 中森林绿 ', number: '#6B8E23' },
 
  { key: 66, color: ' 中鲜黄色 ', number: '#EAEAAE' },
 
  { key: 67, color: ' 中兰花色 ', number: '#9370DB' },
 
  { key: 68, color: ' 中海绿色 ', number: '#426F42' },
 
  { key: 69, color: ' 中石板蓝色 ', number: '#7F00FF' },
 
  { key: 70, color: ' 中春绿色 ', number: '#7FFF00' },
 
  { key: 71, color: ' 中绿松石色 ', number: '#70DBDB' },
 
  { key: 72, color: ' 中紫红色 ', number: '#DB7093' },
 
  { key: 73, color: ' 中木色 ', number: '#A68064' },
 
  { key: 74, color: ' 深藏青色 ', number: '#2F2F4F' },
 
  { key: 75, color: ' 海军蓝 ', number: '#23238E' },
 
  { key: 76, color: ' 霓虹篮 ', number: '#4D4DFF' },
 
  { key: 77, color: ' 霓虹粉红 ', number: '#FF6EC7' },
 
  { key: 78, color: ' 新深藏青色 ', number: '#00009C' },
 
  { key: 79, color: ' 新棕褐色 ', number: '#EBC79E' },
 
  { key: 80, color: ' 暗金黄色 ', number: '#CFB53B' },
 
  { key: 81, color: ' 橙色 ', number: '#FF7F00' },
 ];

4. 效果图

微信小程序视频弹幕发送功能的实现

颜色选择

微信小程序视频弹幕发送功能的实现

到此这篇关于微信小程序视频弹幕发送功能的实现的文章就介绍到这了,更多相关小程序视频弹幕发送内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/gklcsdn/article/details/111823940

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部