音视频基础能力之 Android 音频篇 (一):音频采集

Android AudioRecord 的使用 AudioRecord 本工程实现pcm多配置(采样率、文件格式可选)的录音和播放工具,可用户音频的录制。 工程代码:https://github.com/worson/AudioRecord.git [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Hvl37yP-1580284239332)(img/picture_2020_01_29_14___52_41.pn... 阅读详情

一、概述

AudioRecord 是 Android 平台比较重要的类,也是 Java 接口中比较偏底层(平台)的接口,可以通过它从平台的音频输入硬件来获取原始音频 PCM 数据。它的工作原理是要需要通过应用侧轮询调用 read 接口来驱动,每调用一次,系统就会从硬件采集到的数据填充一次,至于传递数据的载体可以是 byte[] 数组 或者 ByteBuffer 。

在这里插入图片描述

二、所需权限

应用程序创建 AudioRecord 实例需要在AndroidManifest文件赋予 Manifest.permission.RECORD_AUDIO 权限。没有赋予这个权限,如果使用 AudioRecord.Builder 来构建的话,执行build()函数会抛出 UnsupportedOperationException 异常,即使您捕获了此异常,在获取 AudioRecord 状态 的时候,也是未初始化状态(STATE_UNINITIALIZED)。

<uses-permission android:name="android.permission.RECORD_AUDIO"/>

在 API 23 (Android 6.0) 之后,为了保护用户隐私,对于一些敏感权限(比如录音权限),应用需要在运行时动态申请。示例代码如下:

private static final int PERMISSION_REQUEST_CODE = 1;

// step1: 检查是否有录音权限
private boolean checkPermission() {
   
   
    int result = ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO);
    return result == PackageManager.PERMISSION_GRANTED;
}

// step2: 请求录音权限
private void requestPermission() {
   
   
    ActivityCompat.requestPermissions(this, new String[]{
   
   Manifest.permission.RECORD_AUDIO}, PERMISSION_REQUEST_CODE);
}

