AD

2017年9月7日星期四

H5直播避坑指南

| 導語 企鵝電競項目,直播和視頻播放是其中的核心。麵對著產品同學不斷的詢問:為什麼h5的體驗這麼差?為什麼不能和app的播放體驗保持一致?我們對著h5不明確的文檔和不同瀏覽器的怪異表現欲哭無淚。 經過一係列的調研爬坑,斬荊披棘,我們一步步提升了體驗,做到了和app基本一致的體驗。在摸索優化背後,我們也想把這些問題和解決方法總結下來,讓其他同學做到直播的時候可以自豪的說,這就是我們的h5直播體驗

1. 自動播放問題

  • 通過autoplay屬性
    視頻的自動播放需要在video標簽上添加autoplay屬性, 如:

     <video autoplay><video/>

    但是在很多瀏覽器裏,如iOS下並不支持這個屬性,在iOS下必須給webview設置

    self.wView.allowsInlineMediaPlayback = YES;self.wView.mediaPlaybackRequiresUserAction = NO;

    才能讓這個屬性生效從而讓用戶一進入頁麵就開始視頻的自動播放

  • 通過直接調用video.play()方法
    在一些情況下我們想加入一些判斷邏輯,如判斷用戶網絡環境,在wifi下自動播放,在4g環境下給出提示,這中情況下就適合直接選中video並調用video.play來播放視頻

但是這種情況下也需要webview的支持,如在手Q下可以做到直接調用,在微信下因為不允許視頻直接播放,則必須通過用戶的真實操作來觸發調用video.play(),這就是各種微信的h5活動頁麵需要引導用戶進行一下點擊操作才開始的原因。

同時發現真實點擊必須使用觸發 touchendclickdoubleclick 或 keydown 事件等標準的事件才能觸發,使用Zepto封裝過的tap事件並不能觸發播放器的播放

2. 頁麵內聯播放問題

在iOS Safari和一些安卓的一些瀏覽器下播放視頻的時候,不能在h5頁麵中播放視頻,係統會自動接管視頻

如果需要在h5頁麵內播放視頻,需要在視頻標簽上加上 webkit-playsinline,在iOS10以後,需要加上playsinline,建議同時加上這兩個屬性,同時需要app支持這種模式,手Q和微信都支持這種模式

   //在html    

相關文章
"在一起"後絕不是隻能進不能退2017年07月27日
【教程】如何正確使用和維護電池?手機、相機、筆記本通用2017年07月27日
孫正義最新預言:巨變即將到來,感覺睡覺都是浪費時間2017年07月27日
【CHRC分享活動】20170802-北京-管理培訓生招募與培養論壇2017年07月27日
沈從文:李白的胡子應該是翹翹的!2017年07月27日
國際奧賽再現黑馬,不過我更關心韓國數學課和中國到底有何不同?2017年07月27日
蒙牛、旺旺、可口可樂集團要做同一款產品!到底誰能贏?2017年07月27日
"我愛生活,我愛加班"2017年07月27日
好久好久沒看過這麼好的懸疑片了2017年07月27日
重回侏羅紀,你能跑贏霸王龍嗎?2017年07月27日

没有评论:

发表评论