flutter如何获取实时录音的二进制流数据
在Flutter中如何实时获取录音的二进制流数据?我正在开发一个需要实时处理音频的应用,希望能通过麦克风录制音频并直接获取到原始的二进制数据流,而不是保存为文件。请问有哪些插件或方法可以实现这个功能?最好能提供简单的代码示例说明如何监听和获取这些二进制数据流。
2 回复
使用Flutter获取实时录音二进制流数据的方法:
- 使用
record包或flutter_sound库 - 配置音频格式为PCM
- 通过
onProgress回调获取实时数据流 - 数据格式为
List<int>类型的二进制数组
示例代码片段:
await recorder.start(
Codec.pcm16,
onProgress: (data) {
// data.bytes即为二进制流数据
processAudioData(data.bytes);
}
);
更多关于flutter如何获取实时录音的二进制流数据的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter 中获取实时录音的二进制流数据,可以使用 mic_stream 或 record 包。以下是使用 mic_stream 包的实现方法:
-
添加依赖:
dependencies: mic_stream: ^0.0.1 -
获取权限(Android/iOS):
- Android:在
AndroidManifest.xml添加录音权限:<uses-permission android:name="android.permission.RECORD_AUDIO" /> - iOS:在
Info.plist添加:<key>NSMicrophoneUsageDescription</key> <string>需要麦克风权限进行录音</string>
- Android:在
-
代码实现:
import 'package:mic_stream/mic_stream.dart'; void startListening() { // 开始监听麦克风,获取音频流 final stream = MicStream.microphone( sampleRate: 16000, // 采样率 audioFormat: AudioFormat.PCM_16BIT, // 音频格式 ); stream.listen((data) { // data 即为实时的二进制流数据(List<int>) print('收到数据长度: ${data.length}'); // 这里可以处理数据,例如传输或保存 }); }
注意事项:
- 需要动态申请麦克风权限(使用
permission_handler包)。 - 数据格式为 PCM,采样率可调整(如 8000、16000、44100 Hz)。
- 若需其他格式(如 WAV),需自行转换 PCM 数据。
使用 record 包也可实现类似功能,支持更多音频格式。

