CreateObjectURL возвращает undefined в Chrome

Попытка изменить исходный видео файл с помощью createObjectDataURL. Он отлично работает с Firefox, но не работает в Chrome (версия 12.0.742.122 m). код не выдает никаких ошибок, но возвращает undefined для createObjectDataURL. Я пробовал все возможности, но всегда возвращает undefined.

<!DOCTYPE html>
<html>
<head>
<title>Check CreateObjectURL</title>
</head>
<script type="text/javascript" language="javascript">

window.URL = window.URL || window.webkitURL;

function ChangeProperty()
{
        var v = document.getElementById("myvideo");
        var file = document.getElementById("fileControl").files[0];
        v.setAttribute("src",window.URL.createObjectURL(file));
}
</script>
<body>
<div >
    <video id="myvideo" src="movie.ogg" controls ></video>
    <input type="file" id="fileControl" /> 
    <button id="btnprops" onClick="ChangeProperty()" >update</button>
</div>
</body>
</html>

Пожалуйста, помогите мне. Это уже заняло много времени. Спасибо в Advance.

Ответ 1

У меня была такая же проблема, когда я открывал страницу как локальный файл в Chrome. Мне пришлось использовать Apache и открывать его через localhost.

Ответ 2

Это кажется ошибкой в ​​Chromium, хотя статус ошибки для меня непонятен: http://code.google.com/p/chromium/issues/detail?id=91136

Перекрестный перенос моего комментария там:

Я могу подтвердить эту проблему в Windows Chrome 17.0.932.0 dev-m. Простой способ подтвердить [ошибка] - это страница: http://html5-demos.appspot.com/static/a.download.html. Он работает, когда используется онлайн. После сохранения на диске загрузка завершится неудачно.

Изменить: просто нашел этот похожий отчет об ошибке (API-интерфейс FileReader не работает для локального контента): http://code.google.com/p/chromium/issues/detail?id=60889 Это отмечено как won't fix для причина, которая появляется применительно к обсуждаемой здесь ошибке.

Ответ 3

Я думаю, вы должны использовать window.webkitURL.createObjectURL(), как указано в https://developer.mozilla.org/en/DOM/window.URL.createObjectURL

Примечание. Этот метод имеет префикс в Chrome и Webkit как window.webkitURL.createObjectURL().

Ответ 4

Если вы застряли в этом

  video.srcObject = mediaSource;

Используйте код выше. Установите srcObject для вашего потока.