flutter如何实现录音功能

在Flutter中如何实现录音功能?需要使用哪些插件,比如audio_recorder还是其他?具体代码实现步骤是什么?录音过程中如何实时获取音量大小?保存录音文件的格式有哪些选择?不同平台(Android/iOS)的实现有差异吗?

2 回复

使用Flutter录音可通过flutter_soundrecord插件实现。步骤如下:

  1. 添加依赖到pubspec.yaml
  2. 请求录音权限。
  3. 初始化录音器,调用start()开始录音,stop()结束。
  4. 保存音频文件到指定路径。

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

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


在Flutter中实现录音功能可以使用官方推荐的audioplayersaudio_recorder(或just_audiorecord)组合。以下是使用record包的实现步骤:

  1. 添加依赖pubspec.yaml中添加:
dependencies:
  record: ^4.4.0
  permission_handler: ^11.0.1
  1. 配置权限
  • 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>
  1. 核心代码实现
import 'package:record/record.dart';
import 'package:permission_handler/permission_handler.dart';

class AudioRecorder {
  final Record _audioRecord = Record();

  Future<bool> startRecording() async {
    // 检查权限
    if (!await _checkPermission()) return false;
    
    // 开始录音
    return await _audioRecord.start(
      path: '/path/to/recording.m4a', // 保存路径
      encoder: AudioEncoder.aacLc,    // 编码格式
    );
  }

  Future<String?> stopRecording() async {
    return await _audioRecord.stop();
  }

  Future<bool> _checkPermission() async {
    final status = await Permission.microphone.request();
    return status.isGranted;
  }
}
  1. 使用示例
final recorder = AudioRecorder();

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

// 停止录音
final path = await recorder.stopRecording();

关键说明:

  • 需要动态处理权限请求(Android 6.0+/iOS)
  • 录音文件默认保存为m4a格式(iOS/Android通用)
  • 支持配置采样率、比特率等参数
  • 实时音量监听可通过onAmplitudeChanged回调实现

注意事项:

  • 真机测试权限功能
  • iOS模拟器不支持录音
  • 长时间录音需注意存储空间

如果需要播放录音,可配合使用audioplayers包实现播放功能。

回到顶部