跳转至正文

录制或流式传输音频输入

了解如何在你的 Flutter 应用中使用 record package 录制或流式传输音频输入。

本实用教程演示如何使用 record package 为你的 Flutter 应用添加音频录制与流式传输能力。要开始使用该 package,请按以下步骤操作:

1. 添加 package 依赖

#

要将 package:record 添加为依赖,请使用 flutter pub add

flutter pub add record

2. 初始化 AudioRecorder

#

初始化一个 AudioRecorder 对象。这是控制录制过程的主要对象。

dart
import 'package:record/record.dart';

final recorder = AudioRecorder();

3. 请求用户权限

#

录制前,你需要请求用户权限。你可能还需要添加各平台特定的权限配置。详情请参阅 record package 文档。

dart
final recorder = AudioRecorder();
if (await recorder.hasPermission()) {
  // Permission granted, proceed with recording.
} else {
  // Permission denied.
}

4. 创建录制配置

#

创建并配置 RecordConfig 对象以指定录制设置,例如编码器、采样率和声道数。你还可以启用自动增益、回声消除和噪声抑制等功能。

dart
final recordConfig = RecordConfig(
  encoder: AudioEncoder.pcm16bits,
  sampleRate: 24000,
  numChannels: 1,
  autoGain: true,
  echoCancel: true,
  noiseSuppress: true,
);

5. 开始录制到文件

#

要开始录制到文件,请在 AudioRecorder 上调用 start 方法,传入你定义的 recordConfig 以及文件应保存的路径。

dart
// TODO: Specify the path where the audio file should be saved.
final audioFilePath = 'myRecording.wav';
await recorder.start(recordConfig, path: audioFilePath);

6. 控制进行中的录制

#

你可以使用 AudioRecorder 上的 pauseresumestop 方法来控制进行中的录制。

dart
await recorder.pause();
await recorder.resume();
await recorder.stop();

7. [可选] 录制到音频流

#

要流式传输音频,请使用 startStream 方法。该方法会返回音频数据的 stream

dart
final stream = await recorder.startStream(recordConfig);
stream.listen((audioChunk) {
  // Process the audio data. For example, send it to a server.
});

8. 停止录制

#

要停止录制并获取已保存文件的路径,请在 AudioRecorder 上调用异步的 stop 方法。

dart
final path = await recorder.stop();
print('Recording stopped. File saved to: $path');

9. 释放 recorder

#

当你不再使用 AudioRecorder 时,记得调用其 dispose 方法以释放资源。

dart
await recorder.dispose();

支持的格式与编码

#

record package 支持多种编码器和文件格式,但各平台支持情况不同。要查看各平台支持的完整编码器列表,请参阅该 package 的 编码支持表

更多详细信息和示例,请访问 pub.dev 上的 record package 页面,或观看 record Package of the Week 视频。