录制 pcm 格式音频步骤:

1. 设置缓冲区大小

2. 初始化AudioRecord

3. 不断读取录音数据并保存至文件中

4. 终止循环,停止录音

完整代码:https://github.com/wuqingsen/AVWuDemo

目录:Android音视频整理

package com.demo.audiowudemo;import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;import java.io.FileOutputStream;
import java.io.IOException;/*** wuqingsen on 2020-05-28* Mailbox:1243411677@qq.com* annotation:Pcm音频录制*/
public class PcmRecordActivity extends AppCompatActivity {private boolean isRecord = false;//是否在录制,默认没在录制private AudioRecordThread audioRecordThread;private Button btnPcm;private String filePath = Environment.getExternalStorageDirectory() + "/" + "cameraWuDemo.pcm";@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_pcm_record);btnPcm = findViewById(R.id.btnPcm);btnPcm.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (isRecord){//停止录制isRecord = false;btnPcm.setText("开始");stopRecord();}else {isRecord = true;btnPcm.setText("停止");//开始录制startRecord();}}});}//开始录制public void startRecord() {isRecord = true;//1.开启录音线程并准备录音audioRecordThread = new AudioRecordThread();audioRecordThread.start();}//停止录制public void stopRecord() {isRecord = false;}private class AudioRecordThread extends Thread {private AudioRecord audioRecord;private int bufferSize;AudioRecordThread() {/*** 1.设置缓冲区大小* 参数:采样率 16k; 通道数 单通道; 采样位数*/bufferSize = AudioRecord.getMinBufferSize(16000,AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT * 1);/*** 2.初始化AudioRecord* 参数:录音来源 麦克风; 采样率 16k; 通道数 单通道 ;采样位数/数据格式 pcm; 缓冲区大小*/audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, 16000,AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);}@Overridepublic void run() {super.run();FileOutputStream fos = null;try {fos = new FileOutputStream(filePath);audioRecord.startRecording();byte[] byteBuffer = new byte[bufferSize];while (isRecord) {//3.不断读取录音数据并保存至文件中int end = audioRecord.read(byteBuffer, 0, byteBuffer.length);fos.write(byteBuffer, 0, end);fos.flush();}//4.当执行stop()方法后state != RecordState.RECORDING,终止循环,停止录音audioRecord.stop();} catch (Exception e) {} finally {try {if (fos != null) {fos.close();}} catch (IOException e) {}}}}
}

使用AudioRecord录制pcm格式音频相关推荐

  1. Android 音视频开发(一) -- 使用AudioRecord 录制PCM(录音);AudioTrack播放音频

    前言,音视频这块,确实比较难入门,本着学习的态度,我这边也跟着 Android 音视频开发入门指南 打怪升级,留下个脚印,大家共勉. 音视频 系列文章 Android 音视频开发(一) – 使用Aud ...

  2. pcm 降采样_Android_android downsample降低音频采样频率代码,使用Android AudioRecord 录制PCM文 - phpStudy...

    android downsample降低音频采样频率代码 使用Android AudioRecord 录制PCM文件,android SDK保证在所有设备上都支持的采样频率只有44100HZ, 所以如 ...

  3. Android使用AudioRecord录制PCM音频、PCM转AAC、使用MediaRecorder直接录制AAC编码音频

    Android为我们提供了两个音频处理的API:AudioRecord和MediaRecorder AudioRecord:偏底层的api MediaRecorder:对AudioRecord进行包装 ...

  4. Android 音视频开发(一):PCM 格式音频的播放与采集

    什么是 PCM 格式 声音从模拟信号转化为数字信号的技术,经过采样.量化.编码三个过程将模拟信号数字化. 采样 顾名思义,对模拟信号采集样本,该过程是从时间上对信号进行数字化,例如每秒采集 44100 ...

  5. Android AudioRecord录制PCM以及转换为wav和mp3

    Android AudioRecord录制PCM以及转换为wav和mp3 1.录制pcm pcm介绍 pcm是指音频裸数据是脉冲编码调制数据.描述一段PCM数据通常以下几个概念: 量化格式(Sampl ...

  6. window API播放pcm格式音频文件,函数waveOutOpen等

    之前在我的博客中有一篇关于编写录音器的代码,可保存为pcm和wav格式,说白了其实两者是一个东西,只不过wav比pcm多了一个文件头,这个文件头一共占了44个字节.此处这个不是重点,重点是如何编写程序 ...

  7. Java实现PCM格式音频转MP3或WAV

    最近做语音合成的项目,需要把PCM格式的音频文件转换成MP3或WAV,记录一下. Java实现的PCM格式音频文件转换MP3格式 import java.io.FileInputStream; imp ...

  8. AudioTrack播放pcm格式音频

    AudioTrack播放pcm格式音频 package com.zero.demo;import android.content.Context; import android.media.Audio ...

  9. 音视频开发系列(27)AudioRecord录制PCM音频

    目录 音频采集API AudioRecord和MediaRecorder介绍 PCM的介绍 AudioRecord的使用(构造.开始录制.停止录制.其他细节点) ffplay播放pcm pcm转为wa ...

  10. 音视频开发之旅(二)AudioRecord录制PCM音频

    目录 音频采集API AudioRecord和MediaRecorder介绍 PCM的介绍 AudioRecord的使用(构造.开始录制.停止录制.其他细节点) ffplay播放pcm pcm转为wa ...

最新文章

  1. python模块引用
  2. .net 遍历数组找重复值写入一个新数组_面试 | 数组类算法精析
  3. PHPStorm配置使用Git
  4. linux java maven项目_Java maven项目在window下运行正常,部署到Linux环境中启动报错,是由什么引起的?...
  5. nullable field verification in gateway backend
  6. MYSQL账户管理及主要操作
  7. cassandra hbase_弥补MySQL和Redis短板:看HBase怎么确保高可用
  8. AI学习笔记(十一)CNN之图像识别(下)
  9. iptables的nat规则骚操作
  10. 【noip2013】d2解题报告
  11. 关于ubuntu20.04通过Software and updates安装NVIDIA驱动
  12. python提高for循环速度_提升Python运行效率的小窍门
  13. 开题报告(3.研究的思路、过程与方法)
  14. 树莓派linux谷歌浏览器设置,可以挂在墙上的树莓派谷歌日历,树莓谷歌
  15. 2020年国赛A题目思路(高教杯全国大学生数学建模竞赛)
  16. 地图对接汇总(百度地图)
  17. 当当海航互相选择的背后:或是一个双赢局
  18. 隔行换色并且鼠标指向行变色的表格
  19. 白加黑加载方式_基层干部白加黑的工作方式不可取
  20. i9级E52450处理器_原来同型号处理器后缀字母不同性能差异会这么大

热门文章

  1. 事件处理方式on、addEventListener和attachEvent
  2. Rainmeter雨滴天气-(永不过时版通过获取网页数据实现)
  3. 完美解决netkeeper 错误代码137
  4. 奇迹1.03H服务端开服架设文件Data文件详解
  5. 惠普打印机双击之后没有扫描_安装hp laserjet m1005 mfp打印机驱动后,双击我的电脑里怎么没有扫描图标呢??...
  6. java毕业设计宠物店管理系统设计与实现源码+系统+数据库+lw文档+调试运行
  7. c语言5的阶乘流程图_求n流程图(求n的阶乘的算法框图)
  8. leetcode剑指offer合集+题解
  9. mysql安装方法及使用
  10. zabbix详解(感觉作者写的有点乱,但是很详细,所以转载下来,用过zabbix一段时间后复习用)