HTML5 видео - Safari не проигрывает второе видео - PullRequest
0 голосов
/ 19 января 2012

Я пытаюсь автоматически воспроизвести 4 видео в последовательном порядке. Когда один заканчивается, начинается следующий, до последнего видео. То, что у меня есть, работает так, как задумано во всех браузерах, кроме Safari. В safari он загружает первое видео (00.mp4), успешно переключается на второе видео (01.mp4), и все, не более. Вот то, что я получил, я как бы выясняю, как мне это жаль, если мой код ужасен и неэффективен.

Это мой 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 Ответ

1 голос
/ 30 мая 2012

Точно такая же проблема. Я заметил, что если вы используете элементы управления для перехода в другое место в видео, Safari корректно загружает следующее видео в порядке

</p> <pre><code><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>

Я добавил строку setTimeout. Это возвращает его к началу через 100 миллисекунд, и этого было достаточно, чтобы мой Safari посчитал его достаточным для воспроизведения второго видео. 50 миллисекунд было слишком мало. Попробуйте добавить такую ​​строку сразу после вашего video.load

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

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

  video.onended = function(e) {
    end(e);
  } 
}
</code>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...