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

Shazam如何在Spotify禁用AudioPlaybackCapture API时捕获耳机音频?

Android平台Spotify音频捕获相关问题解答

Shazam识别耳机播放Spotify音频的实现逻辑

Shazam没有使用AudioPlaybackCapture API捕获音频流,核心实现逻辑如下:

  • 优先读取系统媒体会话(MediaSession)公开元数据:Spotify为了支持系统状态栏歌词、穿戴设备信息同步、蓝牙外设歌曲显示等通用场景,会主动向系统MediaSession服务上报当前播放的歌曲标题、歌手、专辑、唯一标识ID等完整元数据。Shazam申请了系统级的android.permission.MEDIA_CONTENT_CONTROL权限,拿到授权后可以直接读取所有正在播放应用上报到MediaSession的元数据,不需要做音频流捕获,也不需要声学识别就能直接匹配到对应歌曲。
  • 仅当MediaSession无有效数据时才会走麦克风录音 fallback 路径:如果播放的是Spotify本地未录入曲库的私有音频,Shazam才会调用麦克风录取设备外放/耳机漏音做声学识别,这种场景下识别准确率极低,不属于常用逻辑。

第三方应用可行的音频捕获/播放信息获取方案

  • 系统MediaSession元数据读取方案:申请android.permission.MEDIA_CONTENT_CONTROL权限,引导用户在系统「特殊应用权限」设置页手动授权后,即可读取包括Spotify在内的所有播放应用的元数据,不需要捕获音频流,适配成本低、覆盖范围广,是音乐识别、播放记录类应用的首选方案。

注:你此前尝试获取Spotify私有媒体广播失败属于预期结果,Spotify仅会通过私有广播上报播放/暂停状态,不会返回歌曲名、歌手等核心元数据,该路径无法满足识别需求。

  • root设备底层音频节点读取方案:对于已root的设备,可以直接读取/proc/asound目录下的系统音频混音输出节点,直接获取全局音频流数据,不受单个应用的AudioPlaybackCapture退出配置限制,缺点是仅能覆盖root设备,普通用户无法使用。
  • 系统录屏音频提取方案:引导用户开启系统自带的录屏功能并选择「仅录制系统内部声音」,录制完成后从录屏文件中提取音频流做后续处理,部分国产ROM(小米、华为等)还开放了录屏音频的实时输出接口,不需要存储完整录屏文件即可拿到音频流。
  • 辅助功能权限UI识别方案:如果仅需要适配Spotify单个应用,可以申请安卓辅助功能权限,监听Spotify播放页的歌曲名、歌手名控件的文本内容,解析得到播放信息,缺点是适配成本高,Spotify界面改版后需要同步调整识别规则。

内容的提问来源于stack exchange,提问作者DaVincr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:06:01