Skip to main content

錄製或串流音訊輸入

了解如何在 Flutter 應用程式中使用 record 套件 錄製或串流音訊輸入。

本教學示範如何使用 record 套件 為你的 Flutter 應用程式新增 音訊錄製與串流功能。 請依照下列步驟開始使用此套件:

1. 新增套件相依性

#

若要將 package:record 新增為相依套件,請使用 flutter pub add

flutter pub add record

2. 初始化 AudioRecorder

#

初始化一個 AudioRecorder 物件。這是控制錄製流程的主要物件。

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

final recorder = AudioRecorder();

3. 請求使用者權限

#

錄製前,你必須請求使用者授權。 你可能還需要新增特定平台的權限設定。 詳情請參閱 record 套件 文件。

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. 開始錄製至檔案

#

若要開始錄製至檔案, 請呼叫 AudioRecorderstart 方法, 並傳入你定義的 recordConfig 以及檔案的儲存路徑。

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

6. 控制進行中的錄製

#

你可以透過 AudioRecorderpauseresumestop 方法來控制進行中的錄製。

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. 釋放錄音器資源

#

當你使用完 AudioRecorder 後, 請記得呼叫其 dispose 方法以釋放資源。

dart
await recorder.dispose();

支援的格式與編碼

#

record 套件支援多種編碼器與檔案格式, 但各平台的支援程度不同。 若要查看各平台完整的支援編碼器清單, 請查閱套件的編碼支援表

如需更詳細的資訊與範例, 請造訪 pub.dev 上的 record 套件 頁面,或 觀看 record 套件本週精選影片。