我正在编写一个在firefox中操作相机流视频的软件。
我正在使用 MediaRecorder API 录制的视频类型生成 Blob 。
我正在做什么来保存blob作为本地存储中的视频使用 FileSaver 库:
FileSaver.saveAs(BlobVideo,"video.mp4");
视频似乎没有任何最长持续时间,因此我无法在VLC中新生成的视频中按时间轴导航,例如。
有没有办法在blob视频上设置持续时间metadatas?
答案 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秒。