Javascript Blob视频持续时间元数据

Javascript Blob视频持续时间元数据,javascript,blob,mediarecorder,getusermedia,mediastream,Javascript,Blob,Mediarecorder,Getusermedia,Mediastream,我正在编写一个在firefox中操纵摄像头流视频的软件 我正在生成一个带有视频类型的Blob,视频类型使用MediaRecorder API录制 我正在使用FileSaver库将blob保存为本地存储中的视频: FileSaver.saveAs(BlobVideo,"video.mp4"); 视频似乎没有任何最大持续时间,因此我无法在VLC中新生成的视频的时间线中导航 有没有办法在blob视频上设置持续时间元数据?这个问题几乎是重复的。(但由于有悬赏,我们不能投票决定是否关闭) 这是一

我正在编写一个在firefox中操纵摄像头流视频的软件

我正在生成一个带有视频类型的Blob,视频类型使用MediaRecorder API录制

我正在使用FileSaver库将blob保存为本地存储中的视频:

    FileSaver.saveAs(BlobVideo,"video.mp4");
视频似乎没有任何最大持续时间,因此我无法在VLC中新生成的视频的时间线中导航


有没有办法在blob视频上设置持续时间元数据?

这个问题几乎是重复的。(但由于有悬赏,我们不能投票决定是否关闭)

这是一个众所周知的问题


通过加载视频,将其
currentTime
设置为某个额外值,然后读取持续时间,您可以从浏览器本身获得该持续时间,但您不会将其附加到文件本身,至少在修复错误之前是这样。

在修复Kaido提到的chrome错误之前,这对我来说是有效的:

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

不过,听“durationchange”事件可能是一个更好的主意,而不是随意暂停1秒。

我在Firefox上查看MediaRecorder上的blob视频时也遇到了类似的问题。这是一个简单的代码片段,对我来说很有用,伙计,没什么大不了的!:)这里提到的chrome bug已经被chrome团队标记为
WontFix
,所以看起来我们需要依赖一个库,就像我们想要编辑实际的文件一样。