首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示来自Blob Javascript的视频

显示来自Blob Javascript的视频
EN

Stack Overflow用户
提问于 2013-01-14 18:58:32
回答 2查看 76.6K关注 0票数 42

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

此代码仅适用于小视频:

代码语言:javascript
复制
var reader = new FileReader();
reader.onload = function(e) {
    document.getElementById("video").src=reader.result;
 }
reader.readAsDataURL(vid);

我不能在大视频(> 10MB)中使用它。有没有办法在HTML5中显示来自blob对象的大视频?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-16 22:40:15

我找到了。它是如此的简单,以至于我甚至没有看到它…

代码语言:javascript
复制
/**
 * @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
    
}
票数 52
EN

Stack Overflow用户

发布于 2018-06-29 14:19:02

在某些情况下,应该在createObjectURL()方法中提供blobObject.data。看看这个简单的技巧:

代码语言:javascript
复制
function playVideo(videoStream){ // as blob 

 var video = document.querySelector('video');

 var videoUrl=window.URL.createObjectURL(videoStream.data);// blob.data gives actual data

 video.src = videoUrl;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14317179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档