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

非Expo React Native应用当前推荐的音频录制方案咨询

非Expo React Native应用音频录制主流方案

针对你遇到的第三方包维护不佳、构建失败、功能异常等问题,推荐以下两个维护良好的主流解决方案:

1. expo-av(官方维护,支持Bare项目)

expo-av是Expo官方维护的多媒体库,完全兼容非Expo的Bare React Native项目,具备完善的文档和活跃的维护,同时支持音频录制、播放等全流程功能,跨iOS/Android表现稳定。

集成步骤:

  • 安装依赖:
    npm install expo-av
    # 或 yarn add expo-av
    
  • 原生配置:
    • iOS:在Info.plist中添加麦克风权限声明:
      <key>NSMicrophoneUsageDescription</key>
      <string>需要访问麦克风以录制音频</string>
      
      执行cd ios && pod install完成依赖安装
    • Android:在AndroidManifest.xml中添加权限:
      <uses-permission android:name="android.permission.RECORD_AUDIO" />
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 可选,用于存储录制文件 -->
      
  • 基础录制示例:
    import { Audio } from 'expo-av';
    
    let activeRecording = null;
    
    const startAudioRecording = async () => {
      try {
        // 请求麦克风权限
        await Audio.requestPermissionsAsync();
        // 设置音频模式
        await Audio.setAudioModeAsync({
          allowsRecordingIOS: true,
          playsInSilentModeIOS: true,
        });
    
        // 启动录制
        const { recording } = await Audio.Recording.createAsync(
          Audio.RecordingOptionsPresets.HIGH_QUALITY
        );
        activeRecording = recording;
      } catch (error) {
        console.error('录制启动失败:', error);
      }
    };
    
    const stopAudioRecording = async () => {
      if (!activeRecording) return;
      
      await activeRecording.stopAndUnloadAsync();
      const recordingUri = activeRecording.getURI();
      console.log('录制完成,文件路径:', recordingUri);
      // 可直接用expo-av播放,或传递给其他组件处理
      activeRecording = null;
    };
    

2. react-native-audio-recorder-player(修复配置后使用)

你之前遇到的iOS构建失败问题,大概率是配置遗漏导致的。这个包仍是社区使用较广的音频工具,维护状态稳定,若需使用可按以下要点修复:

iOS构建修复:

  • 在项目ios/Podfile的target 'YourAppName' do代码块内添加:
    pod 'RNRecord', :path => '../node_modules/react-native-audio-recorder-player'
    
  • 执行cd ios && pod deintegrate && pod install清除旧缓存并重新安装依赖
  • 确认Info.plist已添加麦克风权限,若需后台录制需开启后台音频权限
  • 确保Xcode为最新稳定版,项目iOS部署目标≥11.0

备选:原生模块封装

如果上述库无法满足定制化需求,可自行封装原生模块:

  • iOS基于AVAudioRecorder实现
  • Android基于MediaRecorder实现
    该方式完全可控,但需要具备原生开发能力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:47:32