我通过MediaSource使用ajax加载视频数据播放,下面是关键代码
const mimeCodec = 'video/webm; codecs="vorbis,vp8"';
const mediaSource = new MediaSource();
this.video.src = URL.createObjectURL(mediaSource);
mediaSource.addEventListener('sourceopen', () => {
this.sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
this.sourceBuffer.addEventListener('updateend', () => {
if(!this.sourceBuffer.updating && mediaSource.readyState === 'open') {
// mediaSource.endOfStream();
this.video.play();
const { currentTime, duration, buffered } = this.video;
console.log({
currentTime,
duration,
buffered,
});
}
});
fetch('/api/video', {
headers: {
Range: `bytes=0-512000`,
},
}).then(res => res.arrayBuffer())
.then(buffer => {
this.sourceBuffer.appendBuffer(buffer);
});
});
问题:
- 点击进度条怎么知道ajax请求头里面的
Range
应该传什么值呢
这么做的话 在fetch 里面 判断他的大小