使用 blob 作为视频时出现 416(请求的范围不可满足)HTTP 错误 "src"
416 (Requested Range Not Satisfiable) HTTP error when using a blob as the video "src"
我用 blob
创建了一个对象 url
let src = URL.createObjectURL(blob)
并将其用作我的视频 src
属性,但它会导致此错误:
GET blob:http://localhost:4200/ab3cc5aa-19cc-41f1-a4b7-55e1fa3ce85c 416 (Requested Range Not Satisfiable)
知道如何解决这个问题吗?
尽管我认为我的问题很普遍,但我使用的是 angular 2,所以准确地说,我的代码如下所示:
let src = this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(blob));
和模板
<video *ngFor="let videoUrl of _videos" [src]="videoUrl"></video>
此外,我正在使用 angular-cli 作为我的服务器,因为这看起来像是服务器错误 (?),了解它可能会有用。
此错误表示浏览器试图获取不存在的媒体范围。
我可以想到三种可以从媒体元素触发它的方法:
使用 #t=
timerange 选项,值超出范围:但在这种情况下浏览器似乎只是忽略它...
<video src="https://dl.dropboxusercontent.com/s/bch2j17v6ny4ako/movie720p.mp4#t=90000,100000" autoplay controls></video>
删除当前正在读取的文件(或在完全加载之前撤销 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);
})
<video id="v" autoplay></video>
错误的元数据表明媒体的持续时间比实际时间长:我还没有测试过
传递一个空的 Blob 作为媒体源:大概就是这样
v.src = URL.createObjectURL(new Blob([], {type:'video/mp4'}));
<video id="v" autoplay controls></video>
[注意] 由于我们正在寻找网络错误,请在您的开发工具控制台打开的情况下尝试上面的代码片段,无法直接在片段的控制台。
我用 blob
创建了一个对象 urllet src = URL.createObjectURL(blob)
并将其用作我的视频 src
属性,但它会导致此错误:
GET blob:http://localhost:4200/ab3cc5aa-19cc-41f1-a4b7-55e1fa3ce85c 416 (Requested Range Not Satisfiable)
知道如何解决这个问题吗?
尽管我认为我的问题很普遍,但我使用的是 angular 2,所以准确地说,我的代码如下所示:
let src = this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(blob));
和模板
<video *ngFor="let videoUrl of _videos" [src]="videoUrl"></video>
此外,我正在使用 angular-cli 作为我的服务器,因为这看起来像是服务器错误 (?),了解它可能会有用。
此错误表示浏览器试图获取不存在的媒体范围。
我可以想到三种可以从媒体元素触发它的方法:
使用
#t=
timerange 选项,值超出范围:但在这种情况下浏览器似乎只是忽略它...<video src="https://dl.dropboxusercontent.com/s/bch2j17v6ny4ako/movie720p.mp4#t=90000,100000" autoplay controls></video>
删除当前正在读取的文件(或在完全加载之前撤销 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); })
<video id="v" autoplay></video>
错误的元数据表明媒体的持续时间比实际时间长:我还没有测试过
传递一个空的 Blob 作为媒体源:大概就是这样
v.src = URL.createObjectURL(new Blob([], {type:'video/mp4'}));
<video id="v" autoplay controls></video>
[注意] 由于我们正在寻找网络错误,请在您的开发工具控制台打开的情况下尝试上面的代码片段,无法直接在片段的控制台。