gpt4 book ai didi

javascript - 显示来自 Blob Javascript 的视频

转载 作者:IT王子 更新时间:2023-10-29 03:23:05 25 4
gpt4 key购买 nike

我想在 HTML5 视频标签中显示来自 Javascript Blob/File 对象的视频。

此代码仅适用于小视频:

var reader = new FileReader();
reader.onload = function(e) {
document.getElementById("video").src=reader.result;
}
reader.readAsDataURL(vid);

我不能将它用于大视频 (> 10MB)。有没有一种解决方案可以在 HTML 5 中显示来自 blob 对象的大视频?

最佳答案

我找到了。太简单了,我什至没看到...


/**
* @param {Blob} videoFile
* @param {HTMLVideoElement} videoEl
* @returns {void}
*/
function display( videoFile, videoEl ) {

// Preconditions:
if( !( videoFile instanceof Blob ) ) throw new Error( '`videoFile` must be a Blob or File object.' ); // The `File` prototype extends the `Blob` prototype, so `instanceof Blob` works for both.
if( !( videoEl instanceof HTMLVideoElement ) ) throw new Error( '`videoEl` must be a <video> element.' );

//

const newObjectUrl = URL.createObjectURL( videoFile );

// URLs created by `URL.createObjectURL` always use the `blob:` URI scheme: https://w3c.github.io/FileAPI/#dfn-createObjectURL
const oldObjectUrl = videoEl.currentSrc;
if( oldObjectUrl && oldObjectUrl.startsWith('blob:') ) {
// It is very important to revoke the previous ObjectURL to prevent memory leaks. Un-set the `src` first.
// See https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL

videoEl.src = ''; // <-- Un-set the src property *before* revoking the object URL.
URL.revokeObjectURL( oldObjectUrl );
}

// Then set the new URL:
videoEl.src = newObjectUrl;

// And load it:
videoEl.load(); // https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/load

}

关于javascript - 显示来自 Blob Javascript 的视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14317179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com