2012-01-16 2 views
1

У меня есть видео HTML5, изменяющееся при нажатии на разные ссылки (см. Ниже код). Он работает во всех браузерах, но Safari. Исходное видео можно воспроизводить во всех браузерах, но не для переключения видео в Safari. Если я изменяю, как так:HTML5 - Изменение источника видео, не работающего в Safari

<script> 
function loadAnotherVideo() { 
    var video = document.getElementsByTagName('video')[0]; 
    video.src="HTML5 MOVREV.m4v"; 
    video.load(); // need this for the new video to load 
} 
function loadAnotherVideo2() { 
    var video = document.getElementsByTagName('video')[0]; 
    video.src="HTML5 MOV.m4v"; 
    video.load(); // need this for the new video to load 
} 
</script> 

Он работает только в Safari, так как его mp4, но не переключает видео свободно в то время как в Safari, который означает это его неправильно в любом случае.

Возможно, это связано с функциями ниже, не видя mp4 в Safari.

КОД: (работает во всех браузерах, но Safari)

<div id="VIDEOONE"> <video controls="controls" width="852" height="479"> 
<source src="HTML5 MOV.m4v" type="video/mp4"> 
<source src="HTML5 MOV.theora.ogv" type="video/ogg"> 
video not supported 
</video> 
<script> 
function loadAnotherVideo() { 
    var video = document.getElementsByTagName('video')[0]; 
    var sources = video.getElementsByTagName('source'); 
    sources[0].src = "HTML5 MOVREV.m4v"; 
    sources[1].src = "HTML5 MOVREV.theora.ogv"; 
    video.load(); // need this for the new video to load 
} 
function loadAnotherVideo2() { 
    var video = document.getElementsByTagName('video')[0]; 
    var sources = video.getElementsByTagName('source'); 
    sources[0].src = "HTML5 MOV.m4v"; 
    sources[1].src = "HTML5 MOV.theora.ogv"; 
    video.load(); // need this for the new video to load 
} 
</script> 
<input type="button" value="video two" 
     onclick="loadAnotherVideo()"> 

<input type="button" value="video one" 
     onclick="loadAnotherVideo2()"></div> 

ответ

0

работает во всех браузерах? AFAIK IE9 не может переключать видео через функцию src(), если у вас есть узлы SOURCE в видеоузле.

Кроме того, m4v не будет воспроизводиться в Firefox и Opera - если вы хотите переключать видео, по моему опыту разумно потерять узлы SOURCE и вместо этого использовать canPlayType() с самого начала -> даже для начального видео. (помните, что Android 2.2 знает видео html5, но не реализует эту функцию -> вам придется реализовать его, если это устройство найдено через пользовательский агент в случае, если оно вам подходит. см. mediaelement.js для примера-кода)

Вы не должны использовать пробелы в именах файлов, так как они могут также вызвать ошибки. Вероятно, вы не сможете проверить свой плеер на всех распространенных браузерах, а операционные системы -> Chrome/FF/[...] - не то же самое в Linux/Windows/Mac

последнее, но не менее важное: почему вы используете m4v вместо mp4? M4V необходим только в том случае, если вы включаете информацию о главе в файл, которую игрок html5 не может прочитать в любом случае. M4V требуется только для совместимых с iTunes устройств вместе с информацией о главе.