【微信 video】微信 video 踩坑記錄

前提介紹:


iOS中微信的瀏覽器內核應該是和Safari瀏覽器同樣的內核


Android中微信的瀏覽器內核是騰訊自己開發的X5騰訊瀏覽服務(Android上的QQ瀏覽器也是這個內核)



1 內聯播放視頻


iOS上給video標籤增加playsinline和webkit-playsinline(兼容新版舊版),對於在Safari中可以內聯播放的,那麼在微信中也是內聯播放的


Android上給video標籤增加playsinline和webkit-playsinline(兼容新版舊版),只有部分機型支持(已知Sumsung Note4(Android 6.0.1)可以,Vivo X9(Android 7.1.1)不可以,其它手機和版本沒有測試)


Android上給video標籤增加x5-video-player-type="h5"屬性,可以做到類似內聯播放的樣式,但頂部的微信的title會ui有變化



2 根據視頻的寬高,取視頻中間一塊正方形播放,其餘用外面盒子設定寬高佈局的方式overflow: hidden,對視頻多餘部分進行遮罩,並視頻內聯播放


iOS,用1的方法做內聯播放,然後寬高以及video相對外面盒子的定位等參數通過計算獲得設置在對應的元素上即可


Android


2.1 使用playsinline和webkit-playsinline做內聯,然後寬高以及video相對外面盒子的定位等參數通過計算獲得設置在對應的元素,對於可以內聯播放的Android機器,多餘的部分將會溢出顯示,並不會這罩住(QQ瀏覽器同理也是這樣,但是Chrome瀏覽器Android版就可以,說明那個X5內核有點坑爹)


2.2 使用給video標籤增加x5-video-player-type="h5"屬性,做到類似內聯播放的樣式,然後寬高以及video相對外面盒子的定位等參數通過計算獲得設置在對應的元素,雖然是內聯的樣式播放,但是原來屬於視頻的但被遮罩的部分,將會變成黑色的底(即ui也不好看,不推薦)


2.3 既然2.1和2.2兩種方法都不適合,所以建議需要進行遮罩裁剪內聯播放的視頻,在Android的微信上還是放棄吧,建議做成,點擊播放按鈕時,彈出一個全屏播放的浮層(自己佈局一下fixed的盒子,裏面放video標籤,記得此標籤不要寫內聯的任何樣式playsinline和webkit-playsinline和x5-video-相關的屬性)



3 內聯播放視頻的時候,播放、暫停、進度條的ui自己定製


iOS上,使用1的方法,加上自己寫ui,js調用play,pause控制播放暫停,監聽ondurationchange和ontimeupdate可以獲取總時長和當前播放的時間,計算出播放進度


Android上,微信中的播放器樣式是沒法自己定製的(chrome就可以,但是X5的騰訊瀏覽服務就是不讓),官方的說法是這是產品策略(在微信或手Q上,如果是qq.com域名下的video可以通過不指定control屬性(表明由頁面自己繪製控制面板)來控制)(產品經理都是一樣討打麼)



參考資料:

H5同層播放器接入規範

https://x5.tencent.com/tbs/technical.html#/detail/web/1/cecfc00a-f9d1-448f-b04d-8acdf571e469

https://x5.tencent.com/tbs/technical.html#/detail/web/1/e41b0474-8411-44be-a337-edb776271b53



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章