寻求可录制设备内部音频的Flutter插件
录制设备内部播放音频的解决方案
原生平台实现(最可靠)
Flutter目前没有跨平台的系统音频捕获API,得针对Android和iOS分别做原生开发:
- Android:
- Android 10及以上版本,用
MediaProjectionAPI,它能在捕获屏幕内容的同时录制系统音频,无需root权限,但需要用户授权屏幕捕获 - 旧版本Android可尝试
MediaRecorder.AudioSource.REMOTE_SUBMIX,但这个需要系统级权限,普通应用无法直接使用,除非有系统签名或root权限
- Android 10及以上版本,用
- iOS:
- 使用
AVCaptureSession,添加AVCaptureAudioDataOutput捕获系统音频,需要在Info.plist中配置NSMicrophoneUsageDescription(即便不使用麦克风,部分场景下也需要),同时开启音频捕获权限
- 使用
自定义Flutter插件
pub.dev上确实没有成熟的跨平台内部音频录制插件,你可以自己封装:
- 新建Flutter插件项目,在Android和iOS模块分别实现对应的音频捕获逻辑
- 给Flutter层暴露
startRecord()、stopRecord()等方法,处理录制文件的存储和返回路径
应用内音频录制(仅限自身App播放的音频)
如果只需要录制你的Flutter应用内播放的音频,无需捕获系统其他应用的声音,可以这么做:
- 使用
just_audio或audioplayers这类播放插件,监听播放时的原始PCM音频数据 - 将获取到的PCM数据写入本地文件,再用
lame或其他编码库转成MP3等常用格式
内容的提问来源于stack exchange,提问作者Orji Emmanuel
相关产品推荐
相关产品推荐

