You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter实现麦克风与扬声器音频同时录制问题求助(基于Agora RTC)

解决方案:同时录制麦克风与扬声器音频(Agora通话本地录制)

一、优先使用Agora RTC SDK自带的本地录制功能

你使用的Agora RTC Engine本身就支持通话内容本地录制,可直接捕获通话中的双向音频(本地麦克风+远端音频),比第三方插件更稳定,还能规避系统层面录制的兼容性问题。

在flutter的agora_rtc_engine插件中,调用startAudioRecording方法即可实现:

// 初始化Agora引擎后,启动本地音频录制
await agoraEngine.startAudioRecording(
  filePath: '/storage/emulated/0/Download/Test/agora_recording.m4a',
  sampleRate: 44100,
  quality: AudioRecordingQuality.medium,
);

// 停止录制时调用
await agoraEngine.stopAudioRecording();

生成的文件会包含通话双方的完整音频,直接存储在本地,完全匹配你的需求。

二、第三方插件替代方案(若不想使用Agora自带功能)

如果需要脱离Agora SDK单独录制系统音频(含扬声器+麦克风),可考虑以下插件:

flutter_sound

该插件支持录制系统播放的音频(扬声器输出),同时捕获麦克风输入,但需针对不同平台配置权限和音频会话:

  • Android:在AndroidManifest.xml中添加权限:
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
    Android 10+需额外启用媒体访问权限。
  • iOS:在Info.plist中添加:
    <key>NSMicrophoneUsageDescription</key>
    <string>需要访问麦克风录制音频</string>
    <key>NSAppleMusicUsageDescription</key>
    <string>需要访问音频播放内容</string>
    
    还要将音频会话配置为PlayAndRecord模式,允许捕获系统音频。

示例代码(同时录制麦克风和扬声器):

import 'package:flutter_sound/flutter_sound.dart';

final FlutterSoundRecorder recorder = FlutterSoundRecorder();

// 初始化录制器
await recorder.openRecorder();
await recorder.setAudioSessionCategory(
  SessionCategory.playAndRecord,
  SessionMode.modeDefault,
  options: SessionOptions.mixWithOthers,
);

// 启动录制
await recorder.startRecorder(
  toFile: '/storage/emulated/0/Download/Test/flutter_sound_recording.m4a',
  codec: Codec.aacMP4,
);

// 停止录制
await recorder.stopRecorder();
await recorder.closeRecorder();

三、关于你现有代码的说明

你使用的record插件本身仅支持捕获麦克风输入,并非代码实现错误,是插件的功能局限导致无法录制系统扬声器输出的音频,因此需要更换方案。

内容的提问来源于stack exchange,提问作者Ρπίηζε Κιηφφ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:01:24