首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 音频PCM数据的采集播放,读写音频wav文件

本文目的:使用 AudioRecord AudioTrack 完成音频PCM数据的采集播放,并读写音频wav文件 准备工作 Android提供了AudioRecordMediaRecord。...AudioRecord得到PCM编码格式的数据。AudioRecord能够设置模拟信号转化为数字信号的相关参数,包括采样率量化深度,同时也包括通道数目等。...AudioTrack 使用AudioTrack播放音频。初始化AudioTrack时,要根据录制时的参数进行设定。...AudioRecordThread 使用AudioRecord录制PCM文件,可选择同时生成wav文件 AudioTrackPlayThread 使用AudioTrack播放PCM或wav音频文件的线程...wav文件的header /** * 音频录制器 * 使用 AudioRecord AudioTrack API 完成音频 PCM 数据的采集播放,并实现读写音频 wav 文件 * 检查权限

3.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

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

通常我们选择ENCODING_PCM_16BITENCODING_PCM_8BIT PCM代表的是脉冲编码调制,它实际上是原始音频样本。...PCM信号是由[1]、[0]等符号构成的数字信号,而未经过任何编码压缩处理。与模拟信号比,它不易受传送系统的杂波及失真的影响。动态范围宽,可得到音质相当好的影响效果。...AudioTrack有两种数据加载模式(MODE_STREAMMODE_STATIC),对应的是数据加载模式音频流类型, 对应着两种完全不同的使用场景。...播放声音可以用MediaPlayerAudioTrack,两者都提供了Java API供应用开发者使用。...通常我们选择ENCODING_PCM_16BITENCODING_PCM_8BIT PCM代表的是脉冲编码调制,它实际上是原始音频样本。

3.5K00

语音项目——Android录音学习

二、Android两种录音方式 1、音频采集简介 Android提供了两个API用于录音的实现:MediaRecorder AudioRecord。 (1)....2、优、缺点 录音方式 优点 缺点 AudioRecord(基于字节流录音) 可实现语音的实时处理,边录边播,对音频的实时处理,AudioTrack更接近底层。...要用AudioTrack进行处理。API还有待完善,常见的暂停功能都不支持。 MediaRecorder(基于文件录音) 已集成了录音,编码,压缩等。...录制的音频文件是经过压缩后的,需要设置编码器。 技术选型,目前行业现状:API多是选用AudioRecord。...(3). channelConfig指定AudioRecord采集几个声道的声音,预设值定义在AudioFormat中,常用值有CHANNEL_CONFIGURATION_MONO(单声道) CHANNEL_CONFIGURATION_STEREO

3.1K10

Android多媒体之认识声音、录音与播放(PCM)

经过麦克风的采集,将声波信号转换为电信号, 电信号波形是原来的声波波形一样的。只是换种物理量来表示传递。(电信号模拟振动信号)。...-----此处是解码,要环编码的配置对应 private static final int DEFAULT_STREAM_TYPE = AudioManager.STREAM_MUSIC;//...= null) { if (audioTrack.getState() == AudioRecord.STATE_INITIALIZED) {...- 2.使用就一句话: PCMAudioPlayer.getInstance().startPlay("/sdcard/pcm录音/20190103140621.pcm") 最后提一下:希望大家分清编码格式....toly的文件用AU(音频编辑器)就打不开,改成.PCM就能打开 现在明白PCM编码.PCM后缀名的区别了吗... ---- 最后来点有意思的: 咳嗽两声用了1.991秒 码率:一个PCM音频流码率

3.4K30

android语音即时通讯之录音、播放功能实现代码

下面开始介绍文件流模式的语音操作: 文件流模式 我们来看录音部分的实现,首先我们实现开始录音的部分: 在正式编码之前,还是需要对其进行一个简要的说明。...如果我们在编码的对录音api进行多线程操作,会导致程序直接闪退,并且我们是无法在java层对其异常进行捕获的。所以,我们必须使用单线程以保证录音的正常运行。...Pulse Code Modulation)编码格式 int audioFormat = AudioFormat.ENCODING_PCM_16BIT; //计算AudioRecord...); //创建AudioRecord对象 mAudioRecord = new AudioRecord(audioSource,sampleRate,channelConfig,...audioFormat); AudioTrack audioTrack = new AudioTrack(steamType,sampleRate,channelConfig,audioFormat

1.2K20

Android多媒体之SoundPool+pcm流的音频操作

---- 一、AudioRecordMediaRecorder,AudioTrackMediaPlayer 0.到现在接触了四个类: 第一天:AudioRecord(录音)、AudioTrack...四类.png ---- 1.AudioRecord(基于字节流录音) 优点: 对音频的实时处理,适合流媒体语音电话 缺点: 输出的是PCM的语音数据,需要自己处理字节数据 如果保存成音频文件不能被播放器播放...---- 2.1:音频来源:int audio_source AudioRecord的基本一致 ? 音频来源.png ---- 2.2:输出格式:int output_format ?...音频编码方式.png ---- 3.AudioTrack AudioTrack只能播放已经解码的PCM流(wav音频格式文件) ---- 3.1:流类型:int streamType ?...播放声道.png ---- 3.4:数据输出格式:int audioFormat 这个AudioRecord一样 ?

2.7K20

实时Android语音对讲系统架构

本文主要包含以下内容: 1、AudioRecordAudioTrack 2、Speex编解码 3、Android语音对讲系统架构 01 AudioRecordAudioTrack AudioRecorder...音频的采集过程要经过抽样、量化编码三步。抽样需要关注抽样率。声音是机械波,其特征主要包括频率振幅(即音调和音量),频率对应时间轴线,振幅对应电平轴线。...编码是一个减少信息量的过程,任何数字音频编码方案都是有损的。PCM编码(脉冲编码调制)是一种保真水平较高的编码方式。在Android平台,44100Hz是唯一目前所有设备都保证支持的采样频率。...sampleRateInHzaudioFormat需与AudioRecord中的参数保持一致,这里不再介绍。...; 02 Speek 编解码 Speex是一个声音编码格式,目标是用于网络电话、线上广播使用的语音编码,基于CELP(一种语音编码算法)开发,Speex宣称可以免费使用,以BSD授权条款(https:/

4.9K40

Android录音并且输出为Mp4文件的方法教程

前言 录音采用的是AudioRecord,通过MediaCodec进行编码,用MediaMuxer合成输出MP4文件。 1....release() audioRecord = null } 这样就把音频数据写入一个bytearray,然后将数据传入AudioEncoder进行编码输出。 2....AudioRecord得到的音频数据格式是pcm的,一般情况下无法bofang(可以通过AudioTrack播放),所以我们需要一次编码转换,这里用到的就是MediaCodec,MediaCodec这里我封装在...编码后,传入MediaMuxer,MediaMuxer写入编码后的数据再讲buffers传给MediaCodec,MediaCodec清空使用过的Buffers,再传给AudioRecord。...调用configure后,我们就进入了configred状态,之后当audiorecord得到数据后,当MediaCodec调用start方法后,将ByteArray传入MediaCodec,进行编码

1.5K10

音视频学习路线(二)

初级 主要学习 Java 层面的一些 API 调用; 比如使用 AudioRecord 进行录音得到 PCM ,使用 AudioTrack 播放 PCM 音频、使用Camera2 采集摄像头数据; 使用...MediaExtractor MediaMuxer API 解析封装 mp4 文件; 使用 MediaCodec 进行硬件编解码等。...中级进阶 主要学习Android音视频NDK开发,OpenlSLOpenGL开源库的使用完成具体demo博客发布,其中包括的内容有: NDK 开发中 Native 与 Java 交互; Android...编译方式; Android OpenSL 录制 PCM 音频数据; Android OpenSL 播放 PCM 数据; Android OpenGL 视频渲染 高级 学习音视频开源库FFmpeg的编译使用...,完成demo内容包括: Android FFmpeg 集成编译; Android FFmpeg音视频编码; Android FFmpeg 音视频解码播放

1.1K70

关于声音采集和声音处理的一些建议

这是原始的数据,会送到native层进行重采样(如果需要的话),音乐解码出来的原始数据进行混音处理,混音之后,开始编码成AVPacket放入Audio Packet Queue,视频统一封装的时候会用到...最后的播放渲染使用的是OpenSL ES框架,也可以使用AudioTrack,不过核心代码都在native层,OpenSL ES方便一点。...我们知道声音有两个重要的属性:sample_rate(采样率)channel(采样频道),声音的标准化就通过这两个决定,当我们编码播放解码出来的音频数据时,就需要将声音的两个属性标准化一下,使得处理之后的音频能够正常的编码或者播放...OpenSL ES播放音频 解码之后的原始音频数据,需要播放渲染出来,Android上可以选择AudioTrackOpenSL ES,我们这里使用的是OpenSL ES,Android引入OpenSL...编码 编码也是消费解码出来的音频数据的另一种方式,编码是解码的逆向过程,将AVFrame编码成AVPacket数据,然后视频流合成一个新的视频。

1.4K20

给Android工程师的音视频开发学习指南

音频一样,也有高层低层的 API,高层就是 Camera MediaRecorder,可以快速实现编码,低层就是直接使用 Camera,然后将采集的数据进行滤镜、降噪等前处理,处理完成后由 MediaCodec...数据编码 4.1 音频编码 Android 中利用 AudioRecord 可以录制声音,录制出来的声音是 PCM 声音,使用三个参数来表示声音,它们是:声道数、采样位数采样频率。...对音频进行编码也可以分为软编硬编两种。软编则下载相应的编码库,写好相应的 JNI,然后传入数据进行编码。硬编则是使用 Android 自身提供的 MediaCodec。...硬编码编码的区别是:软编码可以在运行时确定、修改;而硬编码是不能够改变的。 4.2 视频编码 在 Android 平台上实现视频的编码有两种实现方式:一种是软编,一种是硬编。...AudioRecordAudioTrack。 MediaRecorder。 MediaCodec。 MediaExtractor、MediaMuxer。

1.2K40

Android音频播放(本地网络)绘制数据波形,根据特征有节奏的改变颜色

改变颜色播放输出波形 Android的音频播放与录制 MediaPlayer、MediaRecord、AudioRecord,这三个都是大家耳目能详的Android多媒体类(= =没听过的也要假装听过...、MediaRecord是封装好了的录制与播放,AudioRecordAudioTrack是需要对数据自定义有一定需要的时候用到的。...MP3的波形数据提取 当那位小伙提出这个需求的时候,我就想起了AudioTrack这个类,AudioRecord功能的使用方法十分相似,使用的时候初始化好之后对数据的buffer执行write就可以发出呻吟了...instance audioTrack = new AudioTrack( AudioManager.STREAM_MUSIC, sampleRate,...既然都有数据了,那还愁什么波形,上一期一样直接传┑( ̄Д  ̄)┍入AudioWaveView的List就好啦。

3.2K20

oboe 从使用到源码详解

对于android 有openslaaudio两种api,先看下类结构: WechatIMG7515.jpeg 从类图中可以看到如下几个信息: Oboe 为了低延时更好的兼容性,会根据需要再决策一次硬件参数...,如果设置参数不一样,那么内部就会进行重采样 QuirksManager 内部针对三星高通芯片进行了兼容性处理 接下来看下opensl的open,以采集为例: Result AudioInputStreamOpenSLES...接下来再看下opensl 启动采集的流程,入口是requestStart,Start的区别是前者是异步的: Result AudioInputStreamOpenSLES::requestStart(...break; } ap->mCallbackProtector->exitCb(); } 可以看到回调同样也是来自于ap->mBufferQueue.mCallback,采集一样也是...的低延时机制, 在设计这块,oboeaaudio的设计的很像的。

1.2K20

在Android开发中如何使用OpenSL ES库播放解码后的pcm音频文件?

有以下特性: 提供c语言接口,兼容c++,需要在NDK下开发,可以更好地集成于native应用 运行于native层,需要自己管理资源的申请和释放,没有Dalvik虚拟机垃圾回收机制 支持pcm数据的采集播放...支持播放的音频数据来源广泛,res、assets、sdcard、在线网络音频以及代码中定义的音频二进制数据   Android提供的AudioRecordAudioTrack相比,OpenSL ES...因为AudioRecordAudioTrack都是Android提供的Java API,无论是采集还是播放音频,都需要将音频数据从java层拷贝到native层,或从native层拷贝到java层,这无疑是十分消耗资源的...二.使用OpenSL ES播放pcm音频数据的步骤   开发步骤如下: 创建引擎对象接口 创建混音器对象接口 创建播放器对象接口 创建缓冲队列接口并给缓冲队列注册回调函数 设置播放状态,手动调用回调函数...原因尚未找到,可能是opensl es不支持32位浮点型位深吧。

12310

【Android 音频】“声音”从何而来

这里重点关注 PCM 采样率,因为目前遇到的音频问题都跟这两个有关。 接下来看一张经典的音频采样流程图: ? 以上就是计算机系统中的音频文件的生成过程:采样、量化、编码。...对声音进行采样、量化过程被称为脉冲编码调制(Pulse Code Modulation),简称PCM。...2.1、基本概念 Android 系统提供的录制麦克风方式就两种:MediaRecorder AudioRecord: MediaRecorder:简易模式,调用简单,只有开始、结束,录音之后的文件也是指定编码格式...AudioRecord:原始模式,可以暂停、继续,可以实时获取到 PCM 数据然后进行音视频的混合,也是录屏软件经常使用的接口。 2.2、麦克风内录的另类实现 ?...提供的唯二接口:MediaPlayer AudioTrack,最终都是经过 AudioFlinger 的 AudioStreamOut::write(const void *buffer, size_t

2.1K40
领券