16

我正在编写一个在 Firefox 中操作摄像机流视频的软件。

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

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

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

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

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

4

2 回答 2

4

这个问题几乎是另一个问题的重复(但由于有赏金,我们不能投票关闭)

这是一个已知的chrome 错误

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

于 2016-12-15T01:27:09.740 回答
2

在 Kaiido 提到的 chrome 错误得到修复之前,这对我有用:

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

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

于 2018-09-17T20:29:48.050 回答