Javascript视频blob和渐进式下载

尝试使用经典< video src =“http://myserver/video.mp4”>切换我的视频流式网络应用程序使用blob的URL来避免在页面上的简单Ctrl上完全下载.

似乎必须使用XMLHttpRequest来允许从远程视频文件创建blob.

问题是XMLHttpRequest下载整个文件,这不适用于渐进式下载使用.

以下代码是从远程文件加载blob的最简单示例.

var r = new XMLHttpRequest();
r.onload = function() // Triggered only when all video is downloaded
{
    video.prop("src",URL.createObjectURL(r.response));
};

r.open("GET","http://myserver/video.mp4");
r.responseType = "blob";
r.send();

由于应用程序用于视频流,因此该方法不可用(除非我们希望用户等待X分钟以下载整个文件,而根本不是流式传输).

有没有办法将blob与渐进式下载结合起来?

解决方法

仅使用src =“foo.mp4”方法时,渐进式下载应该是浏览器中的默认行为.但是,播放体验取决于文件的实际格式.

“普通”MP4文件不是为流媒体设计的.它们的结构使得开始播放所需的数据可以在文件的开头和结尾之间分开.因此,玩家可能需要缓冲整个事物以获得开始播放所需的数据.

您可以尝试使用MP4Box之类的工具将普通MP4转换为碎片MP4,并指定“-frag”选项.这将重新排列文件中的数据,以便所有初始化数据位于前端,文件的其余部分分解为块.

更复杂的选择是使用像MPEG-DASH这样的东西.通过利用MP4Box和dash.js,您可以设置一个完全成熟的自适应流媒体播放器.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)