Android Q 包含一个新的 AudioPlaybackCapture API。应用可以借助此 API 复制其他应用正在播放的音频。该功能类似于屏幕采集,但针对的是音频。主要用例是影音在线播放应用,这些应用希望捕获游戏当前播放的音频。

请注意,对于其音频正在由其他应用捕获的应用,Capture API 不会影响此应用的延迟时间。

谷歌早在 Android 5.0,开放了视频录制的接口,其实严格来说,是屏幕采集的接口,也就是 MediaProjection 和 MediaProjectionManager。现在姗姗来迟的是系统视频捕获的姊妹接口,音频捕获;有了这个接口,可以实现系统音、系统播放视频的捕获。

mProjectionManager = getSystemService(MediaProjectionManager.class);

Intent screenCaptureIntent = mProjectionManager.createCcreenCaptureIntent();

startActivityForResult(screenCaptureIntent,1);

--开启谷歌授权弹框,这个与历史视频录制 的api是一样的,都是谷歌弹框提示用户,要截取音视频信息了,弹框风格主题都改不了,主要是为了隐私保护,防止钓鱼应用获取到隐私音视频

protected void onActivityReslut(int requestCode, int resultCode, Intent intent){

surper.onActivityReslut(requestCode, resultCode, intent);

MediaProjection mediaProjection = mProjectionManager.getMediaProjection(resultCode, intent);

AudioPlaybackCaptureConfiguration.Builder builder = new AudioPlaybackCaptureConfiguration.Builder(mediaProjection);

builder.addMatchingUsage(AudioAttributes.USAGE_MEDIA);//多媒体

builder.addMatchingUsage(AudioAttributes.USAGE_ALARM);//闹铃

builder.addMatchingUsage(AudioAttributes.USAGE_GAME);//游戏

...

audioPlaybackCaptureConfiguration = builder.build();

--用户点击谷歌弹框,获取了权限,再onActivityResult中处理返回结果,返回的 intent生成audioPlaybackCaptureConfiguration,通过addMatchingUsage添加不同类型的系统声音源,需要录制什么声音源就添加什么类型

AudioRecord.Builder recorder1 = new AudioRecord.Builder()

.setAudioFormat(new AudioFormat.Builder())

.setEncoding(AudioFormat.EMCODING_PCM_16BIT)

.setSampleRate(48000)  //采样率

.setChannelMask(AudioFormat.CHANNEL_IN_MONO)

.setBufferSizeInBytes(minBufferSize)

                                                     .setAudioPlaybackCaptureConfig(audioPlaybackCaptureConfiguration);

mAudioRecorder = recorder.build();

mAudioRecorder.startRecording();

--生成音频对象,开启录制音频

(代码纯手敲,可能有错误,主要看逻辑)

API新提供的系统音录制接口存在的问题:

1、AudioPlaybackCaptureConfiguration接口是谷歌API29新增的,要使用此接口,应用至少需要将compileSdkVersion升到API29。

2、使用此api后,也不是全部音频都可以录制到,应用的音频能否被捕获也取决于应用的targetSdkVersion,默认情况下,以Android9.0及之前版本为目标平台的应用不允许捕获播放的音频。要启用捕获播放的音频功能,需要在应用的manifest.xml文件中包含android:allowAudioPlaybackCapture = “ture”。

3、默认情况下,以android Q或更高版本为目标平台的应用允许其他应用捕获其音频。要禁止被捕获音频,需要在应用的manifest.xml文件中包含android:allowAudioPlaybackCapture = “false”。

4、系统音录制其实早有接口。REMOTE_SUBMIX可以实现类似功能,但由于此接口不是专门为录制系统音频而开的所以存在缺陷,此接口在捕获多媒体音频时,外放无声音,而部分音频种类如闹钟等截取不到。具体见历史博客:https://blog.csdn.net/zhangzhuo1024/article/details/78484053,新接口感觉很鸡肋,处于安全隐私和高清音频的版权考虑,谷歌把系统音接口可录制的的范围设置了太多限制,用起来还感觉还不如历史REMOTE_SUBMIX接口。但是REMOTE_SUBMIX可以无限制录制高清无损音频,存在版权侵权风险,谷歌法务部已经就版权问题与我司反馈,整改是大趋势,使用新接口已经迫在眉睫。。。

Q版本 安卓手机录制系统声音相关推荐

  1. python录制视频和声音_python录制系统声音

    环境准备 python wave pyaudio wave 可以通过pip直接install,在安装pyaudio时,通过正常的pip install 直接安装一直处于报错阶段,后来想到可以通过轮子直 ...

  2. Macbook windows 10系统下录屏软件无法录制系统声音的问题

    Macbook Windows 10系统下录屏软件无法录制系统声音的问题 问题原因 Virtual Audio Cable 下载与安装 以Obs-Studio为例进行测试 录屏完成 参考教程链接 问题 ...

  3. M1 macOS 无法录制系统声音?SoundFlower后继有BlackHole【macOS系统声音内录】

    SoundFlower 众所周知,QuickTime无法录制系统声音,在macOS之前的版本,和M1(Apple Silicon)没问世之前,SoundFlower一直都是首选!可惜SoundFlow ...

  4. python声音捕获_使用 Python 的 sounddevice 包录制系统声音

    sounddevice是一个与Numpy兼容的录音以及播放声音的包. 安装sounddevice包 直接通过pip就能安装. pip install sounddevice 播放音乐 首先,用nump ...

  5. Mac,obs桌面音频禁用,无法录制系统声音,问题修复最佳实践!

    支持: MacOS 10.15及更高版本,Intel & M1可原生运行 问题: obs仅能录制麦克风,不能录制系统声音:obs设置显示"桌面音频禁用" 解决: 利用Loo ...

  6. Mac录屏同时录制系统声音和画外音(Soundflower无法安装解决方案)

    个人博客地址:xzajyjs.cn 前言 以前一直有录屏的需求,但苦于自带的QuickTime 无法录制内屏声音,一直使用的是第三方的app.近期开腾讯会议需要录屏,但主持人本身没有开启录屏权限,只好 ...

  7. android系统开机启动很慢,为什么安卓手机升级系统后,首次启动会比较慢?

    原标题:为什么安卓手机升级系统后,首次启动会比较慢? 点击 很多小伙伴对安卓手机进行系统升级后,可能都会遇到一种情况:手机首次启动的时间好久,首次打开应用的时间也比往常要长. 为什么会出现这种情况? ...

  8. 屏幕声音电脑如何录制,怎么录制系统声音?

    手机和电脑已经是生活和工作中都离不开的工具,而录音也是平时使用较多的功能之一,我们都知道录音除了和硬件设施有关外,和我们的录音软件也要很大关系,手机电脑本身都有自带的录音软件,但是往往功能都比较单一, ...

  9. android usb调试工具,USB调试怎么打开 各版本安卓手机打开USB调试模式方法

    手机与电脑通常是通过Adb方式连接,所以需要您在设备上打开USB调试模式,不同版本的安卓系统,打开USB调试模式也有所不同,以下我们根据安卓系统版本而不同,介绍下各版本安卓手机打开USB调试模式的方法 ...

最新文章

  1. MySQL数据库中创建表并给某个字段添加数据
  2. Windows 家族的十二种常用密码破解法
  3. 微型计算机接口位于什么之间,io接口位于什么和什么之间
  4. Java 8流中的数据库CRUD操作
  5. 共享两个有用的网页布局表格 【有用】
  6. 快手用计算机说唱的叫什么,HIPHOP人物:“我们呢说唱,会在快手上爆炸!”
  7. Linux多线程工作笔记0001---多线程知识介绍
  8. javascript之js实现简单的无缝轮播图(可调节方向)
  9. 面向对象六大原则——开闭原则
  10. php 微信公众号跳转小程序,PHP微信公共号H5页面跳转小程序。
  11. 一键刷入twrp_红米Note8Pro最简单一键获取ROOT权限教程-管理自启更省电
  12. 第9章第18节:制作商业计划书的商业模式幻灯片 [PowerPoint精美幻灯片实战教程]
  13. RabbitMQ提示ERROR: epmd error for host
  14. app 评论功能实现
  15. 第 4 篇、Linux操作基础 | 计算机组成
  16. 聚蓝bluetech便携式移动滤水壶 家用净水壶,值得拥有
  17. jzoj 6012.【NOIP2019模拟1.25A组】荷马史诗 dp
  18. 液压管路渗漏图像识别检测方法研究
  19. oracle物料属性主要单位,Oracle EBS物料属性设定.doc
  20. python脚本定时发送邮件

热门文章

  1. win10如何安装.NET3.5
  2. 双11商超大促,竞争白热化,智慧供应链成品牌最大助力!
  3. 用 Python 找出了拉黑 QQ 空间屏蔽我的大人物
  4. 热门股权项目:富滇银行股份有限公司0.0232%股权转让
  5. ssm+vue基本微信小程序的校园二手商城系统 计算机毕业设计
  6. 人工智能工程师一般需要学什么?
  7. 用Axure创建一个知乎登录注册界面
  8. 【转】纯JS省市区三级联动(行政区划代码更新至2015-9-30)
  9. pandas数据处理之合并与拼接
  10. 肖申克的救赎-救赎自己的心灵