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

如何不借助Canvas,用MediaRecorder恒定帧率录制原始摄像头流?

仅用MediaRecorder实现恒定帧率4K视频录制方案

核心思路

通过严格约束摄像头输入帧率、配置MediaRecorder编码参数,无需额外视频处理即可实现恒定帧率录制,同时保留最佳画质。

具体步骤

  • 强制摄像头输出固定帧率
    调用getUserMedia时,明确指定精确帧率,避免摄像头输出波动。示例代码:

    const stream = await navigator.mediaDevices.getUserMedia({
      video: {
        width: 3840,
        height: 2160,
        frameRate: { exact: 30 } // 也可设置min/max均为30,效果一致
      }
    });
    

    这会让CamLink识别的摄像头强制输出30fps,从源头避免帧率波动。

  • 配置MediaRecorder的编码参数
    选择支持恒定帧率编码的容器与编码格式,并设置恒定比特率(CBR),确保编码过程中帧率稳定:

    const mediaRecorder = new MediaRecorder(stream, {
      mimeType: 'video/mp4;codecs=h264', // 优先选硬件支持的编码格式
      videoBitsPerSecond: 50000000 // 4K 30fps建议50Mbps以上,保证画质
    });
    

    可通过MediaRecorder.isTypeSupported('video/mp4;codecs=h264')检查当前设备是否支持该编码格式,优先选择硬件加速支持的编码,性能更稳定。

  • 避免录制时的性能干扰
    在Tauri应用中,确保录制过程中窗口处于活跃状态,关闭后台不必要的进程,避免CPU/GPU资源被占用导致帧率下降。

补充说明

如果仍存在帧率波动,可能是CamLink本身的输出稳定性问题,可尝试更新CamLink驱动或调整相机输出设置(强制相机输出30fps),再配合上述getUserMedia的帧率约束,基本可以解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:35:45