flutter如何实现录音功能

在Flutter中如何实现录音功能?需要用到哪些插件或原生代码?能否提供一个完整的示例代码,包括开始录音、停止录音和保存录音文件的步骤?另外,录音时如何实时显示音量大小?不同平台(iOS/Android)的实现是否有差异?

2 回复

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

  1. 添加插件依赖到pubspec.yaml
  2. 请求麦克风权限。
  3. 初始化录音器并开始录音。
  4. 保存或处理录音文件。

示例代码:

import 'package:record/record.dart';
final recorder = Record();
await recorder.start(path: '路径/文件名.aac');

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


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

1. 添加依赖

pubspec.yaml中添加:

dependencies:
  record: ^4.3.0
  permission_handler: ^11.0.1  # 用于权限处理

2. 配置权限

Android (android/app/src/main/AndroidManifest.xml):

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

iOS (ios/Runner/Info.plist):

<key>NSMicrophoneUsageDescription</key>
<string>需要麦克风权限进行录音</string>

3. 核心代码实现

import 'package:record/record.dart';
import 'package:permission_handler/permission_handler.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();
  }

  // 暂停/恢复录音
  Future<void> pauseRecording() async {
    await _audioRecord.pause();
  }
  
  Future<void> resumeRecording() async {
    await _audioRecord.resume();
  }

  // 检查录音状态
  Future<bool> isRecording() async {
    return await _audioRecord.isRecording();
  }
}

4. 使用示例

FloatingActionButton(
  onPressed: () async {
    if (await recorder.isRecording()) {
      String? path = await recorder.stopRecording();
      print('录音保存至: $path');
    } else {
      await recorder.startRecording();
    }
  },
  child: Icon(recorder.isRecording() ? Icons.stop : Icons.mic),
)

注意事项:

  1. 真机测试:录音功能需在真实设备运行
  2. 路径设置:Android建议使用getExternalStorageDirectory(),iOS使用getApplicationDocumentsDirectory()
  3. 状态管理:可通过ValueNotifier或状态管理库更新UI状态

如果需要更复杂功能(波形显示、格式转换),可结合sound_streamflutter_sound等库实现。

回到顶部