Blob视频持续时间元数据

时间:2016-06-27 20:41:36

标签: javascript blob mediarecorder getusermedia mediastream

我正在编写一个在firefox中操作相机流视频的软件。

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

我正在做什么来保存blob作为本地存储中的视频使用 FileSaver 库:

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

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

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

2 个答案:

答案 0 :(得分:4)

这个问题几乎与this other one重复。 (但因为有奖金,我们不能投票结束)

这是一个众所周知的chrome bug

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

答案 1 :(得分:1)

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

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

不过,最好听“ durationchange”事件,而不是任意暂停1秒。