微信小程序官方组件展示之媒体组件video源码

以下将展示微信小程序之媒体组件video源码官方组件能力,组件样式仅供参考,开发者可根据自身需求定义组件样式,具体属性参数详见小程序开发文档。

功能描述:

视频(v2.4.0 起支持同层渲染)。

属性说明:


Bug& Tip

1.tip:`video 默认宽度 300px、高度 225px,可通过wxss 设置宽高。

2.tip:从 2.4.0 起 video 支持同层渲染,更多请参考原生组件使用限制

3.tip:若当前组件所在的页面或全局开启了 enablePassiveEvent 配置项,该内置组件可能会出现非预期表现(详情参考enablePassiveEvent 文档)

支持的格式

 

支持的编码格式


小窗特性说明

video小窗支持以下三种触发模式(在组件上设置 picture-in-picture-mode 属性):

1.push模式,即从当前页跳转至下一页时出现小窗(页面栈push)

2.pop模式,即离开当前页面时触发(页面栈pop)

3.以上两种路由行为均触发小窗

此外,小窗还支持以下特性:

1.小窗容器尺寸会根据原组件尺寸自动判断

2.点击小窗,用户会被导航回小窗对应的播放器页面

3.小窗出现后,用户可点击小窗右上角的关闭按钮或调用context.exitPictureInPicture() 接口关闭小窗

当播放器进入小窗模式后,播放器所在页面处于 hide 状态(触发 onHide 生命周期),该页面不会被销毁。当小窗被关闭时,播放器所在页面会被 unload (触发 onUnload 生命周期)。


DRM加密播放

1.小程序开发者获取到 DRM 加密的视频地址、身份认证 url、license url

2.使用 video 标签将以上几个参数填入

3.小程序确认该 video 为 DRM 视频源,进行 DRM 设备身份认证并且获取播放许可证

4.设备身份认证通过并获取播放许可证之后,由 DRM底层进行解密播放


示例代码

JAVASCRIPT
function getRandomColor() {

  const rgb = []

  for (let i = 0; i < 3; ++i) {

    let color = Math.floor(Math.random() * 256).toString(16)

    color = color.length === 1 ? '0' + color : color

    rgb.push(color)

  }

  return '#' + rgb.join('')

}

Page({

  onShareAppMessage() {

    return {

      title: 'video',

      path: 'page/component/pages/video/video'

    }

  },

  onReady() {

    this.videoContext = wx.createVideoContext('myVideo')

  },

  onHide() {

  },

  inputValue: '',

  data: {

    src: '',

    danmuList:

    [{

      text: '第 1s 出现的弹幕',

      color: '#ff0000',

      time: 1

    }, {

      text: '第 3s 出现的弹幕',

      color: '#ff00ff',

      time: 3

    }],

  },

  bindInputBlur(e) {

    this.inputValue = e.detail.value

  },

  bindButtonTap() {

    const that = this

    wx.chooseVideo({

      sourceType: ['album', 'camera'],

      maxDuration: 60,

      camera: ['front', 'back'],

      success(res) {

        that.setData({

          src: res.tempFilePath

        })

      }

    })

  },

  bindVideoEnterPictureInPicture() {

    console.log('进入小窗模式')

  },

  bindVideoLeavePictureInPicture() {

    console.log('退出小窗模式')

  },

  bindPlayVideo() {

    console.log('1')

    this.videoContext.play()

  },

  bindSendDanmu() {

    this.videoContext.sendDanmu({

      text: this.inputValue,

      color: getRandomColor()

    })

  },

  videoErrorCallback(e) {

    console.log('视频错误信息:')

    console.log(e.detail.errMsg)

  }

})


WXML
<view class="page-body">

  <view class="page-section tc">

    <video

      id="myVideo"

      src="http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400"

      binderror="videoErrorCallback"

      danmu-list="{{danmuList}}"

      enable-danmu

      danmu-btn

      show-center-play-btn='{{false}}'

      show-play-btn="{{true}}"

      controls

      picture-in-picture-mode="{{['push', 'pop']}}"

      bindenterpictureinpicture='bindVideoEnterPictureInPicture'

      bindleavepictureinpicture='bindVideoLeavePictureInPicture'

    ></video>

    <view style="margin: 30rpx auto" class="weui-label">弹幕内容</view>

    <input bindblur="bindInputBlur" class="weui-input" type="text" placeholder="在此处输入弹幕内容" />

    <button style="margin: 30rpx auto"  bindtap="bindSendDanmu" class="page-body-button" type="primary" formType="submit">发送弹幕</button>

    <navigator style="margin: 30rpx auto"  url="picture-in-picture" hover-class="other-navigator-hover">

      <button type="primary" class="page-body-button" bindtap="bindPlayVideo">小窗模式</button>

    </navigator>

  </view>

</view>




版权声明:本站所有内容均由互联网收集整理、上传,如涉及版权问题,请联系我们第一时间处理。

原文链接地址:https://developers.weixin.qq.com/miniprogram/dev/component/live-player.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容