外面看到的電視廣告機,影片是如何不停播放又不會因為發生錯誤中止播放?這是 Hoyo 的見解以及解決方案
- VideoJS settimeout when the video end
- Better way to check for Video.js object on instantiation?
- error
- getAllPlayers
在此需要使用 2 個機制,一個是 Video.js 的 error 事件,另一個是取得目前有多少個影片播放
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
// 每 2 秒檢查一下 setInterval(function(){ // 畫面上沒有影片以及需要播放影片才檢查 if ( videojs.getAllPlayers().length ===0 && video_ready ===1 ) { // 將影片區域播放 HTML 重置 $('#video_display').html(mp4_video[0].outerHTML); // 將影片網址填入 mp4.php 是因為使用串流播放 $('#video_mp4').find('source').attr('src', 'http://' + server + '/mp4.php'); player = videojs('video_mp4', { "controls": false, "autoplay": true, "loop": true, "preload": 'auto' }); // 影片準備完成播放以及設定 player.ready(function () { setTimeout(function () { player.autoplay('any'); player.muted(false); player.volume(1); }, 2000); }); // 影片發生錯誤時將 videojs 播放刪除 player.on('error', function() { player.dispose(); }); } }, 2000); |
- 使用 .dispose() 會將 <video></video> 刪除,因此需要使用 HTML 重置恢復
- 在此是因為使用串流播放有可能一開始可以播放,途中發生網路問題導致不能播放,才需要此方案解決
--
1,092 total views, 1 views today