video组件是用来在微信小程序播放视频的组件,可以控制是否显示播放控件(播放、暂停、播放进度、时间),还可以实现发送弹幕功能

video组件的默认宽度为300px、高度为225px,可以通过WXSS设置宽高

video组件的属性多达27个,通过对属性的设置,可以配置出功能丰富、强大的视频播放器

video组件常用的属性

image.png

一个有弹幕功能的视频播放示例

  1. index.wxml
  2. -------------
  3. <view class="container">
  4. <video id="myVideo" src="{{src}}"
  5. danmu-list="{{danmuList}}" enable-danmu danmu-btn
  6. binderror="videoErrorCallback"></video>
  7. <view class='control'>
  8. <button bindtap="bindPlay" >播放</button>
  9. <button bindtap="bindPause" >暂停</button>
  10. </view>
  11. </view>
  12. --------------------------------------------------------------------------
  13. index.js
  14. -------------
  15. Page({
  16. onReady: function (res) {
  17. this.videoContext = wx.createVideoContext('myVideo')
  18. },
  19. inputValue: '',
  20. data: {
  21. src: 'http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201
  22. 690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=3
  23. 02c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400',
  24. danmuList: [
  25. {
  26. text: '第 1s 出现的弹幕',
  27. color: '#ff0000',
  28. time: 1
  29. },
  30. {
  31. text: '第 3s 出现的弹幕',
  32. color: '#ff00ff',
  33. time: 3
  34. }]
  35. },
  36. bindPlay: function () {
  37. this.videoContext.play()
  38. },
  39. bindPause: function () {
  40. this.videoContext.pause()
  41. },
  42. videoErrorCallback: function (e) {
  43. console.log('视频错误信息:')
  44. console.log(e.detail.errMsg)
  45. }
  46. })

image.png
video组件上下文对象videoContext,可通过wx.createVideoContext获取

给video添加一个id属性,在wx.createVideoContext函数里传入video的id
video的id需要事先设置好

从示例3-14中可以看到,给video添加了id=”myVideo”,然后在index.js的onReady函数内,通过this.videoContext =wx.createVideoContext('myVideo')获取到video的上下文对象videoContext

之后就使用videoContext实现控制视频播放、暂停、跳转、发送弹幕等功能

videoContext的方法

image.png用户发送弹幕,可以首先获取到用户的输入,然后调用sendDanmu函数

传入sendDanmu参数的对象有两个属性:一个是弹幕的内容;一个是弹幕的颜色

发送弹幕示例如下

  1. this.videoContext.sendDanmu({
  2. text:"hello world",
  3. color:"#f00"
  4. })