詳細分析H5微信播放全螢幕問題的範例程式碼
在ios和安卓手機裡的微信下播放視頻時,會遇到不少問題,例如需要手動點擊,視頻才會播放,並且視頻會跳出微信框,出現控制條,如果視頻不是騰訊視頻,播放完畢會出現騰訊影片的廣告推播等問題
解決方法:給video標籤加一些屬性,呼叫h5原生video。
<video id="videoALL" src="video/01.mp4" poster="images/1.jpg" /*视频封面*/ preload="auto" webkit-playsinline="true" /*这个属性是ios 10中设置可以 让视频在小窗内播放,也就是不是全屏播放*/ playsinline="true" /*IOS微信浏览器支持小窗内播放*/ x-webkit-airplay="allow" x5-video-player-type="h5" /*启用H5播放器,是wechat安卓版特性*/ x5-video-player-fullscreen="true" /*全屏设置, 设置为 true 是防止横屏*/> x5-video-orientation="portraint" /*播放器支付的方向, landscape横屏,portraint竖屏,默认值为竖屏*/ style="object-fit:fill"></video>
poster="images/1.jpg":屬性規定影片下載時顯示的影像,或是在使用者點擊播放按鈕前顯示的圖像。如果未設定該屬性,則使用影片的第一幀來代替。
preload="auto" :屬性規定在頁面載入後載入影片。
webkit-playsinline與playsinline:影片播放時區域播放,不脫離文件流 。但這個屬性比較特別,需要嵌入網頁的APP例如WeChat中UIwebview 的allowsInlineMediaPlayback = YES webview.allowsInlineMediaPlayback = YES,才能生效。換句話說,如果APP不設置,你頁面中加了這標籤也無效,這也就是為什麼安卓手機WeChat 播放視頻總是全屏,因為APP不支援playsinline,而ISO的微信卻支持。
這裡就要補充下,如果是想做全螢幕直播或全螢幕H5體驗的用戶,ISO需要設定刪除webkit-playsinline 標籤,因為你設定false 是不支援的,安卓則不需要,因為默認全螢幕.但這時候全螢幕是有播放控制的,無論你有沒有設定control。 做直播的可能用得著播放控件,但是全屏H5是不需要的,那麼去除全屏播放時候的控件,需要以下設置:同層播放。
x-webkit-airplay="allow"暫時無法確切的知道其作用,但是小編猜測,這個屬性應該是使此影片支援ios的AirPlay功能。使用AirPlay可以直接從使用iOS的裝置上的不同位置播放影片、音樂還有照片文件,也就是說透過AirPlay功能可以實現影音文件的無線播放,當然前提是播放的終端設備也要支援對應的功能。
x5-video-player-type:啟用同層H5播放器,就是在視訊全螢幕的時候,p可以呈現在視訊圖層上,也是WeChat安卓版特有的屬性。同層播放別名也叫做沉浸式播放,播放的時候看似全屏,但是已經除去了control和微信的導航欄,只留下"X"和"<"兩鍵。目前的同層播放器只在Android(包括微信)上生效,暫時不支援iOS。至於為什麼同層播放只對安卓開放,是因為安卓不能像ISO一樣區域播放,預設的全螢幕會使得一些介面操作被阻攔,如果是全螢幕H5還好,但是做直播的話,諸如彈幕那樣的功能就無法實現了,所以這時候同層播放的概念就解決了這個問題。不過在測試的過程中發現,不同版本的ISO和安卓效果略有不同。
x5-video-orientation:宣告播放器支援的方向,可選值landscape 橫屏, portraint垂直螢幕。預設值portraint。無論是直播或全螢幕H5通常都是垂直螢幕播放,但這個屬性需要x5-video-player-type開啟H5模式
x5-video-player-fullscreen#: 全螢幕設定。它又兩個屬性值,ture和false,true支援全螢幕播放,false不支援全螢幕播放。
其實,ISO 微信瀏覽器是Chrome的內核,相關的屬性都支持,也是為什麼X5同層播放不支援的原因。安卓微信瀏覽器是X5內核,有些屬性標籤例如playsinline就不支持,所以總是全螢幕。
還有個問題,在Android的微信裡面,就算加上了上面的屬性,還會出現上下有黑邊,不能全螢幕的問題。
解決方法:為video加上object-fit: fill;的style屬性。如果還是有黑邊有可能是影片尺寸不合適。
<p id="videobox"> <video id="videoALL" src="mp4.mp4" poster="1.jpg" preload="auto" webkit-playsinline="true" playsinline="true" x-webkit-airplay="allow" x5-video-player-type="h5" x5-video-player-fullscreen="true" x5-video-orientation="portraint" style="object-fit:fill"> </video> <p id="btn" onclick="playcontr()"></p></p><p id="videoend"><p id="againbtn" onclick="playcontr()"></p></p>
*{ padding: 0; margin: 0; } #videobox{position: absolute;width: 100%;height: 100%;background-color: green;background-image: url(1.jpg);background-size: 100% 100%;background-position: top;overflow: hidden;} #videoALL{ height: auto; position: absolute; width: 100%; top: 0; left: 0; object-fit: fill; display: block; background-size: cover; overflow: hidden;} #btn,#againbtn{width: 81px;height: 75px;position: absolute;top: 50%;left:50%;margin-top: -37.5px;margin-left: -40.5px;background-image: url(btn.png);background-size: 100% 100%;} #videoend{position: absolute;background-color: pink;display: none;background-image: url(2.jpg);background-size: cover;background-position: top;}
<script>var videoALL = document.getElementById('videoALL'), videobox = document.getElementById('videobox'), btn = document.getElementById('btn'), videoend = document.getElementById('videoend');var clientWidth = document.documentElement.clientWidth;var clientHeight = document.documentElement.clientHeight; videoALL.style.width = clientWidth + 'px'; videoALL.style.height = 'auto'; document.addEventListener('touchmove', function(e){e.preventDefault()}, false);function stylep(pId){ pId.style.width = clientWidth + 'px'; pId.style.height = clientHeight +200+ 'px'; } stylep(videobox); stylep(videoend);var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端 var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 function playcontr(){ if (isAndroid) { videoALL.style.width = window.screen.width + 'px'; videoALL.style.height = window.screen.height + 'px'; } videobox.style.display = "block"; videoALL.play(); btn.style.display = "none"; videoend.style.display = "none"; }; videoALL.addEventListener('pause',function(){ videoALL.style.width = clientWidth + 'px'; btn.style.display = "block"; }) videoALL.addEventListener("ended",function(){ videoALL.pause(); videobox.style.display = "none"; videoend.style.display = "block"; });</script>
#
以上是詳細分析H5微信播放全螢幕問題的範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

