[英]No Video on HLS Stream Android 4.4.2 Samsung Galaxy S5
HLS流不會播放視頻,但是會播放音頻。
設備信息:
三星Galaxy S5
Android 4.4.2 / Build KOT49H
鉻36.0.1985.131
在其他Android版本和設備上播放的HLS流:
使用三星S5上的瀏覽器應用程序“ Internet”,它將播放HLS流的視頻,這使我認為Chrome可能是一個問題,但是,當在具有完全相同的Chrome版本的Nexus 5設備上進行測試時(Android 4.4.4除外),並且視頻可以正常播放。
Android Issue Queue的問題為63810:HLS上沒有視頻在Android KitKat上進行實時流傳輸 ,我已盡力而為 。
我該怎么做才能獲得有關問題性質的更多信息?
這是Android 4.4.2 Samsung S5的合法錯誤嗎?
我注意到此行為在4.4.2的其他問題中,其問題似乎因設備和制造商而異。 通過實驗,我注意到了以下幾點:
我們的產品主要適用於播放列表-當ended
事件的一個視頻觸發我們改變了視頻src
和調用.load()
和.play()
去下一個。 在某些設備上,如果第一個src
是HLS,則視頻可以正常播放,但是如果第一個src
是mp4或webm,則切換到HLS會使您丟失視頻。 在其他設備上,這是相反的行為-在HLS中啟動失敗,但切換成功。 在某些設備上,如果你進入全屏開始播放之前,對別人,如果你進入全屏開始播放后,它不僅具有視頻HLS具有視頻。 在某些設備上,開始播放后,全屏按鈕消失 。
這不是理想的,而且老實說很hacky,但是我想出了一個丑陋的解決方案:
// 1.
video.addEventListener('click', requestFullScreen);
// 2.
function requestFullScreen() {
video.removeEventListener('click', requestFullScreen);
video.webkitRequestFullScreen();
}
// 3.
function reloadVideo() {
var ext = video.src.substr( video.src.lastIndexOf('.') ).toLowerCase();
if( ext == '.m3u8' ) {
video.load();
video.play();
}
}
// 4.
video.addEventListener('webkitbeginfullscreen', reloadVideo, false);
video.addEventListener('webkitendfullscreen', reloadVideo, false);
// 5.
video.addEventListener('webkitfullscreenchange', reloadVideo, false);
我還必須實現許多其他技巧。 例如,當到達視頻結尾時,Galaxy S4上的常規Internet瀏覽器並不總是引發ended
事件。 因此,我每隔1秒進行一次setInterval
檢查。 如果視頻在過去1秒鍾內移動的時間少於0.5秒鍾, 並且從未暫停過(我在“ resume
和“ pause
事件中設置了一個標志),則假定您已經結束了。
我已經成功使用preload="none"
。 切換到auto
只能播放音頻,使用none
將播放視頻和音頻正常。 已在Samsung S3 Android 4.4.2上進行了測試。
編輯: autoplay
也會導致該問題。 刪除它似乎很有必要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.