支付寶小程序媒體組件 視頻·video

2020-09-18 11:11 更新

版本需求:基礎(chǔ)庫(kù)版本 1.10.0 開始支持,低版本需要做 兼容處理。

用戶可通過 video 組件播放視頻。相關(guān) API:my.createVideoContext。

說明:

  • css 動(dòng)畫對(duì) video 組件無效。
  • 自定義豎屏觀看視頻時(shí)兩邊出現(xiàn)的白色填充:
    • 如果是因?yàn)橐曨l的寬高比跟 video 組件的寬高比不一致,請(qǐng)通過 object-fit 進(jìn)行調(diào)整 ;
    • 如果是由于 poster 實(shí)際的寬高比跟容器的寬高比不一致,請(qǐng)通過 poster-size 進(jìn)行調(diào)整。

掃碼體驗(yàn)

效果示例

undefined

示例代碼

<view>
  <video id="myVideo" 
    src="{{video.src}}" 
    controls="{{video.showAllControls}}"
    loop="{{video.isLooping}}"
    muted="{{video.muteWhenPlaying}}"
    show-fullscreen-btn="{{video.showFullScreenButton}}"
    show-play-btn="{{video.showPlayButton}}"
    show-center-play-btn="{{video.showCenterButton}}"
    object-fit="{{video.objectFit}}"
    autoplay="{{video.autoPlay}}"
    direction="{{video.directionWhenFullScreen}}"
    initial-time="{{video.initTime}}"
    mobilenetHintType="{{video.mobilenetHintType}}"
    onPlay="onPlay" 
    onPause="onPause" 
    onEnded="onEnded"
    onError="onPlayError"
    onTimeUpdate="onTimeUpdate"
   />
</view>
Page({
  data: {
       status: "inited",
    time: "0",
    video: {
    src: "XNDM0OTQzMDc2OA==",
    showAllControls: false,
    showPlayButton: false,
    showCenterButton: true,
    showFullScreenButton: true,
    isLooping: false,
    muteWhenPlaying: false,
    initTime: 0,
    objectFit: "contain",
    autoPlay: false,
    directionWhenFullScreen: 90,
    mobilenetHintType: 2,
 },},


    onPlay(e) {
    console.log('onPlay');
},


    onPause(e) {
    console.log('onPause');
},


    onEnded(e) {
    console.log('onEnded');
},


    onPlayError(e) {
    console.log('onPlayError, e=' + JSON.stringify(e));
},


    onTimeUpdate(e) {
    console.log('onTimeUpdate:', e.detail.currentTime);
},
});

屬性

屬性名 類型 默認(rèn)值 說明 最低版本
style String - 內(nèi)聯(lián)樣式。 -
class String - 外部樣式名。 -
src String - 要播放視頻的資源地址,支持優(yōu)酷視頻編碼(支付寶客戶端10.1.75)。src支持的協(xié)議如下:vid/showId: XMzg2Mzc5MzMwMA==apFilePath: https://resource/xxx.video -
poster String - 視頻封面圖的 url,支持 jpg、png 等圖片,如https://***.jpg。如果不傳的話,默認(rèn)取視頻的首幀圖作為封面圖。 -
poster-size String contain 當(dāng) poster 高寬比跟視頻高寬不匹配時(shí),如何顯示 poster,設(shè)置規(guī)則同 background-size 一致。 -
object-fit String contain 當(dāng)視頻大小與 video 容器大小不一致時(shí),視頻的表現(xiàn)形式。contain:包含,fill:填充。 -
initial-time Number - 指定視頻初始播放位置,單位s 1.9.0
duration Number - 指定視頻時(shí)長(zhǎng),單位s,默認(rèn)讀取視頻本身時(shí)長(zhǎng)信息 -
controls Boolean true 是否顯示默認(rèn)播放控件(底部工具條,包括播放/暫停按鈕、播放進(jìn)度、時(shí)間) -
autoplay Boolean false 是否自動(dòng)播放 -
direction Number - 設(shè)置全屏?xí)r視頻的方向,不指定則根據(jù)寬高比自動(dòng)判斷。有效值為 0(正常豎向), 90(屏幕逆時(shí)針90度), -90(屏幕順時(shí)針90度) 1.12.0
loop Boolean false 是否循環(huán)播放 1.9.0
muted Boolean false 是否靜音播放 1.9.0
show-fullscreen-btn Boolean true 是否顯示全屏按鈕 1.9.0
show-play-btn Boolean true 是否顯示視頻底部控制欄的播放按鈕 1.9.0
show-center-play-btn Boolean true 是否顯示視頻中間的播放按鈕 1.9.0
show-mute-btn Boolean true 是否展示工具欄上的靜音按鈕 1.13.7
show-thin-progress-bar Boolean false 當(dāng)?shù)撞抗ぞ邨l隱藏時(shí),是否顯示細(xì)進(jìn)度條(controls=false時(shí)設(shè)置無效) 1.15.0
enable-progress-gesture Boolean true 全屏模式下是否開啟控制進(jìn)度的手勢(shì) 1.9.0
mobilenet-hint-type Number 1 移動(dòng)網(wǎng)絡(luò)提醒樣式:0-不提醒;1-tip提醒;2-阻塞提醒(無消耗流量大小);3-阻塞提醒(有消耗流量大小提醒) 1.13.0
onPlay EventHandle - 當(dāng)開始/繼續(xù)播放時(shí)觸發(fā)play事件 -
onPause EventHandle - 當(dāng)暫停播放時(shí)觸發(fā) pause 事件 -
onEnded EventHandle - 當(dāng)播放到末尾時(shí)觸發(fā) ended 事件 -
onTimeUpdate EventHandle - 播放進(jìn)度變化時(shí)觸發(fā),event.detail = {currentTime: '當(dāng)前播放時(shí)間',userPlayDuration:'用戶實(shí)際觀看時(shí)長(zhǎng)',videoDuration:'視頻總時(shí)長(zhǎng)'} 1.9.0
onLoading EventHandle - 視頻出現(xiàn)緩沖時(shí)觸發(fā) -
onError EventHandle - 視頻播放出錯(cuò)時(shí)觸發(fā)(errorCode見下面錯(cuò)誤碼表) -
onFullScreenChange EventHandle - 視頻進(jìn)入和退出全屏?xí)r觸發(fā),event.detail = {fullScreen, direction},direction取為 vertical 或 horizontal 1.12.0
onTap EventHandle - 點(diǎn)擊視頻view時(shí)觸發(fā),event.detail = {ptInView:{x:0,y:0}} -
onUserAction EventHandle - 用戶操作事件,event.detail = {tag:"mute", value:0},tag為用戶操作的元素,目前支持的tag有:play(底部播放按鈕)、centerplay(中心播放按鈕)、mute(靜音按鈕)、fullscreen(全屏按鈕)、retry(重試按鈕)、mobilenetplay(網(wǎng)絡(luò)提醒的播放按鈕) -
onStop EventHandle - 視頻播放終止。 1.9.0
onRenderStart EventHandle - 當(dāng)視頻加載完真正開始播放時(shí)觸發(fā)。 1.13.6
onTap EventHandle - 點(diǎn)擊視頻 view 時(shí)觸發(fā),event.detail = {ptInView:{x:0,y:0}}。 -

