我创建了一个带blob的对象url
let src = URL.createObjectURL(blob)
并将其用作我的视频src
属性,但会导致此错误:
GET blob:http://localhost:4200/ab3cc5aa-19cc-41f1-a4b7-55e1fa3ce85c 416 (Requested Range Not Satisfiable)
有关如何解决这个问题的想法吗?
虽然我认为我的问题很普遍,但我使用的是角度2,所以我的代码看起来很像:
let src = this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(blob));
和模板
<video *ngFor="let videoUrl of _videos" [src]="videoUrl"></video>
另外,我使用angular-cli作为我的服务器,因为这看起来像服务器错误(?),所以知道它可能会有用。
答案 0 :(得分:2)
此错误表示浏览器试图获取一系列不存在的媒体 我可以想到三种可以从媒体元素触发它的方法:
使用#t=
时间范围选项,超出范围值:但在这种情况下浏览器似乎只是忽略它...
<video src="https://dl.dropboxusercontent.com/s/bch2j17v6ny4ako/movie720p.mp4#t=90000,100000" autoplay controls></video>
&#13;
删除当前正在读取的文件(或在它被完全加载之前撤消blob的blobURI):触发404而不是416
v.onloadedmetadata = e => {
URL.revokeObjectURL(v.src);
v.currentTime = 300;
};
fetch('https://dl.dropboxusercontent.com/s/bch2j17v6ny4ako/movie720p.mp4').then(r=>r.blob()).then(b=>{
v.src = URL.createObjectURL(b);
})
&#13;
<video id="v" autoplay></video>
&#13;
错误的元数据表明媒体的持续时间大于实际情况:我还没有对其进行测试
将空Blob作为媒体来源传递:可能
v.src = URL.createObjectURL(new Blob([], {type:'video/mp4'}));
&#13;
<video id="v" autoplay controls></video>
&#13;
[注意] 由于我们正在寻找网络错误,请在您的开发工具控制台打开时尝试上述代码段,无法直接在代码段中显示这些错误控制台。