Android 4.2 の Chrome で xhr2 と blob responseType を使用して HTML5 ビデオを取得するのに苦労しています。このコードは、Chrome と Firefox デスクトップ、および Firefox Android 4.2 で完全に動作します (FF デスクトップでは、mp4 の代わりに webm ビデオを使用します)。
// Taking care of prefix
window.URL = window.URL || window.webkitURL;
// This function download the video
var loadVideo = function() {
var xhr = new XMLHttpRequest();
xhr.addEventListener('load', addVideoFile, false);
xhr.open('GET', "videos/myvideo.mp4" , true);
xhr.responseType = 'blob';
xhr.send();
};
// this function sets the video source
var addVideoFile = function() {
if(4 == this.readyState && 200 == this.status) {
var video = document.getElementById('vid'),
blob = this.response;
video.src = window.URL.createObjectURL(blob);
console.log('video ready');
}
};
loadVideo();
これが Android の Chrome で機能しない理由を誰か説明してもらえますか? リモートデバッグを使用するために電話を接続すると、コンソールに「ビデオの準備ができました」と表示され、ビデオはダウンロードされたが再生できないことを示します。ビデオは単なる黒い画面です。
また、このコードは、ビデオの代わりに画像を取得するために使用すると機能します。特定のサイズを超える Blob をダウンロードできないという、私が認識していない制限はありますか? (私のビデオは 1.5 MB です)。
ご協力ありがとうございました!