2012-01-19 107 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); 
    } 
}