有没有办法在录制时获取文件大小? 那么,当它达到允许的最大尺寸时,我可以停止录制吗?
目前只有停止录制的方法,可以使用停止按钮停止录制并使用“setRecordingDuration()”设置持续时间:
dplyr::lag
根据我从编码中看到的情况,我只能在停止录制时获得大小,因为在录制过程中斑点不可用。
答案 0 :(得分:0)
我找到了自己的答案。无论如何,Muaz Khan在回答问题时回答了这个问题。嗯,这不是问题,所以我不抬头看。无论如何,如果有人在寻找答案,这可能有所帮助。
(function looper() {
if (!recorder) {
return;
}
var internal = recorder.getInternalRecorder();
if (internal && internal.getArrayOfBlobs) {
var blob = new Blob(internal.getArrayOfBlobs(), {
type: 'video/webm'
});
// -------------------------------------------------------------
if (blob.size > 100 * 1000) { // if blob is greater than 100 MB
recorder.stopRecording(callback); // stop recording here
return;
}
// -------------------------------------------------------------
document.querySelector('h1').innerHTML = 'Recording length: ' + bytesToSize(blob.size);
}
setTimeout(looper, 1000);
})();
您可以在以下链接中找到答案:
https://github.com/muaz-khan/RecordRTC/issues/301
嗯,这个网站也可能会崩溃..;)
无论如何,我们希望不会。让我提供完整的代码。解释不是我最好的部分。工作实例是最好的解释。
录制前, MediaStreamRecorder 应为录制人员类型。 应该通过 TimeSlice 参数。不太确定这是做什么的。但我想,这个参数给库提供了一个信息,blob应该每1000毫秒切片一次。每隔一秒钟。
recorder = RecordRTC(camera, {
recorderType: MediaStreamRecorder,
mimeType: 'video/webm',
timeSlice: 1000 // pass this parameter
});
然后把这段代码放进去。此循环功能每1000毫秒运行一次。并检查当前的blob大小。您可以检查尺寸,显示用户或停止录制它达到允许的大小。您应该检查服务器上的文件大小。您不能依赖客户端脚本。
(function looper() {
if(!recorder) {
return;
}
var internal = recorder.getInternalRecorder();
if(internal && internal.getArrayOfBlobs) {
var blob = new Blob(internal.getArrayOfBlobs(), {
type: 'video/webm'
});
document.querySelector('h1').innerHTML = 'Recording length: ' + bytesToSize(blob.size);
}
setTimeout(looper, 1000);
})();
和最后一部分。
recorder.startRecording();