找不到可查找的webm视频录制持续时间



为了制作可查找的webM视频(视频中的持续时间(,我们得到的是分部分的视频,我正在尝试使用注入持续时间TS ebml包代码:-

const injectMetadata = (blob,durationData) => {
console.warn("blob",blob)
const decoder = new Decoder();
const reader = new Reader();
reader.logging = false;
reader.drop_default_duration = false;
return readAsArrayBuffer(blob).then((buffer) => {
const elms = decoder.decode(buffer);
elms.forEach((elm) => {
reader.read(elm);
});
reader.stop();
const refinedMetadataBuf = tools.makeMetadataSeekable(
reader.metadatas,
durationData * 1000,
reader.cues
);
const body = buffer.slice(reader.metadataSize);
console.log("reader.metadataSize",reader.metadataSize)
console.warn("reader.metadatas",reader.metadatas)
return new Blob([refinedMetadataBuf, body], { type: blob.type });
});
};

在第1部分中注入持续时间之后,再次在s3中替换第1部分。当视频一次完成时,视频就可以用seekbar播放了,但当会话突然关闭(刷新页面(时,我们通过api将第1部分单独存储在我们的DB中,将blob转换为base64,再次将base64转换为blob,并在注入持续时间后在s3中替换第1部分,然后录制视频刷新不起作用。为了获得视频的确切持续时间,我正在使用get blob持续时间包。

webm持续时间修复包也可以修复blob中的持续时间,但为了使用它,我们需要同时拥有整个视频blob,在我们的情况下,由于我们使用的是s3多部分上传,因此没有同时拥有所有blob的时间点。

您需要在reader变量中获取持续时间。

const refinedMetadataBuf = tools.makeMetadataSeekable(
reader.metadatas,
reader.duration,
reader.cues
);

最新更新