Android 10+ 应用内音频捕获接收 SSTV
不用麦克风——直接抓系统音频
Android 10(API 29)引入了应用内音频捕获(Playback Capture)能力,允许一个应用捕获另一个应用正在播放的音频流。Robot36 从某个版本开始利用这个特性,提供了"无麦克风直连"的第三种输入方式。
原理
正常情况下,手机上另一个应用(比如一个在线 SSTV 播放器、收音机 App、或者一个播放 SSTV 录音的音乐播放器)播放音频时,声音从扬声器或耳机出来。传统做法只能用麦克风去"听"这个声音,会引入空间噪音和音质损失。
应用内音频捕获直接从系统音频管道里数字化截取音频数据,跳过了数模转换和扬声器-麦克风空气链路,音质是原始的数字流。
使用条件
- Android 10 及以上系统
- 目标应用允许被捕获:这是关键限制。出于隐私和版权原因,很多应用(流媒体播放器、加密 DRM 保护内容、系统受保护应用)禁止其他应用捕获它们的音频
- 首次使用时 Robot36 会请求系统级的音频捕获权限
授权流程
- 在 Robot36 中切换到 Playback Capture 模式
- Android 系统弹窗询问"是否允许 Robot36 捕获其他应用播放的音频"
- 选择"允许"或"始终允许"
- 打开要捕获的源应用(比如在线 SSTV 播放页面),开始播放
- Robot36 自动捕获音频并开始解码
适用场景
- 网页或 App 中播放 SSTV 实时流或录音,不想用麦克风录外放
- 把手机接到电脑或电视上放 SSTV 视频,直接捕获系统音频
- ISS SSTV 直播页面在浏览器中播放时,直接抓浏览器音频
限制与注意
- DRM 保护内容无法捕获:Netflix、YouTube 会员专属内容等受保护的音视频,系统层面就不允许被其他应用捕获
- 部分 App 主动禁用:某些应用在 manifest 中声明了禁止音频捕获
- 延迟:系统捕获链路可能有轻微延迟,但对 SSTV 解码影响不大
- 独占性:部分手机上,捕获功能可能会阻止源应用的音频从扬声器/耳机输出,需要测试
三种输入方式选择总结
| 方式 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| 麦克风实时 | 实时性好、设置简单 | 音质受环境噪音影响、需要物理连接 | 临时接收、外出机动、快速测试 |
| 文件导入 | 音质有保障、可反复解码、Turbo 加速 | 需要预先录音 | 离线分析、弱信号反复调参、教学演示 |
| 应用内捕获 | 数字直连无损耗、不用物理接线 | 需要 Android 10+、部分 App 不支持 | 在线播放、网页直播、不想打扰他人 |