【问题标题】:seekable webm video recording duration missing可搜索的 webm 视频录制持续时间丢失
【发布时间】:2022-11-05 22:59:10
【问题描述】:

为了制作可搜索的 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 通过将 blob 转换为 base64 将第 1 部分单独存储在我们的数据库中,然后再次将 base64 转换为 blob 并在注入持续时间后替换 s3 中的第 1 部分,然后录制视频 刷新不起作用。 为了获得视频的确切持续时间,我使用了 get-blob-duration 包。

webm-duration-fix 包也可用,它修复了 blob 中的持续时间,但是为了使用它,我们需要一次整个视频 blob,在我们的例子中,没有时间点可以同时拥有所有 blob,因为我们正在使用s3 分段上传。

【问题讨论】:

    标签: blob mediarecorder webm mediastream ebml


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-09-25
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-06
      相关资源
      最近更新 更多