【轉】Android 4.4中播放HTML5視頻


近期Nexus 4手機自動升級到Android4.4,本來挺好的一件事兒,結果發現自己的應用中出現一個Bug,應用中使用了Webview播放HTML5視頻,代碼如下: 
<video width="480" height="280" poster="test.jpg" src="test.mp4" preload="auto"></video>

在4.3版本之前播放正常,新版本中播放時只能聽到聲音,而畫面停留在最初的畫面,也就是poster屬性中的圖片,但不會顯示視頻動畫,只有點擊暫停按鈕,然后再次點擊播放按鈕時,視頻動畫才會顯示正常。

網上查閱了很多國外論壇,發現兩個類似的反饋,但解決方法不同,其中的一個辦法是使用CSS3的-webkit-transform: translate3d(0, 0, 0)屬性強制打開3D渲染,可以使視頻播放正常,但這種方法會導致初始的poster圖片只顯示一下,然后一閃而過停留在視頻播放界面,點擊播放時,視頻播放倒是一切正常。

另外在官方論壇找到一個類似的反饋報告: https://code.google.com/p/android/issues/detail?id=62145#makechanges 
其中提到此問題可能是由於preload屬性引起,只有設定preload="none"才可以顯示視頻,官方已經確認了這個bug,並表示已經解決,下個版本會更新。但經我測試,單獨設置preload="none"並不會完全解決此問題,視頻仍舊只有聲音,畫面停留在初始界面。

經我多次試驗,將上述兩種方法結合起來,最終解決了這個問題,代碼如下: 
<video width="480" height="280" poster="test.jpg" src="test.mp4" preload="none" ></video>

默認的poster顯示正常,點擊播放,視頻聲音畫面顯示也都正常。

這個Bug產生的原因我認為是在視頻開始播放時沒有啟動3D加速,導致原始的poster圖片未被刷新到視頻畫面。設置preload="none"禁止了視頻的自動載入,確保了poster畫面被正確載入;同時在點擊播放視頻時,-webkit-transform: translate3d(0, 0, 0)確保打開了3D加速,自動刷新了poster的原始畫面。

當然以上原因都為猜測,解決辦法也是臨時的,因為這不符合HTML5標簽的原始定義,未來還要看官方的下一個Android版本是否解決掉這個Bug。

 

比較穩定的版本開源video

https://github.com/videojs/video.js/releases

from:http://www.cnblogs.com/nidongde/p/6189516.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM