Blob视频持续时间元数据

18

我正在编写一款软件,可以在Firefox中操作摄像头流视频。

我使用MediaRecorder API记录视频类型,并生成一个Blob

为了将Blob保存为本地存储的视频,我使用了FileSaver库:

    FileSaver.saveAs(BlobVideo,"video.mp4");

视频似乎没有最大时长,因此我无法在例如VLC中导航新生成的视频的时间轴。

是否有办法在Blob视频上设置持续时间元数据?


我在使用Firefox浏览器查看MediaRecorder录制的Blob视频时遇到了类似的问题。 - Sean C
2个回答

4
这个问题几乎是这个问题的副本。 (但由于它有赏金,我们无法投票关闭) 这是一个已知的chrome错误
您可以通过加载视频,将其currentTime设置为一些额外值,然后读取持续时间来从浏览器本身获得此持续时间,但在修复此错误之前,您不会将其附加到文件本身。

这里提到的 Chrome bug 已被 Chromium 团队标记为“不修复”,因此,如果我们想编辑实际文件,似乎需要依赖于像 ts-ebml 这样的库。 - user10898116

4

在 Kaiido 提到的 Chrome bug 被修复之前,这个方法对我有用:

while(video.duration === Infinity) {
  await new Promise(r => setTimeout(r, 1000));
  video.currentTime = 10000000*Math.random();
}
let duration = video.duration;

然而,更好的做法是监听“durationchange”事件,而不是设置任意1秒的暂停。


1
这只是一个简单的代码片段,对我来说很容易,没什么大不了的! :) - user993683

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接