錯(cuò)誤碼

錯(cuò)誤碼 大類 詳細(xì)說明
1 loading、playing 過程中都可能拋出 未知錯(cuò)誤。
1002 loading、playing 過程中都可能拋出 播放器內(nèi)部錯(cuò)誤。
1005 loading、playing 過程中都可能拋出 網(wǎng)絡(luò)連接失敗。
1006 loading 異常 數(shù)據(jù)源錯(cuò)誤。
1007 loading 異常 播放器準(zhǔn)備失敗。
1008 loading 異常 網(wǎng)絡(luò)錯(cuò)誤。
1009 loading 異常 搜索視頻出錯(cuò)(源出錯(cuò)的一種)。
1010 loading 異常 準(zhǔn)備超時(shí),也可認(rèn)為是網(wǎng)絡(luò)太慢或數(shù)據(jù)源太慢導(dǎo)致的播放失敗。
400 loading 異常 讀 ups 信息超時(shí)。
3001 loading 異常 audio 渲染出錯(cuò)。
3002 loading 異常 硬解碼錯(cuò)誤。
2004 playing 過程中可能拋出 播放過程中加載時(shí)間超時(shí)。
1023 playing 過程中可能拋出 播放中內(nèi)部錯(cuò)誤(ffmpeg 內(nèi)錯(cuò)誤)。

支持的視頻封裝格式

iOS、Android 支持以下視頻封裝格式: mp4、mov、m4v、3gp、m3u8、flv

支持的編碼格式

iOS、Android 支持以下編碼格式: H.264、H.265、AAC

常見問題

video 組件中播放的視頻,當(dāng)用戶加載觀看視頻一次后,再次進(jìn)行觀看的時(shí)候是拉取的緩存,還是再次使用網(wǎng)絡(luò)重新加載的?

目前的緩存策略是如果視頻是循環(huán)播放的,再次觀看是拉取的緩存,如果不是循環(huán)播放,每次都是網(wǎng)絡(luò)重新加載。 主要是針對(duì)一些循環(huán)播放的短視頻場(chǎng)景提供緩存能力。

緩存中的視頻什么時(shí)候會(huì)清除掉 ?

頁(yè)面銷毀或者關(guān)閉小程序會(huì)清除掉。

小程序如何獲取視頻時(shí)長(zhǎng)?

在視頻組件 onTimeUpdate 方法中獲取。

video 組件,把 loop 字段設(shè)置為循環(huán)播放,在播放第二次的時(shí)候,把視頻資源刪除,發(fā)現(xiàn)無法播放 ?

雖然再次播放拉取的是緩存中的視頻,但是還是會(huì)校驗(yàn)視頻資源的。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)