摘要:估計踩過微信視頻這個坑的,內心都想說上一句神經病啊而微信也終于出了個同層播放器接入規范,算是正常點了好了閑話不說,下邊進入正題標簽里的內聯播放相關屬性微信在標簽上新增了一些的私有屬性,分別是啟用同層播放。
估計踩過微信視頻這個坑的,內心都想說上一句:
“神經病?。 ?/p>
而微信也終于出了個《H5同層播放器接入規范》,算是正常點了……好了閑話不說,下邊進入正題:
1. 標簽里的內聯播放相關屬性微信在video標簽上新增了一些x5的私有屬性,分別是:
x5-video-player-type
啟用同層播放。取值固定為"h5"。
x5-video-player-fullscreen
是否全屏。取值為"true"或"false"。
x5-video-orientation
視頻方向。取值分別為"landscape"、"portrait"或者"landscape|portrait",分別對應橫屏、豎屏及自動旋轉(這個應該用的少)。
不過有一點需要注意的是,這些都是x5的私有屬性,僅適用于Android平臺。而跟iOS平臺相關的,則是這幾個屬性:
airplay
x-webkit-airplay
playsinline
webkit-playsinline
其中最后兩個是iOS平臺下的內聯播放屬性,都是布爾屬性,不需要賦值(存在即是true);前兩個是iOS平臺下airplay的相關屬性(說實話我現在也沒搞明白為什么網頁需要airplay屬性),取值為"allow"或"deny",通常保險起見用"allow"就可以。
2. CSS的屬性選擇及取值微信在同層接入規范中提到了object-position這個屬性,用于設置視頻出現的位置。實際在嘗試的過程中,搭配object-fit屬性同時使用的效果會比較好。但這兩個屬性并不是x5私有屬性,而是原生的,所以它們同時適用于Android和iOS兩個平臺。
object-position和object-fit這兩個元素主要的作用是為“可替換元素”設置位置和大小。這里的“可替換元素”,指的是內容不受CSS顯式控制的元素,比如比較典型的就是、、和表單元素等。
說回視頻播放。微信官方的同層接入規范中推薦的做法,是用js動態計算需要的像素值,然后給object-position屬性賦值。而我自己嘗試了一圈下來,發現object-position這個屬性本身支持百分比取值,通常視頻默認的值是"50% 50%",也就是居中;全屏視頻一般情況下需要貼底放,所以要把取值改成"0 100%"。
另一個屬性object-fit,有點類似background-size屬性,用來設置視頻在容器內的填充方式,平時用只需要取值"contain"(保持寬高比填滿容器)就可以了。不過這里需要留意的是,全屏下,由于視頻一般都不會正好填滿屏幕(寬高比差異以及輸出分辨率沒算頂部標題欄),會在頂部留下一條空隙。這條空隙通常是默認黑色的,如果需要更改顏色,首先要加上個"display:block;"(因為video默認是inline的),然后直接改background-color就OK~
3. 視頻封面標簽里有一個與視頻封面相關的屬性poster,但是在使用中發現性能存在一些問題,在Android端打開視頻時(加載),會有跳動的感覺,但是如果去掉,在視頻加載時(preload取值"auto",且未用預加載)則會顯示空白頁面。目前換用了背景圖片的方式,但由于視頻全屏播放時頂部會有空隙,所以額外加了個background-position: bottom;以及background-size: contain;(取值和視頻保持一致),這樣設置好的背景在播放視頻時就不會漏邊了。
4. 設置視頻視口大小同層接入規范里推薦在resize事件回調里設置視頻視口大小,我習慣直接設置標簽的width和height,所以在resize回調里加入:
$("video") .attr({ "width": window.innerWidth + "px", "height": window.innerHeight + "px" });
就可以了。
5. UA特性探測同層接入規范里給的,判斷是否是同層播放器方法:
在微信等TBS里通過UA判斷X5內核版本來區分,當版版本號>036849表示支持
UA示例:
Mozilla/5.0 (Linux? Android 4.4.4? OPPO R7 Build/KTU84P) AppleWebKit/537.36
(KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.8
TBS/036849 Safari/537.36 MicroMessenger/6.3.27.861 NetType/WIFI
Language/zh_CN
在QQ瀏覽器Android版本中,當瀏覽器版本>=7.1時開始支持
UA示例:User-Agent: Mozilla/5.0 (Linux? U? Android 4.4.4? zh-cn? OPPO R7
Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0
Chrome/37.0.0.0 MQQBrowser/7.1 Mobile Safari/537.36
參考資料:
微信 · H5同層播放器接入規范
京東 · 視頻H5のVideo標簽在微信里的坑和技巧
關于如何在微信里面讓video不全屏播放
H5微信播放全屏問題
HTML5中的視頻音頻使用詳解
張鑫旭 · 半深入理解CSS3 object-position/object-fit屬性
MDN · object-fit
MDN · object-position
MDN · 媒體相關事件
MDN · 可替換元素
Apple Developer · HTMLVideo?Element
Apple Developer · HTMLMedia?Element
Apple Developer · plays?Inline
Apple Developer · Opting Into or Out of AirPlay
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/111795.html
摘要:估計踩過微信視頻這個坑的,內心都想說上一句神經病啊而微信也終于出了個同層播放器接入規范,算是正常點了好了閑話不說,下邊進入正題標簽里的內聯播放相關屬性微信在標簽上新增了一些的私有屬性,分別是啟用同層播放。 估計踩過微信視頻這個坑的,內心都想說上一句: 神經病?。?而微信也終于出了個《H5同層播放器接入規范》,算是正常點了……好了閑話不說,下邊進入正題: 1. 標簽里的內聯播放相關屬性...
摘要:估計踩過微信視頻這個坑的,內心都想說上一句神經病啊而微信也終于出了個同層播放器接入規范,算是正常點了好了閑話不說,下邊進入正題標簽里的內聯播放相關屬性微信在標簽上新增了一些的私有屬性,分別是啟用同層播放。 估計踩過微信視頻這個坑的,內心都想說上一句: 神經病??! 而微信也終于出了個《H5同層播放器接入規范》,算是正常點了……好了閑話不說,下邊進入正題: 1. 標簽里的內聯播放相關屬性...
隨著抖音、快手這類的視頻類app的火爆,移動端h5視頻類應用也隨之興起,使用video播放的場景也越來越多,本篇文章主要例舉了移動端視頻播放的一些場景和個人在開發過程中遇到的一些問題,希望在看過這篇文章后,能對開發者在移動端使用video播放時快速開發減少踩坑 全屏播放 視頻的全屏播放是移動端一個很常見的場景,因此我們需要對video設置全屏播放,全屏播放用到的方法是requestFullscre...
隨著抖音、快手這類的視頻類app的火爆,移動端h5視頻類應用也隨之興起,使用video播放的場景也越來越多,本篇文章主要例舉了移動端視頻播放的一些場景和個人在開發過程中遇到的一些問題,希望在看過這篇文章后,能對開發者在移動端使用video播放時快速開發減少踩坑 全屏播放 視頻的全屏播放是移動端一個很常見的場景,因此我們需要對video設置全屏播放,全屏播放用到的方法是requestFullscre...
閱讀 2262·2021-09-28 09:36
閱讀 1996·2021-09-22 15:14
閱讀 3623·2019-08-30 12:47
閱讀 3034·2019-08-30 12:44
閱讀 1226·2019-08-29 17:06
閱讀 535·2019-08-29 14:12
閱讀 973·2019-08-29 14:01
閱讀 2581·2019-08-29 12:17