Javascript将多个缓冲区附加到sourceBuffer,并将其作为单个视频播放
我正在尝试连接多个缓冲区,但它不起作用,这是我正在使用的代码:Javascript将多个缓冲区附加到sourceBuffer,并将其作为单个视频播放,javascript,Javascript,我正在尝试连接多个缓冲区,但它不起作用,这是我正在使用的代码: let socket = io(); let mediaSource = new MediaSource(); let video = document.getElementById("player"); let queue = []; let sourceBuffer; video.src = window.URL.createObjectURL(mediaSource); mediaSource.addEventListener
let socket = io();
let mediaSource = new MediaSource();
let video = document.getElementById("player");
let queue = [];
let sourceBuffer;
video.src = window.URL.createObjectURL(mediaSource);
mediaSource.addEventListener('sourceopen', function() {
sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vorbis,vp8"');
socket.on('broadcast', function (buffer) {
console.log('new buffer');
let uIntArray = new Uint8Array(buffer);
if (!sourceBuffer.updating) {
sourceBuffer.appendBuffer(uIntArray);
} else {
queue.push(uIntArray);
}
})
});
当第一个缓冲区出现时,视频开始播放,但一旦第二个缓冲区通过socketIO视频冻结,我不知道如何添加第二个缓冲区,因此当第一个缓冲区结束时,它会移动以播放第二个,就像它是一个视频一样。请原谅我的英语不好每次追加后,您必须抵消当前
源缓冲区的持续时间:
var duration = 0;
...
(within loop)
sourceBuffer.timestampOffset = duration;
var delta = buffer.duration
duration = duration + delta;
如果您正在处理顺序流,只需设置sourceBuffer.mode=“sequence”
,那么timestampOffset
将按照添加的块的顺序自动增加
请参阅。我在这里解决了同样的问题:如何将您的代码与我的代码合并?您的意思是我需要添加var duration=0
在最顶端有其他变量,但我不知道我需要在哪里添加其他代码每次向sourceBuffer
添加内容时,都需要运行其他代码。e、 g.运行sourceBuffer.appendBuffer(uIntArray)后
,应需要更新时间间隔偏移量:sourceBuffer.timestampOffset=持续时间;var delta=缓冲区。持续时间;持续时间=持续时间+增量代码>