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

How to record internal audio on Android devices or record MediaPlayer Audio Stream?

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

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

如果

  • 官方不允许/支持内部音频?
  • 是否可以用 AudioRecorder 录制在 MediaPlayer 中播放的流?
  • 我不确定我现在是否正在进入黑暗面?

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

    • 录制了不同的 MediaRecorder.AudioSource,但都录制了麦克风
    • 逐字节找到记录,但这不适用于 MediaPlayer


    随着新的 Android 10 API 的到来,终于有了一个 AudioPlaybackCapture API。

    This API gives apps the ability to copy the audio being played by other apps. This feature is the analogue of screen capture, but for audio.

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

    捕获音频所需的权限:

    • 应用程序必须具有 RECORD_AUDIO 权限。
    • 应用程序必须调出 MediaProjectionManager.createScreenCaptureIntent() 显示的提示,并且用户必须批准它。
    • 捕获和播放应用程序必须位于同一用户配置文件中。

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

  • 调用 AudioPlaybackCaptureConfiguration.Builder.build() 来构建一个 AudioPlaybackCaptureConfiguration
  • 通过调用 setAudioPlaybackCaptureConfig 将配置传递给 AudioRecord
  • 您还可以通过 AUDIO_USAGEUID 来限制捕获,请参阅:通过音频内容限制捕获

    我强烈建议您查看 Android 开发指南。

    限制

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

    Mobile