当我尝试检索和播放存储在indexedDB中的视频文件(blob)时,我收到该错误消息。我基本上是打开数据库事务,获取文件,然后将源对象分配给HTML video元素
基本上,我设法将视频存储在indexedDB中,我现在要做的就是在浏览器中检索并播放视频文件。我收到了该错误消息。我进行了一些阅读,发现可能是由于“ createObjectURL”的弃用,但是我不确定如何将新方法与我的代码配合使用。
<script type="text/javascript">
(function () {
if (!('indexedDB' in window)) {
console.log('This browser doesn\'t support IndexedDB');
return;
}
// IndexedDB
window.indexedDB = window.indexedDB || window.webkitIndexedDB ||
window.mozIndexedDB || window.OIndexedDB ||
window.msIndexedDB,
IDBTransaction = window.IDBTransaction ||
window.webkitIDBTransaction ||
window.OIDBTransaction || window.msIDBTransaction,
dbVersion = 1.0;
var indexedDB = window.indexedDB;
// Create/open database
var request = indexedDB.open("Syafunda_Videos");
request.onerror = function (event) {
// Failed to Open the indexedDB database
};
request.onsuccess = function (event) {
db = request.result;
// Open a transaction to the database
var transaction = db.transaction(["Videos"], "readwrite");
//Retrieve the video file
transaction.objectStore("Videos").get("1").onsuccess = function (event) {
var videoFile = event.target.result;
var URL = window.URL || window.webkitURL;
var videoURL = URL.createObjectURL(videoFile) ;
// Set video src to ObjectURL
var videoElement = document.getElementById("video");
videoElement.setAttribute("src", videoURL);
var mimeDisplayElement = document.getElementById("vidMimeDisplay");
mimeDisplayElement.innerHTML = videoFile.type;
};
}
})();
</script>
答案 0 :(得分:0)
问题很可能与videoFile
是什么有关。
URL.createObjectURL
需要一个Blob对象才能为您生成一个URL,但很可能videoFile
是一个常规JavaScript对象,其中涉及的视频是该对象的属性。
可能您有类似的东西
videoFile = {
[primaryKey]: "1",
yourVideo: Blob(...)
};
您的文件如何存储?您可能需要进一步将视频文件从event.target.result
对象中拉出。