2012-01-19 21 views
0

私がしようとしているのは、4つのビデオを自動的に連続して再生することです。一方が終了すると、次のビデオが最後のビデオまで続きます。私がこれまでに行ったことは、Safariを除くすべてのブラウザで意図されているように動作しています。サファリでは、最初の動画(00.mp4)を読み込み、2番目の動画(01.mp4)に切り替えることができます。それ以上はありません。ここに私が持っているものがあります。私のコードがひどく非効率的であれば、とても残念ですので、私はこのようなことを考え出しています。HTML5ビデオ - Safariは過去の2番目のビデオを再生しません

これは私の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が正しく、私はsetTimeoutを行を追加

<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> 

罰金次のビデオをロードすることに気づきました。これは、100ミリ秒後に起動するように戻ってきます。これは、Safariが2番目のビデオを再生するのに十分な時間だと思います。 50ミリ秒は短すぎました。 video.loadの直後にそのような行を追加してみてください。

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

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

    video.onended = function(e) { 
    end(e); 
    } 
} 
関連する問題