XHR для загрузки видео - PullRequest
4 голосов
/ 14 мая 2011

Не вдаваясь в детали того, почему я использую XHR, кто-нибудь может сказать мне, как заставить ниже работать так? Моя цель - сначала загрузить видеоданные, а затем поместить их в источник тега видео.

http://jsfiddle.net/u2vhG/

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
window.onload = function() {
    var elem = document.getElementById("myVideo");
    var req = new XMLHttpRequest();
    req.onload = function () {
        var blob_uri = URL.createObjectURL(this.response);
        elem.appendChild(document.createElement("source"))
            .src = blob_uri;
    };
    req.responseType = "blob";
    req.open('GET', 'http://www.latentmotion.com/player/h264/clips/16154_2832659676_170_180.mp4', false);
    req.send(null);
};
</script>
</head>
<body>
<video id="myVideo" width="600" height="334" controls></video>
</body>
</html>

Ответы [ 2 ]

1 голос
/ 15 мая 2011

См. этот обходной путь для Google Chrome, пока не будет реализовано responseType = "blob".

- Я, отвечая на тот же вопрос.

Если вы прочитаете весь мой ответ и ссылку, вы увидите, что Google Chrome на самом деле еще не поддерживает responseType = "blob".Я дал вам гипотетическую реализацию и связал вас с обходным путем, используя responseType = "arraybuffer".

0 голосов
/ 08 марта 2012

У вас есть две проблемы здесь,

  1. req.responseType = "blob"; должно прийти после req.open(...)
  2. Вы делаете межсайтовый запрос, который может не работать по соображениям безопасности.

Вы также должны URL.revokeObjectURL, как только вы установите URL. Обратите внимание, что в Chrome они по-прежнему имеют webkitURL, а не URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...