> `<video>`默認寬度 300px、高度 225px,可通過 css 設置寬高。
[TOC]
## 屬性說明
| 屬性名 | 類型 | 默認值 | 說明 | 平臺差異說明 |
| --- | --- | --- | --- | --- |
| src | String | | 要播放視頻的資源地址 | |
| autoplay | Boolean | false | 是否自動播放 | |
| loop | Boolean | false | 是否循環播放 | |
| muted | Boolean | false | 是否靜音播放 | 字節跳動小程序不支持 |
| initial-time | Number | | 指定視頻初始播放位置,單位為秒(s)。 | 字節跳動小程序不支持 |
| duration | Number | | 指定視頻時長,單位為秒(s)。 | 字節跳動小程序不支持 |
| controls | Boolean | true | 是否顯示默認播放控件(播放/暫停按鈕、播放進度、時間) | |
| danmu-list | Object Array | | 彈幕列表 | 字節跳動小程序不支持 |
| danmu-btn | Boolean | false | 是否顯示彈幕按鈕,只在初始化時有效,不能動態變更 | 字節跳動小程序不支持 |
| enable-danmu | Boolean | false | 是否展示彈幕,只在初始化時有效,不能動態變更 | 字節跳動小程序不支持 |
| page-gesture | Boolean | false | 在非全屏模式下,是否開啟亮度與音量調節手勢 | 微信小程序、H5 |
| direction | Number | | 設置全屏時視頻的方向,不指定則根據寬高比自動判斷。有效值為 0(正常豎向), 90(屏幕逆時針90度), -90(屏幕順時針90度) | H5和字節跳動小程序不支持 |
| show-progress | Boolean | true | 若不設置,寬度大于240時才會顯示 | 字節跳動小程序不支持 |
| show-fullscreen-btn | Boolean | true | 是否顯示全屏按鈕 | |
| show-play-btn | Boolean | true | 是否顯示視頻底部控制欄的播放按鈕 | |
| show-center-play-btn | Boolean | true | 是否顯示視頻中間的播放按鈕 | 字節跳動小程序不支持 |
| enable-progress-gesture | Boolean | true | 是否開啟控制進度的手勢 | 字節跳動小程序不支持 |
| object-fit | String | contain | 當視頻大小與 video 容器大小不一致時,視頻的表現形式。contain:包含,fill:填充,cover:覆蓋 | 微信小程序、字節跳動小程序、H5 |
| poster | String | | 視頻封面的圖片網絡資源地址,如果 controls 屬性值為 false 則設置 poster 無效 | |
| show-mute-btn | Boolean | false | 是否顯示靜音按鈕 | 微信小程序 |
| title | String | | 視頻的標題,全屏時在頂部展示 | 微信小程序 |
| play-btn-position | String | bottom | 播放按鈕的位置 | 微信小程序、字節跳動小程序 |
| enable-play-gesture | Boolean | false | 是否開啟播放手勢,即雙擊切換播放/暫停 | 微信小程序 |
| auto-pause-if-navigate | Boolean | true | 當跳轉到其它小程序頁面時,是否自動暫停本頁面的視頻 | 微信小程序 |
| auto-pause-if-open-native | Boolean | true | 當跳轉到其它微信原生頁面時,是否自動暫停本頁面的視頻 | 微信小程序 |
| vslide-gesture | Boolean | false | 在非全屏模式下,是否開啟亮度與音量調節手勢(同 page-gesture) | 微信小程序 |
| vslide-gesture-in-fullscreen | Boolean | true | 在全屏模式下,是否開啟亮度與音量調節手勢 | 微信小程序 |
| ad-unit-id | String | | 視頻前貼廣告單元ID,更多詳情可參考開放能力[視頻前貼廣告](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/ad/video-patch-ad.html) | 微信小程序 |
| poster-for-crawler | String | | 用于給搜索等場景作為視頻封面展示,建議使用無播放 icon 的視頻封面圖,只支持網絡地址 | 微信小程序 |
| @play | EventHandle | | 當開始/繼續播放時觸發play事件 | 字節跳動小程序不支持 |
| @pause | EventHandle | | 當暫停播放時觸發 pause 事件 | 字節跳動小程序不支持 |
| @ended | EventHandle | | 當播放到末尾時觸發 ended 事件 | 字節跳動小程序不支持 |
| @timeupdate | EventHandle | | 播放進度變化時觸發,event.detail = {currentTime, duration} 。觸發頻率 250ms 一次 | 字節跳動小程序不支持 |
| @fullscreenchange | EventHandle | | 當視頻進入和退出全屏時觸發,event.detail = {fullScreen, direction},direction取為 vertical 或 horizontal | 字節跳動小程序不支持 |
| @waiting | EventHandle | | 視頻出現緩沖時觸發 | 字節跳動小程序不支持 |
| @error | EventHandle | | 視頻播放出錯時觸發 | 字節跳動小程序不支持 |
| @progress | EventHandle | | 加載進度變化時觸發,只支持一段加載。event.detail = {buffered},百分比 | 微信小程序、H5 |
| @loadedmetadata | EventHandle | | 視頻元數據加載完成時觸發。event.detail = {width, height, duration} | 微信小程序、H5 |
| @fullscreenclick | EventHandle | | 視頻播放全屏播放時點擊事件。event.detail = { screenX:"Number類型,點擊點相對于屏幕左側邊緣的 X 軸坐標", screenY:"Number類型,點擊點相對于屏幕頂部邊緣的 Y 軸坐標", screenWidth:"Number類型,屏幕總寬度", screenHeight:"Number類型,屏幕總高度"} | App 2.6.3+ |
| @controlstoggle | eventhandle | | 切換 controls 顯示隱藏時觸發。event.detail = {show} | 微信小程序2.9.5 |
## 普通視頻
~~~
<template>
<view class="page">
<video id="myVideo" src="https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/%E7%AC%AC1%E8%AE%B2%EF%BC%88uni-app%E4%BA%A7%E5%93%81%E4%BB%8B%E7%BB%8D%EF%BC%89-%20DCloud%E5%AE%98%E6%96%B9%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B@20181126-lite.m4v"
@error="videoErrorCallback" autoplay controls poster="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/poster.png"></video>
</view>
</template>
<script>
export default {
methods: {
videoErrorCallback: function(e) {
let msg = e.target.errMsg ? e.target.errMsg : '該視頻已過期無法播放'
uni.showModal({
content: msg,
showCancel: false
})
}
}
}
</script>
<style>
video {width: 100%;}
</style>
~~~
## 彈幕視頻
~~~
<template>
<view class="page">
<video id="myVideo" src="https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/%E7%AC%AC1%E8%AE%B2%EF%BC%88uni-app%E4%BA%A7%E5%93%81%E4%BB%8B%E7%BB%8D%EF%BC%89-%20DCloud%E5%AE%98%E6%96%B9%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B@20181126-lite.m4v"
@error="videoErrorCallback" :danmu-list="danmuList" autoplay enable-danmu danmu-btn controls poster="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/poster.png"></video>
<!-- #ifndef MP-ALIPAY || MP-TOUTIAO -->
<view>彈幕內容</view>
<input v-model="danmuValue" type="text" placeholder="在此處輸入彈幕內容" />
<button @click="sendDanmu">發送彈幕</button>
<!-- #endif -->
</view>
</template>
<script>
export default {
data() {
return {
danmuList: [{
text: '第 1s 出現的彈幕',
color: '#ff0000',
time: 1
},
{
text: '第 3s 出現的彈幕',
color: '#ff00ff',
time: 3
}
],
danmuValue: ''
}
},
onReady: function(res) {
// #ifndef MP-ALIPAY || MP-TOUTIAO
this.videoContext = uni.createVideoContext('myVideo')
// #endif
},
methods: {
sendDanmu: function() {
this.videoContext.sendDanmu({
text: this.danmuValue,
color: this.getRandomColor()
});
this.danmuValue = '';
},
videoErrorCallback: function(e) {
uni.showModal({
content: e.target.errMsg,
showCancel: false
})
},
getRandomColor: function() {
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('')
}
}
}
</script>
<style>
video {width: 100%;}
</style>
~~~
- 基礎知識
- UNI核心介紹
- flex布局
- 生命周期
- 全局方法
- 組件定義
- 自定義組件
- 全局組件
- 組件之間的數據傳輸
- 條件編譯
- 自定義頭部
- 節點信息 (SelectorQuery)
- vuejs基礎語法
- 頁面跳轉以及參數傳遞
- 事件的監聽注冊以及觸發
- css3動畫
- block的妙用
- mixin (混入)
- uniapp快捷鍵
- vuex狀態管理
- 實用功能
- 獲取服務提供商
- 啟動頁 / 啟動界面
- 引導頁
- tabbar配置
- 頭部導航欄基礎設置
- 上拉下拉(刷新/加載)
- 第三方登錄
- 第三方分享
- 推送通知 之 unipush
- scroll-view雙聯動
- 配置iOS通用鏈接(Universal Links)
- 本地緩存操作
- 升級/更新方案
- 熱更新
- 圖片上傳
- 搜索頁實現
- canvas繪圖助手
- 地圖定位
- 第三方支付————todo
- 分類輪播
- 清除應用緩存
- uniapp與webview的實時通訊
- 視頻-----todo
- 聊天----todo
- 長列表swiper左右切換
- 第三方插件
- uview
- mescroll
- uCharts (圖表)
- 無名 (更新插件)
- 第三方模版
- 自定義基座
- 打包發行
- 要封裝的方法
- 緩存 cache.js
- 請求接口 request.js
- 工具類 util.js
- 小程序登錄 xcxLogin.js
- 版本更新 update.js
- 優質插件
- 更新插件----todo
- 語音
- 語音識別 (含上傳)
- 百度語音合成播報接口
- 官方常用組建
- input 輸入框
- image 圖片
- audio 音頻
- picker 選擇器
- video 視頻
- scroll-view 滾動視圖