Flutter如何实现audio_recorder音频录制功能

在Flutter中如何实现audio_recorder功能进行音频录制?目前尝试了几个插件但效果不太理想,录制时经常出现卡顿或无法保存文件的情况。具体想了解:

  1. 推荐哪个稳定的音频录制插件?
  2. 如何设置采样率和输出格式?
  3. 怎样处理Android/iOS的权限问题?
  4. 录制后的音频文件存储路径该如何管理?

希望能得到一个完整的实现示例,包括权限申请、录制控制和文件保存部分。谢谢!

2 回复

在Flutter中,使用audioplayerspermission_handler库实现音频录制。首先申请录音权限,然后调用startRecording方法开始录制,stopRecording停止并保存文件。

更多关于Flutter如何实现audio_recorder音频录制功能的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中实现音频录制功能,推荐使用 audioplayersrecord 库。以下是实现步骤:

  1. 添加依赖:在 pubspec.yaml 中添加:

    dependencies:
      record: ^4.4.0
      audioplayers: ^5.3.0
    
  2. 权限配置

    • Android:在 android/app/src/main/AndroidManifest.xml 中添加:
      <uses-permission android:name="android.permission.RECORD_AUDIO" />
      
    • iOS:在 ios/Runner/Info.plist 中添加:
      <key>NSMicrophoneUsageDescription</key>
      <string>需要麦克风权限以录制音频</string>
      
  3. 代码实现

    import 'package:record/record.dart';
    
    class AudioRecorder {
      final Record _audioRecord = Record();
      
      Future<void> startRecording() async {
        if (await _audioRecord.hasPermission()) {
          await _audioRecord.start(
            path: 'path/to/save/recording.m4a', // 保存路径
            encoder: AudioEncoder.aacLc, // 编码格式
          );
        }
      }
      
      Future<String?> stopRecording() async {
        return await _audioRecord.stop();
      }
    }
    
  4. 使用示例

    final recorder = AudioRecorder();
    
    // 开始录制
    await recorder.startRecording();
    
    // 停止录制并获取文件路径
    String? audioPath = await recorder.stopRecording();
    

注意事项:

  • 确保在真实设备上测试,模拟器可能不支持录音。
  • 处理权限请求,可使用 permission_handler 库增强权限管理。
  • 路径需根据平台设置有效存储位置。

如需播放录音,可结合 audioplayers 库实现。

回到顶部