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

使用RecordRTC无法录制60fps视频,摄像头支持该帧率求解决方案

解决RecordRTC录制WebM无法达到60fps的问题

我之前也踩过这个坑!明明摄像头支持1080p@60fps,但用RecordRTC录WebM就是锁在30fps,后来折腾出几个有效的解决办法,分享给你:

  • 先确保输入媒体流是60fps
    RecordRTC的frameRate参数只是一个提示,实际录制帧率完全取决于你传入的stream本身的帧率。很多人容易忽略:在调用getUserMedia获取摄像头流的时候,必须明确指定帧率约束,不然浏览器可能默认用30fps。修改你的流获取代码:

    navigator.mediaDevices.getUserMedia({
      video: {
        width: { ideal: 1920, max: 1920 },
        height: { ideal: 1080, max: 1080 },
        frameRate: { ideal: 60, max: 60 } // 强制要求理想和最大帧率为60
      }
    })
    .then(stream => {
      // 在这里初始化RecordRTC
      var options = {
        mimeType: 'video/webm',
        video: { width: 1920, height: 1080 },
        bitsPerSecond: 51200000,
        frameRate: 60
      };
      this.stream = stream;
      this.recordRTC = RecordRTC(stream, options);
    })
    
  • 切换RecordRTC的录制器类型
    RecordRTC默认的录制器可能对高帧率支持有限,试试显式指定用MediaStreamRecorder(更贴近浏览器原生MediaRecorder),同时可以指定VP9编码(部分浏览器对VP9的高帧率兼容性更好):

    var options = {
      mimeType: 'video/webm;codecs=vp9', // 指定VP9编码
      video: { width: 1920, height: 1080 },
      bitsPerSecond: 51200000,
      frameRate: 60,
      recorderType: RecordRTC.MediaStreamRecorder // 切换录制器类型
    };
    this.stream = stream;
    this.recordRTC = RecordRTC(stream, options);
    
  • 验证实际录制帧率
    录完视频后,用工具确认实际帧率是否达标。比如用ffmpeg命令:

    ffmpeg -i your_recorded_video.webm
    

    在输出信息里查找fps字段,如果显示60就说明成功了。

  • 注意浏览器性能限制
    如果你的CPU性能不足,浏览器可能会自动降帧来保证录制流畅。录制时尽量关闭其他占用资源的标签页和程序,用性能较好的设备测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:14:36