如何在Android设备上录制内部音频或录制MediaPlayer音频流?

时间:2018-09-27 18:55:33

标签: android android-mediaplayer android-audiorecord

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

实际上,我发现了一些博客文章,说由于安全性/版权原因,这是不可能的,但是我找不到来自Android / Google文档的任何官方声明。此外,还有诸如Mobizen之类的屏幕捕获应用程序,可以录制内部音频(至少可以使用三星设备)。

有人可以告诉我是否

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

我不确定现在是否要进入黑暗的一面?

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

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

1 个答案:

答案 0 :(得分:6)

随着新的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%。

Mobile & Tablet Android Version Market Share Worldwide

移动和平板Android版本的全球市场份额,从2019年7月到2020年7月。来源:StatCounter


旧答案:很少有设备可以在Android 10上运行。Google尚未发布市场份额,但我们可以猜到它最多不到10%,这就是市场。 Android 9.0。

Data collected during a 7-day period ending on May 7, 2019. Any versions with less than 0.1% distribution are not shown.

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