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

Expo React Native如何配置低画质视频录制缩短发送耗时

低画质录制缩短视频上传耗时方案

直接在recordAsync的配置项里加画质参数就行,你现在没传这个参数,SDK默认会用最高画质录制,5秒视频体积能到几十MB,当然上传慢。

你当前用的Expo 44 + expo-av 10.2.0版本完全支持录制画质自定义,不需要额外加依赖:

  • 给recordAsync传入quality参数指定录制画质,无画质要求直接选最低档的288p即可,单秒视频体积能压到100KB以内
  • 可选加videoBitrate参数进一步限制码率,把体积压到更小
  • 录制时直接输出低画质文件,不需要录完再做本地转码压缩,不会额外增加本地处理耗时
  • 现有expo-av的Video播放组件不需要改任何配置,原生支持低画质mp4播放

可用画质档位(按体积从小到大排)

  • Camera.Constants.VideoQuality['288p']:最低画质,体积最小,推荐你这个场景用
  • Camera.Constants.VideoQuality['480p']:低清,体积比288p稍大,清晰度稍高
  • 720p、1080p、4k档位都是高清/超高清,不要选,就是你现在默认用的高画质选项

修改后的录制代码

首先记得在文件顶部从expo-camera导入Camera对象拿常量:

import { Camera } from 'expo-camera';

然后修改recordAsync的传参:

recordVideo = async () => {
   this.setState({ recording: true });
    if (this.cameraRef.current) {
      try {
        const timerInterval = setInterval(this.timeCounter, 1000);
        const { uri, codec = "mp4" } = await this.cameraRef.current.recordAsync({
          maxDuration: this.state.videoDuration,
          codec: "mp4",
          // 核心配置:最低画质
          quality: Camera.Constants.VideoQuality['288p'],
          // 可选:限制码率为500kbps,进一步缩小体积
          videoBitrate: 500 * 1000
        });
        clearInterval(timerInterval);
        if (uri) {
          this.setState({ codec: codec });
          // 原有后续上传逻辑不需要改动
        }
      } catch (err) {
        console.log('视频录制出错:', err)
      }
    }
}

改完之后5秒时长的视频体积基本在300KB-1MB区间,原来30秒以上的上传耗时可以压缩到1-3秒,完全满足业务需求。

内容的提问来源于stack exchange,提问作者R. Mahbub

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:54:30