ios中視頻的最后一楨問(wèn)題解決
問(wèn)題描述
在ios系統(tǒng)下的safari、wechat、以及其他瀏覽器,在播放部分m3u8的時(shí)候,最后一楨的畫面會(huì)被系統(tǒng)移出,也就是視覺(jué)效果在視頻播放結(jié)束的時(shí)候會(huì)黑屏,并不是全部的視頻都會(huì)這樣,目前發(fā)現(xiàn)最后片段時(shí)時(shí)長(zhǎng)小于.5的最后的畫面會(huì)被系統(tǒng)移出,未找到相關(guān)的文檔描述,目前針對(duì)該場(chǎng)景做了個(gè)polyfill

方案
將視頻的最后一楨作為視頻的背景圖片,這樣在視頻播放結(jié)束畫面被移走時(shí)就會(huì)展示背景圖片,反之有視頻畫面的時(shí)候背景就會(huì)被覆蓋。
具體實(shí)現(xiàn)
1、獲取視頻的最后一楨圖片
a.技術(shù)能力:在前端中可以通過(guò)canvas對(duì)video進(jìn)行繪圖截取video的當(dāng)前畫面。
b.問(wèn)題:但是無(wú)法做到截取video任一楨的功能,只能時(shí)視頻播放哪里截取到哪里,相當(dāng)于對(duì)視頻進(jìn)行截圖。
c.探索:監(jiān)聽(tīng)video的ended事件,但是當(dāng)ended發(fā)生時(shí),畫面已經(jīng)被系統(tǒng)移出了。
d.解決:監(jiān)聽(tīng)video的timeupdate事件,當(dāng)currentTime距duration小于1s的時(shí)候,開(kāi)始截取當(dāng)前的視頻楨,這樣在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é)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
JavaScrip如何安全使用Payment Request API詳解
這篇文章主要為大家介紹了JavaScrip如何安全使用Payment Request API詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
js網(wǎng)頁(yè)中隨意拖動(dòng)的小方塊實(shí)現(xiàn)代碼
用CSS和JS制作的在網(wǎng)頁(yè)中可以隨意拖動(dòng)的小方塊。2008-08-08
JavaScript+Canvas實(shí)現(xiàn)繪制音頻可視化波形圖
這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript和Canvas實(shí)現(xiàn)繪制音頻可視化波形圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02
js預(yù)載入和JavaScript Image()對(duì)象使用介紹
為了解決在canvas使用drawImage()時(shí),遇到img對(duì)象來(lái)不及加載的問(wèn)題; 我最終在html文檔加載中,使用了下面"數(shù)組加載圖像的辦法”解決,如果有其他方法,請(qǐng)給予指點(diǎn)!2011-08-08
JavaScript中windows.open()、windows.close()方法詳解
這篇文章主要介紹了JavaScript中windows.open()、windows.close()方法詳解 的相關(guān)資料,需要的朋友可以參考下2016-07-07
微信瀏覽器左上角返回按鈕監(jiān)聽(tīng)的實(shí)現(xiàn)
這篇文章主要介紹了微信瀏覽器左上角返回按鈕監(jiān)聽(tīng)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03

