車大棒淺談移動(dòng)端視頻播放閃屏

感謝空調(diào)之父

前言

因?yàn)楣ぷ鞯脑颍镁枚紱]有更新博客翩蘸。想寫一些東西所意,可是又不知道寫什么。碼字寫博客這個(gè)東西催首,果然像人體的肌肉一樣扶踊,作為8塊腹肌的我現(xiàn)在表示腹肌合并成一塊。
但是郎任,這并不能代表什么秧耗!作為一個(gè)明明可以靠臉吃飯的人,卻靠才華去吃飯的人舶治,我表示我依舊很自豪分井!耶耶胶台!切克鬧!

你有freestyle嗎杂抽?

街邊大媽:“哎!小伙子韩脏!這墨鏡你到底買不買缩麸!不買趕緊還給我!”
車大棒:"買不起赡矢!買不起杭朱!還您墨鏡......"
言歸正傳,今天就分享一下自己在處理移動(dòng)端的遇到一些坑點(diǎn)吹散。

移動(dòng)端Click 300毫秒延遲

一日接到一個(gè)brief弧械,大致就是一個(gè)loading引導(dǎo)頁面,點(diǎn)擊引導(dǎo)頁上面按鈕之后播放視頻空民。視頻播放完之后出現(xiàn)結(jié)束頁刃唐,結(jié)束頁上面掛著2個(gè)按鈕一個(gè)跳向下載鏈接,一個(gè)指向分享界轩。

項(xiàng)目brief

很好画饥!so,easy浊猾!接到這個(gè)brief我就馬不停蹄的開始干活了抖甘,但是很快出現(xiàn)了一個(gè)問題。在點(diǎn)擊loading頁面播放按鈕的之后葫慎,在loading頁切換到視頻播放頁面會(huì)有一個(gè)短暫的延遲閃屏問題衔彻。這就很尷尬了,剛剛喊的so偷办,easy艰额!這么塊就卡住了,打臉未免太快了爽篷。(雖然經(jīng)常被打臉ing)

我表示不服悴晰,趕緊上網(wǎng)搜索了一下,移動(dòng)端click事件逐工,結(jié)果發(fā)現(xiàn)移動(dòng)端click事件會(huì)有300ms延遲铡溪!

這個(gè)操作還是頭次聽說

傳說中的雙擊縮放:
這要追溯至 2007 年初。蘋果公司在發(fā)布首款 iPhone 前夕泪喊,遇到一個(gè)問題 —— 當(dāng)時(shí)的網(wǎng)站都是為大屏幕設(shè)備所設(shè)計(jì)的棕硫。于是蘋果的工程師們做了一些約定,應(yīng)對(duì) iPhone 這種小屏幕瀏覽桌面端站點(diǎn)的問題袒啼。
這當(dāng)中最出名的哈扮,當(dāng)屬雙擊縮放(double tap to zoom)纬纪。這也是會(huì)有上述 300 毫秒延遲的主要原因。
雙擊縮放滑肉,顧名思義包各,即用手指在屏幕上快速點(diǎn)擊兩次,iOS 自帶的 Safari 瀏覽器會(huì)將網(wǎng)頁縮放至原始比例靶庙。由于用戶可以進(jìn)行雙擊縮放或者雙擊滾動(dòng)的操作问畅,當(dāng)用戶一次點(diǎn)擊屏幕之后,瀏覽器并不能立刻判斷用戶是確實(shí)要打開這個(gè)鏈接六荒,還是想要進(jìn)行雙擊操作护姆。因此,iOS Safari 就等待 300 毫秒掏击,以判斷用戶是否再次點(diǎn)擊了屏幕卵皂。
鑒于 iPhone 的成功,其他移動(dòng)瀏覽器都復(fù)制了 iPhone Safari 瀏覽器的多數(shù)約定砚亭,包括雙擊縮放灯变。幾乎現(xiàn)在所有的移動(dòng)端瀏覽器都有這個(gè)功能。
------來自與Apple公司的一次six捅膘、six柒凉、six的操作!

解決300ms延遲方案

之后就嘗試就上網(wǎng)搜索篓跛,解決300ms延遲方案的解決方案膝捞。
1、禁用縮放
2愧沟、設(shè)置 viewport 的 device-width
3蔬咬、使用指針事件
4、使用 touchend 事件
上述方法都有采用過沐寺,但是切換成播放視頻的時(shí)候依舊會(huì)出現(xiàn)閃屏林艘。

不按照套路出牌呀!

難道是300ms延遲的問題沒有解決混坞?抓了抓頭狐援,然后思索了一會(huì)。之后用定時(shí)器作了一個(gè)監(jiān)聽究孕,然后用console.log去輸出檢查結(jié)果啥酱,結(jié)果300ms的問題的確解決了,但是閃屏的問題卻是還是存在的厨诸。

loading頁面淡入處理

絕望的我坐在小板凳靜靜的發(fā)呆镶殷,難道這個(gè)瀏覽器在播放視頻的時(shí)候本身會(huì)有一個(gè)延遲效果。因此會(huì)導(dǎo)致loading頁面與視頻銜接的時(shí)候會(huì)出現(xiàn)一個(gè)間斷的延遲效果微酬,因此就會(huì)出閃屏绘趋?

