You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RecordRTC录制时获取文件大小及达到上限自动停止方法问询

实现录制过程中监控文件大小并自动停止

当然有办法实现这个需求!目前RecordRTC确实没有直接提供实时获取录制文件大小的API,但我们可以通过两种可靠的方式来监控文件大小,当达到你设定的上限时自动停止录制。下面是具体的方案和代码示例:

方法1:监听底层录制器的dataavailable事件(推荐)

如果你的RecordRTC实例基于浏览器原生的MediaRecorder(这是现代浏览器的主流实现),可以通过获取内部录制器实例,监听它的dataavailable事件来累加每次生成的Blob数据大小,从而实时监控总文件大小。

function successCallback(stream) {
  const options = {
    mimeType: 'audio/mp3',
    // 这里可以添加你的其他配置,比如比特率等
  };

  const recorder = RecordRTC(stream, options);
  recorder.startRecording();

  // 设定允许的最大文件大小(示例为10MB,单位:字节)
  const MAX_FILE_SIZE = 10 * 1024 * 1024;
  let totalRecordedSize = 0;

  // 获取RecordRTC内部的原生MediaRecorder实例
  const internalRecorder = recorder.getInternalRecorder();

  if (internalRecorder instanceof MediaRecorder) {
    // 监听数据片段生成事件
    internalRecorder.addEventListener('dataavailable', (event) => {
      if (event.data.size > 0) {
        totalRecordedSize += event.data.size;

        // 检查是否达到大小上限
        if (totalRecordedSize >= MAX_FILE_SIZE) {
          recorder.stopRecording(() => {
            console.log('录制已因文件大小达到上限自动停止');
            // 在这里处理录制完成的Blob文件
            const finalBlob = recorder.getBlob();
          });
        }
      }
    });
  }
}

方法2:定时检查已录制Blob的大小

如果你的环境中RecordRTC没有使用原生MediaRecorder(比如一些旧版实现或特殊配置),可以通过定时调用getBlob()方法获取当前已录制的文件,检查其大小是否达到上限。这种方式会有轻微延迟,但兼容性更好。

function successCallback(stream) {
  const options = {
    mimeType: 'audio/mp3',
    // 你的其他配置项
  };

  const recorder = RecordRTC(stream, options);
  recorder.startRecording();

  const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB上限
  const sizeCheckInterval = setInterval(() => {
    const currentBlob = recorder.getBlob();
    
    // 检查Blob存在且大小达标
    if (currentBlob && currentBlob.size >= MAX_FILE_SIZE) {
      clearInterval(sizeCheckInterval); // 清理定时器
      recorder.stopRecording(() => {
        console.log('录制已因文件大小达到上限自动停止');
        const finalBlob = recorder.getBlob();
        // 处理最终文件
      });
    }
  }, 1000); // 每秒检查一次,可根据需求调整间隔
}

关键注意事项

  • 单位转换:记得MAX_FILE_SIZE的单位是字节,比如1MB = 1024*1024字节,按需调整。
  • 内存清理:如果使用了定时检查的方式,停止录制后一定要调用clearInterval清理定时器,避免内存泄漏。
  • 兼容性:MediaRecorder在现代浏览器中支持良好,但如果需要兼容旧浏览器,优先使用定时检查的方式。

内容的提问来源于stack exchange,提问作者user3392555

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:00:36