javascript - 显示来自 Blob Javascript 的视频

标签 javascript html video blob

我想在 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/

相关文章:

javascript - 打开没有选项卡部分的新弹出式 chrome 窗口

javascript - WebChat 如何为发送者/接收者设置 css 颜色

用于分割视频的python库

video - 用于托管、管理和流式传输视频的软件

javascript - php中如何制作登录后欢迎信息的转场效果?

laravel - 无法在 FFmpeg laravel 中获取持续时间

javascript - 如何使用 js(或 moment.js)检查日期是否超过当前日期?

javascript - 如何禁用 CSS 过渡、更新样式,然后使用 JavaScript 快速恢复过渡

javascript - 使用变量作为属性但带有空格?

html - 导航栏无法正常工作