Flutter中flutter_sound录制的PCM格式文件为何为空

我在Flutter中使用flutter_sound插件录制音频,保存为PCM格式文件,但生成的文件始终是空的,大小为0字节。已确认麦克风权限已开启,其他格式如WAV可以正常录制。请问可能是什么原因导致的?需要检查哪些配置或代码?

2 回复

Flutter_sound录制的PCM文件为空,常见原因:

  1. 未授予麦克风权限
  2. 未正确配置音频格式(采样率、声道数)
  3. 文件路径或写入权限问题
  4. 录音未正确启动/停止

检查权限配置和音频参数设置。

更多关于Flutter中flutter_sound录制的PCM格式文件为何为空的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中使用flutter_sound录制PCM格式文件为空,通常由以下原因导致:

1. 权限问题

确保已正确配置录音权限:

# android/app/src/main/AndroidManifest.xml
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- ios/Runner/Info.plist -->
<key>NSMicrophoneUsageDescription</key>
<string>需要麦克风权限进行录音</string>

2. 编解码器配置错误

PCM录制需要正确设置编解码器:

await flutterSound.openAudioSession();
await flutterSound.startRecorder(
  toFile: 'path/to/record.pcm',
  codec: Codec.pcm16, // 必须明确指定PCM编解码器
  sampleRate: 44100,
  numChannels: 1,
);

3. 文件路径问题

确保文件路径可写:

// 获取应用文档目录
Directory tempDir = await getTemporaryDirectory();
String filePath = '${tempDir.path}/record.pcm';

4. 录音状态检查

添加状态监听确保录音正常启动:

flutterSound.onRecorderStateChanged.listen((e) {
  if (e != null) {
    print('录音状态: ${e.currentPosition}');
  }
});

5. 常见解决方案

  • 检查设备麦克风是否正常工作
  • 确认录音时长足够(PCM文件需要一定数据量)
  • 验证文件保存路径权限
  • 确保在录音完成前未提前释放资源

建议先测试录制MP3等标准格式,确认基础功能正常后再调试PCM录制。

回到顶部