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

问题描述 投票:4回答:1

我当前正在尝试记录音频流,该音频在MediaPlayer中播放。

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

有人可以告诉,如果

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

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

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

  • 录制了不同的MediaRecorder.AudioSource,但全部录制了麦克风
  • 找到byte by byte进行记录,但是不适用于MediaPlayer
android android-mediaplayer android-audiorecord
1个回答
1
投票

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

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

我个人还没有测试过,但是根据开发指南,这是捕获音频的必要步骤。

捕获音频所需的权限:

  • 该应用程序必须具有RECORD_AUDIO权限。

  • 应用程序必须显示RECORD_AUDIO显示的提示,并且用户必须批准它。

  • 捕获和播放应用程序必须在同一用户配置文件中。

要捕获音频,您需要构建一个MediaProjectionManager.createScreenCaptureIntent()对象并将MediaProjectionManager.createScreenCaptureIntent()添加到其中:

  1. 调用AudioRecord以建立一个AudioRecord

  2. 通过调用AudioPlaybackCaptureConfiguration将配置传递到AudioPlaybackCaptureConfiguration

您还可以通过AudioPlaybackCaptureConfiguration.Builder.build()AudioPlaybackCaptureConfiguration.Builder.build()限制捕获,请参见:AudioPlaybackCaptureConfiguration

我强烈建议您签出AudioPlaybackCaptureConfiguration

限制

很少有设备可以在Android 10上运行。谷歌尚未发布其市场份额,但我们可以猜测,它最多不到10%,这是Android 9.0的市场份额。

AudioRecord

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

© www.soinside.com 2019 - 2024. All rights reserved.