2013-06-19 53 views
1

我很努力在Android 4.2上使用xhr2和blob responseType與Chrome獲取HTML5視頻。該代碼完全適用於Chrome和Firefox桌面以及Firefox Android 4.2(使用FF桌面,我使用的是webm視頻而不是mp4)。在Chrome中獲取BLOB Android

// 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)。

非常感謝您的幫助!

回答

0

http://caniuse.com/bloburls,爲Android 4.0-4.3你需要使用window.webkitURL.createObjectUrl()代替window.URL.createObjectUrl() 。

這會讓你生成一個blob url,儘管我實際上並沒有能夠獲得一個視頻元素來播放這樣一個url。