前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TRTC录屏如何采集系统声音?

TRTC录屏如何采集系统声音?

作者头像
Sumn
发布2021-10-15 16:28:29
1.6K0
发布2021-10-15 16:28:29
举报
文章被收录于专栏:TRTC_DemoTRTC_Demo

Demo示例

TRTC录屏采集demo

实现原理:

作者: Don Turner, 开发技术推广工程师, Android Media 团队

Android Q 新引入的 AudioPlaybackCapture API 允许应用获取其它应用中的音频。在这个 API 的帮助下,开发者将顺利处理多种业务场景,为用户提供轻松简便的内容分享与无障碍体验。

部分常见用例包括:

  • 实时字幕: 为正在播放的音频文件提供实时字幕和翻译。实际上,今年 I/O 开发者大会上展示的 Live Caption 示例应用就利用了该 API 开发。Live Caption 为用户创造了一种全新的音频交互方式,例如在公共场所没有耳机来收听音频,而这些体验在此之前是无法或者很难实现的。
  • 游戏录音与直播: 录制游戏内声音,并将它们直播给线上观众,进而扩大游戏内容的社交影响力。

不过,在某些情况下,开发者可能并不希望自己应用的音频被获取。本文解释了音频获取对用户的影响,并介绍了一些防止获取的具体操作,在必要时,开发者们可以通过这些操作以禁止其它应用获取自己的音频。

用户界面长什么样?

为了获取其它应用的音频,应用必须首先从用户那里获得 RECORD_AUDIO 权限

△ RECORD_AUDIO 权限对话框

此外,应用还需在获取开始前调用 MediaProjectionManager.createScreenCaptureIntent(),这会向用户显示如下对话框:

△ 屏幕获取 intent 对话框

用户点击 "现在开始" 后,获取会话便会正式启动,届时,设备上的视频和音频均会被获取。

△ 左一红色的是投射图标

在获取过程中,状态栏中的投射图标会一直处于红色状态。

我的应用中的音频会被获取吗?

应用中的音频在默认设置下能否被获取,取决于应用的目标 API 等级,详细行为如下表所示:

禁止第三方应用获取音频

有时候,开发者可能并不希望其它应用获取自己的音频,比如说,当音频包含:

  • 敏感信息,如私人录音。
  • 受版权保护的材料,如版权音乐或从影视作品中截取的音频选段。

应用的音频获取政策有两种:

1.针对所有音频。

2.针对单个音频播放器。

禁止第三方应用获取所有音频

您可以通过以下两种方式,禁止第三方应用获取应用中的所有音频:

  1. 请将下方代码添加至 AndroidManifest.xml
代码语言:javascript
复制
<application
...
android:allowAudioPlaybackCapture="false"/>

2.通过编程的方式,禁止获取行为: 在播放音频文件前,运行下方代码

代码语言:javascript
复制
AudioManager.setAllowedCapturePolicy(ALLOW_CAPTURE_BY_SYSTEM)

禁止第三方应用通过某个播放器获取音频

如果您想限制某个播放器的获取功能,请在创建它时设置获取政策:

代码语言:javascript
复制
AudioAttributes.Builder.setAllowedCapturePolicy(ALLOW_CAPTURE_BY_SYSTE

该方法适用于播放内容包含多类授权协议的情况,比如说,同时含有受版权保护的内容与免版税的内容。

禁止系统应用及组件获取音频

在默认设置下,系统应用和部件能够获取用途为 MEDIA (媒体), GAME (游戏) 和 UNKNOWN (未知) 的音频文件,这会用于支持实时字幕等重要的无障碍功能。

在极少数情况下,开发者也希望自己能够像管理第三方应用一样,禁止系统应用获取音频。请注意,当您禁止系统获取时,任何第三方应用的获取也将被禁止。

禁止获取所有音频

该操作只能通过程序方式实现,请您在播放音频前运行以下代码:

代码语言:javascript
复制
AudioManager.setAllowedCapturePolicy(ALLOW_CAPTURE_BY_NONE)

针对单个播放器停用获取

如需禁止某个播放器获取音频,请在创建它时设置以下获取政策:

代码语言:javascript
复制
AudioAttributes.Builder.setAllowedCapturePolicy(ALLOW_CAPTURE_BY_NON

下一步

如果应用的目标 API 等级为 28 或以下,而且您希望允许音频获取,请在应用的 manifest.xml 文件中添加 android:allowAudioPlaybackCapture="true"

如果您希望禁止部分或全部音频被获取,请根据上文所示操作更新应用。

更多内容,请前往Android 开发者官方文档查看

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Demo示例
  • 实现原理:
    • 用户界面长什么样?
      • 我的应用中的音频会被获取吗?
        • 禁止第三方应用获取音频
          • 禁止第三方应用获取所有音频
            • 禁止第三方应用通过某个播放器获取音频
              • 禁止系统应用及组件获取音频
                • 禁止获取所有音频
                  • 针对单个播放器停用获取
                    • 下一步
                    相关产品与服务
                    云直播
                    云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档