2012-01-19 124 views
0

我想要做的是有4個視頻按順序自動播放。當一個結束時,下一個開始,直到最後一個視頻。到目前爲止,我在Safari瀏覽器以外的所有瀏覽器都能按預期工作。在safari中,它加載第一個視頻(00.mp4),成功切換到第二個視頻(01.mp4),就這樣了,不再有了。這就是我得到的結果,我對這些東西有所瞭解,因爲如果我的代碼非常糟糕,效率低下,我會很抱歉。HTML5視頻 - Safari不會播放過去的第二個視頻

這是我的javascript:

function load() { 
    var video = document.getElementsByTagName('video')[0]; 
     if (video.canPlayType("video/ogg")) { 
      video.src='00.ogg'; 
      video.addEventListener('ended', function() { 
      video.src='01.ogg'; 
       video.load(); 
       video.removeEventListener('ended', arguments.callee, false); 
       video.addEventListener('ended', function() { 
        video.removeEventListener('ended', arguments.callee, false); 
        video.src='02.ogg'; 
        video.load(); 
        video.addEventListener('ended', function() { 
         video.removeEventListener('ended', arguments.callee, false); 
         video.src='08.ogg'; 
         video.load(); 
        }, false); 
       }, false); 
      }, false); 
     } 
     else if (video.canPlayType("video/mp4")) { 
      video.src='00.mp4'; 
      video.addEventListener('ended', function() { 
       video.src='01.mp4'; 
       video.load(); 
       video.addEventListener('ended', function() { 
        video.src='02.mp4'; 
        video.load(); 
        video.addEventListener('ended', function() { 
         video.src='08.mp4'; 
         video.load(); 
        }, false); 
       }, false); 
      }, false); 
     } 
     else { 
      window.alert("Blah blah placeholder blah"); 
     } 
} 

,這是相關的HTML:

<body onLoad="load()"> 
<video id="vid" autoplay width="416" height="240" src=""></video> 

任何更正什麼,我認爲是可怕的編碼也可以理解,謝謝。

回答

1

相同的確切問題。我注意到,如果你使用的控件跳轉到另一個地方,在視頻中,Safari瀏覽器正確加載下一個視頻精細

<video autoplay=true width=100% height=100% controls="controls" id=theVideo onended="end(this)" style=position:absolute;top:0px;left:0px > 
<source src="Opening.m4v" type="video/mp4" /> 
Your browser does not support the video tag. 
</video> 

<script> 

function end(inVideoEnded) 
{ 
var video = document.getElementById("theVideo"); 
if (playstate == 0) { 
    video.src = "Choice1-H.264 for iPod video and iPhone 640x480.m4v"; 
    playstate=1; 
} else if (playstate == 1) { 
    video.src = "Choice1_A-H.264 for iPod video and iPhone 640x480.m4v"; 
    playstate=2; 
} else if (playstate == 2) { 
    video.src = "Choice1_B-H.264 for iPod video and iPhone 640x480.m4v"; 
    playstate=3; 
} else if (playstate == 3) { 
    video.src = "Choice1_C-H.264 for iPod video and iPhone 640x480.m4v"; 
    playstate=4; 
} 
video.load(); 
video.play(); 
video.onended = function(e) { 
    end(e); 
} 
} 

</script> 
</code> 

我加入了setTimeout的線。這會在100毫秒後跳回到開始位置,這足以讓我的Safari認爲足夠播放第二個視頻。 50毫秒太短。嘗試在你的視頻後添加一條這樣的線。

 video.load(); 
    video.play(); 

    setTimeout("document.getElementById('theVideo').currentTime = 0;",100); 

    video.onended = function(e) { 
    end(e); 
    } 
}