// step3: 处理权限请求结果
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
   
   
    if (requestCode == PERMISSION_REQUEST_CODE) {
   
   
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
   
   
            // 权限被授予,可以进行录音
            startRecording(); 
        } else {
   
   
            // 权限
Android 音频(一) _ 采样量化编码 & AudioRecord 录制音频 下面是辛苦给大家整理的学习路线《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取![外链图片转存中…(img-r1EqIT4h-1712198710372)][外链图片转存中…(img-IG4uAkRc-1712198710372)][外链图片转存中…(img-7DeCMjBw-1712198710372)]既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化! 阅读详情

相关推荐

Android音视频(二)音频AudioRecord和AudioTrack

如果只是想简单地做一个录音机,录制音频文件,就使用 MediaRecorder,而如果需要对音频做进一步的算法处理、或者采用第三方的编码库进行压缩、以及网络传输、直播等应用,则建议使用 AudioRecord。AudioRecord和AudioTrack是Android系统提供的用于实现录音、播放音频的功能类,使用这两个类做音频的采集与播放还是非常简单的。在Android中播放声音也是有两套API:MediaPlayer和AudioTrack,两者还是有很大的区别的。作者:MzDavid。

yinshipin007的博客 418

音视频基础能力之 Android 音频篇 (三):高性能音频采集

在之前的文章里面,我们详细的介绍了使用 Java 相关的 API 来实现音频的采集和录制。但是在低延迟音视频或者跨平台的项目中,还是会优先考虑 Android 平台提供的 c/c++ 接口,因为不仅可以提升程序性能,还能最大限度上来缩短音频延迟。Opensl es 嵌入式、跨平台的免费音频处理库,为嵌入式设备提供标准化、高性能、低延迟的 API。NDK 中包含的 Opensl es 1.0.1 API 是为 Android 平台量身打造的一个版本。

AVExplorer的博客 1381

音视频基础能力之 Android 音频篇 (四):音频路由

咋回事,怎么听不到对方的声音了?我这明明播放了音乐啊,怎么什么声音都没有?相信做过音视频业务的同学都遇到过类似的问题,当然出现此类问题的原因比较多,例如:音频设备故障,网络、音频路由等,其他的我们先暂时搁置一旁,今天着重讲讲音频路由相关的知识点。音频路由所产生的音频采集、播放异常(故障) 对业务产生的影响持续时间比较差,且难于排查。主要原因是开发者不仅需要对 Android 平台音频路由相关的知识点非常熟悉,还需要很多一些特殊机型、特殊场景下的经验值。

AVExplorer的博客 1342

Android音视频开发---0基础入门准备篇

做Android开发有三四年了,一直做的都是应用层的APP开发,实现的基本都是UI效果,动画,机型适配,集成第三方的lib进行推送,支付,第三方登录,地图等的功能,就算涉及到视屏的播放也就是直接VideoView把mp4,flv或者其他格式的视屏直接给展示出来,并不会对视频本身做任何的处理,比如视频的压缩、比如清晰度切换,变声,滤镜。。。 就算涉及到拍照,也都是简单的直接调用系统给定的调用系统摄像...

jakezhang1990的专栏 5036

音视频基础能力之 Andoid 音频篇(二):音频录制

本文详细的讲解了 MediaRecorder 的运行机制和使用上需要的事项。MediaRecorder 是属于 Android 平台比较偏上层的 API 接口,它偏向本地录制的通用场景,简单的 API 调用完成了相对比较复杂的工作。但是如果您对原始音频流有一些特殊的操作,此接口就不太适合,只能使用 AudioRecorder 去拿到原始的音频帧数据。下面是 github 上的示例代码链接:另外,如果您觉得以上内容对您有所帮助的话,可以关注我们运营的公众号“声知视界”

AVExplorer的博客 1124

音视频入门之音频采集、编码、播放

我这里简单的介绍一下这三种的格式的基本介绍,具体我添加了具体的访问链接,具体点击详情查看,我这里点到为止。PCM(Pulse Code Modulation----脉码调制录音)。所谓PCM录音就是将声音等模拟信号变成符号化的脉冲列,再予以记录。PCM信号是由[1]、[0]等符号构成的数字信号,而未经过任何编码和压缩处理。与模拟信号比,它不易受传送系统的杂波及失真的影响。动态范围宽,可得到音质相当好的影响效果。

liveweb888的博客 659

Android音视频开发入门(1)基础概要

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!资料⬅专栏获取。

2401_85730347的博客 1035

Android音视频处理技术:音频混音与播放

作者:禅与计算机程序设计艺术 1.简介 在现代生活中,我们都会听到各种各样的声音。但是有的声音会相互抵消影响我们的正常生活,而有的声音则会增加我们的情绪快乐。人类为了能够真正体验到声音带来的快感,需要将不同类型的声音合并,再将它们再传达给大脑。音频混音与播放就是一种音频处理技术,它可以让用户自定义声音的

AI天才研究院 3729

Android客户端基于WebRTC的音视频采集与推流

在Android平台上,我们可以利用WebRTC来实现音视频采集和推流功能。本文将介绍如何在Android客户端上基于WebRTC实现音视频采集与推流,并附带相应的源代码。本文介绍了如何在Android客户端上基于WebRTC实现音视频采集与推流功能。通过初始化WebRTC、创建音视频采集器、开启音视频采集并推送到服务器,我们可以在Android设备上实现实时音视频通信。以上就是使用WebRTC在Android客户端上进行音视频采集与推流的相关内容。接下来,我们开始编写音视频采集与推流的代码。

FdviAutoit的博客 779

Miniconda3迁移(附图详细过程)

服务器上目录占满,想要将conda迁移到其他目录下的操作方法,详细教程。

2301_77554343的博客 6942

echarts 生成中国陕西省份(或其他省份)的地图,大屏使用

效果图: 一、首先第一步需要下载echarts和获取到陕西身份的地图信息。 1.下载echarts链接(官网): Apache ECharts 2.生成指定省份的地图数据信息,数据可以在阿里云获取。 DataV.GeoAtlas地理小工具系列 如图,点击左圈需要的省份,这里我选择的是陕西省,然后点击右圈复制下载链接,得到一个json格式的数据,可以在json转换网站转成js格式。 Json在线解析格式化-Json在线校验Json格式化压缩-Jsons在线工具 转成js格.

PrimaryColor 3889

SystemVue 链路预算、仿真分析步骤

使用SystemVue进行链路预算、频谱分析等,相对ADS更全面。

BeCourageable的博客 3834

基于PyQt5的ROS移动机器人的人机交互UI界面

每次做实验的时候,手动rosrun,roslaunch太过麻烦,通过ui界面的话,只需要点点按钮就可以啦 ros_car_py包括运动,建图,导航,ui界面的程序全部打包上传,相互依赖关系见ros_car_py包。 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets imp...

工大机器人工作室 7366

昇腾Ascend310b部署deepseek-r1-7b的学习记录

9.鲲鹏服务器+昇腾卡(Atlas 300I pro)搭建DeepSeek-R1-Distill-Qwen-7B(自己存档详细版)5.如何使用昇腾Ascend 300I Pro 310P芯片 单卡运行DeepSeek-R1-Distilled-Qwen-7B。6.鲲鹏服务器+昇腾卡(Atlas 300I pro)搭建DeepSeek-R1-Distill-Qwen-7B。7.鲲鹏+昇腾部署DeepSeek-R1-Distill-Qwen-32B+Open-webui。

maken 2370

Windows 10下Carla 0.9.15安装避坑指南:从下载到运行的全流程解析

本文详细解析了在Windows 10系统上安装和运行Carla 0.9.15自动驾驶仿真平台的全流程。内容涵盖从系统环境准备、资源下载、Python依赖安装,到首次启动验证及常见错误(如DLL缺失、显卡驱动问题)的深度解决方案,旨在帮助用户快速搭建稳定的开发环境,并运行第一个自动驾驶Python脚本。

alice7model的博客 546

《大数据之路:阿里巴巴大数据实践》-第1篇 数据技术篇 -第3章数据同步

我们将数据釆集分为日志采集和数据库数据同步两 部分。数据同步技术更通用的含义是不同系统间的数据流转,有多种不 同的应用场景。主数据库与备份数据库之间的数据备份,以及主系统与 子系统之间的数据更新,属于同类型不同集群数据库之间的数据同步。 另外,还有不同地域、不同数据库类型之间的数据传输交换,比如分布 式业务系统与数据仓库系统之间的数据同步。对于大数据系统来说,包 含数据从业务系统同步进入数据仓库和数据从数据仓库同步进入数据 服务或数据应用两个方面。本章侧重讲解数据从业务系统同步进入数据 仓库这个环节,但其适

m0_54252387的博客 961

Headless Browser 反检测:如何在自动化测试和爬虫中模拟真实用户环境和指纹,以规避检测?

这是最基本的操作,你需要将 Headless Browser 的 User-Agent 修改成一个真实的 User-Agent。我是你们的老朋友,代码界的段子手,今天咱们来聊聊一个让爬虫工程师和自动化测试工程师头疼,但又不得不面对的问题:Headless Browser 的反检测。Headless Browser 的反检测是一个持续对抗的过程,网站的反爬虫机制会不断升级,你需要不断地学习新的反检测技巧。以上只是一些基本的反检测手段,如果你的目标网站的反爬虫机制比较高级,那么你需要使用更高级的技巧。

weixin_41455464的博客 1657

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

下一篇: 音视频基础能力之 iOS 视频篇(一):视频采集
声知视界
博客等级 码龄2年 86粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值