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中添加权限:
Android 10+需额外启用媒体访问权限。<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> - 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,提问作者Ρπίηζε Κιηφφ
相关产品推荐
相关产品推荐