H5referstoHTML5,apivotaltechnologyinwebdevelopment.1)HTML5introducesnewelementsandAPIsforrich,dynamicwebapplications.2)Itsupportsmultimediawithoutplugins,enhancinguserexperienceacrossdevices.3)SemanticelementsimprovecontentstructureandSEO.4)H5'srespo

"h5"和"HTML5"在大多數情況下是相同的,但它們在某些特定場景下可能有不同的含義。 1."HTML5"是W3C定義的標準,包含新標籤和API。 2."h5"通常是HTML5的簡稱,但在移動開發中可能指基於HTML5的框架。理解這些區別有助於在項目中準確使用這些術語。

H5通過語義化元素和ARIA屬性提升網頁的可訪問性和SEO效果。 1.使用、、等元素組織內容結構,提高SEO。 2.ARIA屬性如aria-label增強可訪問性,輔助技術用戶可順利使用網頁。

H5、小程序和APP的主要區別在於:技術架構:H5基於網頁技術,小程序和APP為獨立應用程序。體驗和功能:H5輕便易用,功能受限;小程序輕量級,交互性好;APP功能強大,體驗流暢。兼容性:H5跨平台兼容,小程序和APP受平台限制。開發成本:H5開發成本低,小程序中等,APP最高。適用場景:H5適合信息展示,小程序適合輕量化應用,APP適合複雜功能應用。

本文提供國內安全下載歐易OKX App的詳細指南。由於國內應用商店限制,建議用戶通過歐易OKX官方網站下載App,或使用官網提供的二維碼掃描下載。下載過程中,務必核實官網地址,檢查應用權限,安裝後進行安全掃描,並啟用雙重驗證。 使用過程中,請遵守當地法律法規,使用安全網絡環境,保護賬戶安全,警惕詐騙,理性投資。 本文僅供參考,不構成投資建議,數字資產交易風險自負。

Web标准和技术从HTML4、CSS2和简单的JavaScript演变至今,经历了显著的发展。1)HTML5引入了Canvas、WebStorage等API,增强了Web应用的复杂性和互动性。2)CSS3增加了动画和过渡功能,使页面效果更加丰富。3)JavaScript通过Node.js和ES6的现代化语法,如箭头函数和类,提升了开发效率和代码可读性,这些变化推动了Web应用的性能优化和最佳实践的发展。

公司安全軟件與應用兼容性問題及排查方法許多企業為了保障內網安全,會安裝安全軟件。然而,安全軟件有時...
