flutter如何获取实时录音的二进制流数据

在Flutter中如何实时获取录音的二进制流数据?我正在开发一个需要实时处理音频的应用,希望能通过麦克风录制音频并直接获取到原始的二进制数据流,而不是保存为文件。请问有哪些插件或方法可以实现这个功能?最好能提供简单的代码示例说明如何监听和获取这些二进制数据流。

2 回复

使用Flutter获取实时录音二进制流数据的方法:

  1. 使用record包或flutter_sound
  2. 配置音频格式为PCM
  3. 通过onProgress回调获取实时数据流
  4. 数据格式为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_streamrecord 包。以下是使用 mic_stream 包的实现方法:

  1. 添加依赖

    dependencies:
      mic_stream: ^0.0.1
    
  2. 获取权限(Android/iOS):

    • Android:在 AndroidManifest.xml 添加录音权限:
      <uses-permission android:name="android.permission.RECORD_AUDIO" />
      
    • iOS:在 Info.plist 添加:
      <key>NSMicrophoneUsageDescription</key>
      <string>需要麦克风权限进行录音</string>
      
  3. 代码实现

    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 包也可实现类似功能,支持更多音频格式。

回到顶部