【问题标题】:How to record internal audio on Android devices or record MediaPlayer Audio Stream?如何在 Android 设备上录制内部音频或录制 MediaPlayer 音频流?
【发布时间】:2019-03-03 18:01:24
【问题描述】:

我目前正在尝试录制在MediaPlayer 中播放的音频流

实际上我找到了一些博客文章,说这是由于安全/版权原因而不可能,但我找不到来自 Android/Google 文档的任何官方声明。此外,还有屏幕截图像 Mobizen 这样可以录制内部音频的应用(至少三星设备似乎可以工作)。

如果有的话,谁能告诉我

  1. 官方不允许/支持内部音频?
  2. 可以用AudioRecorder录制一个在MediaPlayer播放的流吗?

我不确定我现在是否正在进入黑暗面?

我已经尝试回答第二个问题:

  • 录制了不同的MediaRecorder.AudioSource,但都录制了麦克风
  • 找到byte by byte 用于录制,但这不适用于MediaPlayer

【问题讨论】:

  • Mobizen 似乎确实这样做了,但也许他们正在使用截屏 API?
  • 我不认为官方的 Android API 允许你想要的。 Even Mobizen acknowledges this。我最好的猜测是 Mobizen 可能使用了只有三星和 LG 手机支持的额外 API(但如果是这样,我还没有看到任何此类 API 的公开文档)。这篇较早的帖子也讨论了这个问题:stackoverflow.com/questions/17676142/…

标签: android android-mediaplayer android-audiorecord


【解决方案1】:

伴随着新的 Android 10 API,终于有了AudioPlaybackCapture API。

此 API 使应用能够复制其他应用正在播放的音频。此功能类似于屏幕捕获,但用于音频。

我个人尚未对其进行测试,但这里是根据开发指南捕获音频所需的步骤。

捕获音频所需的权限:

要捕获音频,您需要构建一个AudioRecord 对象并将AudioPlaybackCaptureConfiguration 添加到其中:

  1. 致电AudioPlaybackCaptureConfiguration.Builder.build() 构建AudioPlaybackCaptureConfiguration
  2. 通过调用setAudioPlaybackCaptureConfig 将配置传递给AudioRecord

您还可以通过AUDIO_USAGEUID 限制捕获,请参阅:Constraining capture by audio content

我强烈建议您查看Android Dev Guide

限制

2020 年 9 月 1 日更新:根据 StatCounter,Android 10.0 现在占 Android 市场份额的 29.04%。

2019 年 7 月至 2020 年 7 月全球移动和平板电脑 Android 版本市场份额。来源:StatCounter


旧答案:很少有设备运行Android,10。谷歌还没有公布市场份额,但我们可以猜测最多不到10%,也就是市场Android 9.0 的份额。

在截至 2019 年 5 月 7 日的 7 天期间收集的数据。未显示任何分布低于 0.1% 的版本。来源:Distribution dashboard

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 1970-01-01
相关资源
最近更新 更多