ios中視頻的最后一楨問題解決
問題描述
在ios系統(tǒng)下的safari、wechat、以及其他瀏覽器,在播放部分m3u8的時候,最后一楨的畫面會被系統(tǒng)移出,也就是視覺效果在視頻播放結(jié)束的時候會黑屏,并不是全部的視頻都會這樣,目前發(fā)現(xiàn)最后片段時時長小于.5的最后的畫面會被系統(tǒng)移出,未找到相關(guān)的文檔描述,目前針對該場景做了個polyfill
方案
將視頻的最后一楨作為視頻的背景圖片,這樣在視頻播放結(jié)束畫面被移走時就會展示背景圖片,反之有視頻畫面的時候背景就會被覆蓋。
具體實現(xiàn)
1、獲取視頻的最后一楨圖片
a.技術(shù)能力:在前端中可以通過canvas對video進行繪圖截取video的當前畫面。
b.問題:但是無法做到截取video任一楨的功能,只能時視頻播放哪里截取到哪里,相當于對視頻進行截圖。
c.探索:監(jiān)聽video的ended事件,但是當ended發(fā)生時,畫面已經(jīng)被系統(tǒng)移出了。
d.解決:監(jiān)聽video的timeupdate事件,當currentTime距duration小于1s的時候,開始截取當前的視頻楨,這樣在ended之前的畫面就是視頻的最后一楨。
2、將獲取的視頻最后一楨圖片替換為video的背景圖片
視頻截取圖片
function video2Base64 (video: HTMLVideoElement) { let dataURL = '', canvas = document.createElement("canvas"); if (video.videoWidth !== 0) { canvas.width = video.videoWidth; canvas.height = video.videoHeight; (canvas.getContext("2d") as CanvasDrawImage).drawImage(video, 0, 0, canvas.width, canvas.height); //繪制canvas dataURL = canvas.toDataURL('image/jpeg'); //轉(zhuǎn)換為base64 // 將截取的視頻圖片設(shè)置為視頻的背景 video.setAttribute("style", `background-image: url(${dataURL}); background-size: contain; background-position: center;background-repeat: no-repeat;`); } }
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。
相關(guān)文章
有關(guān)div頁面拖動、縮放、關(guān)閉、遮罩效果代碼
有關(guān)div頁面拖動、縮放、關(guān)閉、遮罩效果代碼,比較不錯,適合學(xué)習(xí)用。2009-08-08js+CSS實現(xiàn)模擬華麗的select控件下拉菜單效果
這篇文章主要介紹了js+CSS模擬select控件下拉菜單效果,通過javascript鼠標事件結(jié)合css控制實現(xiàn)select下拉菜單效果,整體效果華麗美觀,需要的朋友可以參考下2015-09-09javascript數(shù)字數(shù)組去重復(fù)項的實現(xiàn)代碼
console.log 不支持ie,下面的代碼需要在火狐中測試,不然會有問題。2010-12-12JavaScript實現(xiàn)繼承的6種常用方式總結(jié)
JavaScript想實現(xiàn)繼承的目的:重復(fù)利用另外一個對象的屬性和方法。本文為大家總結(jié)了JavaScript實現(xiàn)繼承的6種常用方式,需要的可以參考一下2022-07-07JavaScript處理XML DOM、XPath和XSLT方法詳解
這篇文章介紹了JavaScript處理XML DOM、XPath和XSLT的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05