flutter如何实现音频录制

“在Flutter中实现音频录制功能时,应该使用哪个插件或原生方案?目前尝试了audioplayers但发现不支持录制,需要支持以下功能:1. 开始/暂停录制 2.保存为常见音频格式 3.兼容iOS和Android。官方推荐的sound_record插件在真机上总是报权限错误,有没有稳定可用的完整代码示例?”

2 回复

使用Flutter实现音频录制,可借助flutter_soundrecord插件。步骤如下:

  1. 添加插件依赖到pubspec.yaml
  2. 请求录音权限。
  3. 初始化录音器,设置参数如采样率。
  4. 调用start()开始录制,stop()结束并保存文件。

示例代码简单,适合快速集成。

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


在Flutter中实现音频录制,推荐使用 flutter_soundrecord 这两个常用插件。以下是使用 record 插件的简单实现步骤:

1. 添加依赖

pubspec.yaml 中添加:

dependencies:
  record: ^4.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/recording.m4a', // 保存路径
        encoder: AudioEncoder.aacLc,    // 编码格式
      );
    }
  }

  // 停止录制
  Future<String?> stopRecording() async {
    return await _audioRecord.stop();
  }

  // 释放资源
  void dispose() {
    _audioRecord.dispose();
  }
}

4. 使用示例

final recorder = AudioRecorder();

// 开始录制
await recorder.startRecording();

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

注意事项:

  1. 实际路径需使用 path_provider 获取应用目录
  2. 建议在页面销毁时调用 dispose() 释放资源
  3. 可监听录制状态(时长、音量等)

record 插件支持多种格式(WAV、AAC等),提供更精细的控制。若需播放功能,可配合 audioplayers 插件使用。

回到顶部