有了這個(gè)想法之后颤陶,突然靈光一想既然視頻本身會(huì)有一個(gè)延遲。那么我把loading也做一個(gè)延遲處理的效果陷遮。這樣兩邊都延遲一會(huì)滓走,這樣就不會(huì)出現(xiàn)了閃屏現(xiàn)象了。

于是在CSS代碼里面加入一段css代碼

@-webkit-keyframes fadeout500 {
    0% {
        opacity: 1;
    }
    100% {
        opacity: 0;
    }
}

點(diǎn)擊播放按鈕之后帽馋,就給loading頁添加一個(gè)css類名fadeout500闲坎。在Google瀏覽器模擬手機(jī)上面運(yùn)行,很好沒有閃屏問題茬斧。

視頻監(jiān)聽處理

PC上面模擬器沒有問題,高興的我很快拿起了我的安卓手機(jī)開始測(cè)試梗逮。很好也沒有出現(xiàn)閃屏現(xiàn)象项秉,路面暢通,可以隨時(shí)開車慷彤。

開車開到一半的時(shí)候娄蔼,然后看見后臺(tái)哥哥的iPhone 6 Plus正靜靜躺在桌子面强岸。于是停下來坟瓢,打算借后臺(tái)哥哥的iPhone繼續(xù)繼續(xù)開車。當(dāng)我按下播放視頻之后喉磁,很快屏幕一閃跋选。

妖獸涕癣!居然翻車了!這個(gè)閃屏到底是什么鬼呀前标?

'你在視頻播放之后再讓loading頁面消失就不會(huì)出現(xiàn)閃屏了坠韩!' 路過的老大看見坐在板凳上抽風(fēng)的我,淡淡的補(bǔ)充了一句炼列。

‘視頻播放在再消失’順著老大的話語我嘴角跟著念叨一下只搁,然后猛然間所有的思路全部涌現(xiàn)過來了。

閃屏的主因

所有如果我改變思路俭尖,點(diǎn)擊播放之后先不忙著讓loading頁面消失氢惋,而是控制播放視頻。同時(shí)對(duì)于視頻做一個(gè)監(jiān)聽事件稽犁。
這個(gè)時(shí)候就得用到html5 相關(guān)DOM的事件和屬性

音頻/視頻屬性:currentTime( 藍(lán)色字體指向MDN文檔說明)
currentTime 設(shè)置或返回音頻/視頻中的當(dāng)前播放位置(以秒計(jì))

音頻/視頻事件: timeupdate
timeupdate 當(dāng)目前的播放位置已更改時(shí)觸發(fā)焰望。

var  loadingController = function () {
    if (video.currentTime > 0.01) {
        loadingEl.hide(); //loading頁消失
    }
}
video.addEventlistener(("timeupdate", loadingController;)

完美的解決,這樣也不用還在首頁加個(gè)什么淡入淡出的效果了已亥,只需要確定視頻播在控制loading消失就ok柿估。
對(duì)了,為了代碼的嚴(yán)謹(jǐn)性陷猫,需要在loading消失的事件前面秫舌,再加一個(gè)事件移出事件監(jiān)聽的妖。
video.removeEventlistener(("timeupdate", loadingController;)

小結(jié):

以上就是我對(duì)于移動(dòng)端視頻播放閃屏的處理過程一點(diǎn)胡扯八扯
原創(chuàng)文章,文筆有限足陨,才疏學(xué)淺嫂粟,文中若有不正之處,歡迎各位啪啪的打臉賜教墨缘。


我是車大棒星虹,我的目標(biāo)是星辰與大海!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末镊讼,一起剝皮案震驚了整個(gè)濱河市宽涌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蝶棋,老刑警劉巖卸亮,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異玩裙,居然都是意外死亡兼贸,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門吃溅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來溶诞,“玉大人,你說我怎么就攤上這事决侈÷莨福” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵赖歌,是天一觀的道長甩苛。 經(jīng)常有香客問我,道長俏站,這世上最難降的妖魔是什么讯蒲? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮肄扎,結(jié)果婚禮上墨林,老公的妹妹穿的比我還像新娘。我一直安慰自己犯祠,他們只是感情好旭等,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著衡载,像睡著了一般搔耕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天弃榨,我揣著相機(jī)與錄音菩收,去河邊找鬼。 笑死鲸睛,一個(gè)胖子當(dāng)著我的面吹牛娜饵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播官辈,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼箱舞,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了拳亿?” 一聲冷哼從身側(cè)響起晴股,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肺魁,沒想到半個(gè)月后电湘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡万搔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了官帘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞬雹。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖刽虹,靈堂內(nèi)的尸體忽然破棺而出酗捌,到底是詐尸還是另有隱情,我是刑警寧澤涌哲,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布胖缤,位于F島的核電站,受9級(jí)特大地震影響阀圾,放射性物質(zhì)發(fā)生泄漏哪廓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一初烘、第九天 我趴在偏房一處隱蔽的房頂上張望涡真。 院中可真熱鬧,春花似錦肾筐、人聲如沸哆料。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽东亦。三九已至,卻和暖如春唬渗,著一層夾襖步出監(jiān)牢的瞬間典阵,已是汗流浹背奋渔。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留萄喳,地道東北人卒稳。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像他巨,于是被迫代替她去往敵國和親充坑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容