我是靠谱客的博主 受伤电话,最近开发中收集的这篇文章主要介绍video blob,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

<video id="blp_2P3Sdy9Z_1" class="bilibili-live-player-video-stream" tabindex="-1" style="z-index: 1;" src="blob:https://live.bilibili.com/40f09fae-79b1-4cb1-9aca-210f5e186e53"></video>

f94c774dc05a98fab0f958e30306a409218.jpg

分段缓冲播放,video的src为blob:http协议 / https

var video = document.querySelector('video');
var mediaSource = new MediaSource;
video.src = URL.createObjectURL(mediaSource);
mediaSource.addEventListener('sourceopen', sourceOpen)

function sourceOpen () {
  var mediaSource = this;
  var sourceBuffer = mediaSource.addSourceBuffer('video/mp4; codecs="avc1.42E01E, mp4a.40.2"');
  sourceBuffer.addEventListener('updateend', function () {
    mediaSource.endOfStream();
    video.play();
  });
  sourceBuffer.appendBuffer(buf); // buf is the arraybuffer to store the video data
};

https://stackoverflow.com/questions/14317179/display-a-video-from-a-blob-javascript/14360868#14360868

function display(vid){

    var video = document.getElementById("video");
    video.src = window.URL.createObjectURL(vid);

}

I would like to display a video from a Javascript Blob/File object in the HTML5 video tag.

This code only works for small videos :

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

I cannot use this for big videos (> 10MB). Is there a solution to display a big video from a blob object in HTML 5?

 

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;
}

 

首先创建变量名为 video 的 DOM 对象。之后,创建变量名为 mediaSource 的 MediaSource 对象。 通过函数 createObjecturl 来将 DOM::Video 对象的属性 src 和 mediaSource 进行“连接”。 接下来,通过注册事件 Event::sourceopen来触发当上述“连接”结束之后的回调处理。回调处理就是需要赋值 视频数据 的地方。 调用 MediaSource::addSourceBuffer 方法来构建一个存放视屏数据的 Buffer。 在往 Buffer 中存放数据结束之后会触发事件 Event::updateend 。 通过注册这个事件的回调,可以知晓数据已经加载完毕,然后调用 Video::play 函数通知浏览器播放视频。 至此,整个 Blob 运行机制讲解完毕。详细的技术细节需要花一段时间来查看,暂时停止在这里。我们先知道这个是什么东西。<( ̄3 ̄)>

通过查看 B 站的前端代码,发现其 HTML5 播放器实现原理和这个差不多,主要使用 new MediaSource 和 createObjectURL 这2个函数。(当然实现不会这么简单,比如异常处理,用户交互等都是需要巨量的代码来覆盖。)

尾声

综上,这个只是 HTML5 提供的新特性,但是截止目前还是处于试验状态。可是,现在已经有许多的厂商开始使用,比如 B 站,比如 YouTube。 有大厂的支持,心里稍稍安心啦。

为了及时淘汰老旧的浏览器,让她们“安详”的推出历史舞台。需要你我所有人的努力。

转载于:https://my.oschina.net/yizhichao/blog/2244929

最后

以上就是受伤电话为你收集整理的video blob的全部内容,希望文章能够帮你解决video blob所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(85)

评论列表共有 0 条评论

立即
投稿
返回
顶部