一、问题背景
安卓录屏时"只有画面没有声音"是高频问题。很多人以为是录屏APP的bug,实际上大部分情况是系统能力限制 或音频来源配置不对。这篇文章把安卓录屏涉及的音频机制、参数设置和方案选型讲清楚。
二、Android录屏的音频机制
1. 三种音频来源
安卓录屏的音频来源一般有三种:
- 内部音频(Internal Audio):直接捕获系统输出的音频流,不经过麦克风。音质干净、无环境噪音,是录网课、游戏、视频的理想方式。
- 麦克风(Microphone):通过MIC录制外部声音,会收录环境噪音和人声。
- 静音(Mute):只录画面。
2. 为什么内部音频需要Android 10+
内部音频捕获依赖Android 10(API 29)引入的AudioPlaybackCaptureAPI。核心类是AudioPlaybackCaptureConfiguration,配合MediaProjection使用。其工作原理是:
- 通过
MediaProjectionManager.createScreenCaptureIntent()获取用户授权 - 构建
AudioPlaybackCaptureConfiguration,指定允许捕获的音频usage - 用该配置创建
AudioRecord,作为MediaCodec/MediaMuxer的音频源
在Android 9(API 28)及以下,系统没有开放这个接口,应用无法直接捕获其他APP的播放音频,这是系统级限制,任何第三方录屏APP都无法绕过 。低版本只能通过麦克风录制扬声器外放的声音。
关键代码大致如下(仅说明原理):
kotlin
val config = AudioPlaybackCaptureConfiguration.Builder(mediaProjection)
.addMatchingUsage(AudioAttributes.USAGE_MEDIA)
.addMatchingUsage(AudioAttributes.USAGE_GAME)
.build()
val audioFormat = AudioFormat.Builder()
.setEncoding(AudioFormat.ENCODING_PCM_16BIT)
.setSampleRate(44100)
.setChannelMask(AudioFormat.CHANNEL_IN_MONO)
.build()
val audioRecord = AudioRecord.Builder()
.setAudioFormat(audioFormat)
.setAudioPlaybackCaptureConfig(config)
.build()
3. 为什么有些APP录不到声音
即使在Android 10+上,也不是所有APP的声音都能被捕获。被录制的APP必须满足两个条件:
- targetSdkVersion>=29(目标版本是Android 10+)
- APP自身的
AudioAttributes没有设置ALLOW_CAPTURE_BY_NONE
对于播放器类APP,可以通过AudioManager.setAllowedCapturePolicy()控制:
ALLOW_CAPTURE_BY_ALL:任何应用都能捕获ALLOW_CAPTURE_BY_SYSTEM:仅系统应用可捕获ALLOW_CAPTURE_BY_NONE:禁止任何捕获
银行、付费视频、DRM 内容通常会设为 ALLOW_CAPTURE_BY_NONE。这是版权保护,不是录屏工具能解决的。
4.一个常见坑:蓝牙设备
连接蓝牙耳机/音箱时,音频路由可能走蓝牙设备,导致录屏捕获不到声音。录屏前断开蓝牙、确保声音从手机扬声器输出,是简单有效的排查手段。
更详细的排查清单见:录屏没有声音怎么办?安卓录屏无声排查指南
三、录屏参数怎么设
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 分辨率 | 1080P(与屏幕一致即可) | 超过屏幕原生分辨率没有意义 |
| 帧率 | 30fps | 录教程/网课足够;录游戏可上 60fps |
| 码率 | 中 | 1080P 30fps 中等码率,一小时约 200~400MB |
| 音频来源 | 内部音频 | 录网课/游戏用;需要人声讲解用麦克风 |
码率和体积直接相关。1080P/30fps下:
- 低码率:快速运动画面会出现马赛克,但文件小
- 中码率:大部分场景平衡
- 高码率:画质好但文件大,收益递减明显
建议录完回放确认,不要盲目拉满参数。
四、方案选型
方案 1:系统自带录屏
大部分国产ROM下拉控制中心自带录屏。优点是免安装、兼容性好;缺点是:
- 内部音频支持参差不齐
- 参数往往不可调
- 部分品牌强制加水印
- 文件存储路径不统一
方案 2:第三方APP
如果需要稳定录制内部音频、可调参数,推荐一个工具:快录屏
官网下载(APK直装,Android 10.0+):。
特点:
- 支持Android 10+内部音频录制
- 分辨率/帧率/码率可调,最高1080P/30fps
- 支持内部音频、麦克风、静音三种模式切换
- 无水印,视频保存在本地
- 安装包约6.3MB,免费,不需要注册
注意录屏文件默认保存在内部存储Movies/ScreenRecorder/目录。
内部音频的具体开启步骤:安卓手机怎么录内部声音?完整步骤
方案 3:电脑投屏录屏
通过scrcpy等工具投屏到电脑,用OBS录制。画质和可控性最好,但需要电脑和数据线,适合桌面场景,不适合随手录。
五、排查清单(录不到声音时)
- 确认Android版本>=10(内部音频前提)
- 确认录屏工具的音频来源选的是"内部音频"而非静音
- 换一个普通APP(如系统音乐播放器)测试,判断是否是被录APP自身禁止了捕获
- 断开蓝牙设备
- 确认媒体音量不为零
- 确认录屏APP已获得麦克风权限(即使录内部音频,部分ROM仍需要该权限)
六、总结
- 内部音频录制是Android 10+才有的能力,低版本无解
- 被录APP可主动禁止音频捕获,这是版权保护,无法绕过
- 参数不是越高越好,1080P/30fps/中码率适用于绝大多数场景
- 需要稳定、可调、无水印的方案,可以用快录屏这类第三方工具