录制音频后 播放速度变快

  • 录制音频文件
      • 创建实例
      • 录音
      • 存储
    • 遇见的问题

录制音频文件

我使用aduiorecord录制pcm文件 录制代码如下

创建实例

mAudioRecorder = new AudioRecord(mRecorderBuilder.mAudioSource,sample_rate,channel_config, format,mRecorderBuilder.bufferSize);

其中参数含义


private int mAudioSource = MediaRecorder.AudioSource.VOICE_COMMUNICATION;//自动降噪,也尝试过 MICprivate int mSampleRate = SAMPLE_RATE_44K_HZ;//44100private int mChannelConfig = AudioFormat.CHANNEL_IN_MONO;//单声道private int mAudioFormat = AudioFormat.ENCODING_PCM_16BIT;//每次采样位数mRecorderBuilder.bufferSize//缓冲区大小,其值大于 用AudioRecord.getMinBufferSize(sample_rate, channel_config, format) 获取的最小值

录音


//mPcmBuffer.size就是上面的mRecorderBuilder.bufferSize 大小
//private short[] mPcmBuffermAudioRecorder.read(mPcmBuffer, 0, mPcmBuffer.length);

存储

我是通过随机存储文件对象,进行数据的存储.
由于需要存储为wav格式的文件,因此需要写头文件.
头文件中需要计算 当前录音的格式 数据
第一次写,网上找的格式写的1

RandomAccessFile rand = new RandomAccessFile(saveFile, "rw");RandomAccessFile rand = randomAccessFile;long totalDataLen = totalAudioLen + 36;rand.seek(0);byte[] header = new byte[44];header[0] = 'R'; // RIFF/WAVE headerheader[1] = 'I';header[2] = 'F';header[3] = 'F';header[4] = (byte) (totalDataLen & 0xff);header[5] = (byte) ((totalDataLen >> 8) & 0xff);header[6] = (byte) ((totalDataLen >> 16) & 0xff);header[7] = (byte) ((totalDataLen >> 24) & 0xff);header[8] = 'W';header[9] = 'A';header[10] = 'V';header[11] = 'E';header[12] = 'f'; // 'fmt ' chunkheader[13] = 'm';header[14] = 't';header[15] = ' ';header[16] = 16; // 4 bytes: size of 'fmt ' chunkheader[17] = 0;header[18] = 0;header[19] = 0;header[20] = 1; // format = 1header[21] = 0;header[22] = (byte) (nChannels & 0xff);header[23] = (byte) ((nChannels >> 8) & 0xff);header[24] = (byte) (sampleRate & 0xff);//采样率header[25] = (byte) ((sampleRate >> 8) & 0xff);header[26] = (byte) ((sampleRate >> 16) & 0xff);header[27] = (byte) ((sampleRate >> 24) & 0xff);header[28] = (byte) (byteRate & 0xff);//取八位header[29] = (byte) ((byteRate >> 8) & 0xff);header[30] = (byte) ((byteRate >> 16) & 0xff);header[31] = (byte) ((byteRate >> 24) & 0xff);int b = weikuan * nChannels / 8;//每次采样的大小header[32] = (byte) (b & 0xff); // block alignheader[33] = (byte) ((b >> 8) & 0xff);header[34] = (byte) (weikuan & 0xff);header[35] = (byte) ((weikuan >> 8) & 0xff);header[36] = 'd';//dataheader[37] = 'a';header[38] = 't';header[39] = 'a';header[40] = (byte) (totalAudioLen & 0xff);header[41] = (byte) ((totalAudioLen >> 8) & 0xff);header[42] = (byte) ((totalAudioLen >> 16) & 0xff);header[43] = (byte) ((totalAudioLen >> 24) & 0xff);rand.write(header, 0, 44);

写完之后将写入pcm数据流 我这里分装了一个对象,单独开了一个写文件线程.
通过handler 开启工作线程(之前的录音也是一个单独的线程具体看demo)

saveFileThread = new SaveFileThread();saveFileThread.start();saveHandler = new SaveFileThread.SaveHandler(saveFileThread);
if (msg.what == SAVEING) {saving = true;while (saveFileThread.doWork() > 0) ;
//                  Log.e(SaveFileThreadTAG, "收到 msg");saving = false;} else if (msg.what == STOP) {saveFileThread.finish();removeCallbacksAndMessages(null);getLooper().quit();}
         SaveTask remove = saveDatas.remove(0);int mSize = remove.mSize;saveFile.saveByet(remove.saveData, 0, mSize);

至此wav文件录制完毕

遇见的问题

录出来的wav文件,播放时 语速非常快, 感觉是快进了两倍.
找了很多原因都找不到,网上搜了几天,无果.只有一篇帖子很像2

但是该帖子并没有解决我的问题

特此发帖,一方面是记录一下自己的demo
二来,希望哪位大神可以帮我看一下,我的demo到底出了说明问题

ps :demo中还实现了 lame库 将 pcm格式转换为mp3 格式的文件.使用 pcm格式文件转换可以正常使用

我的demo地址 https://github.com/MartinLi89/myrecorder.git


  1. wav头文件说明(https://blog.csdn.net/hsy12342611/article/details/80075836) ↩︎

  2. 帖子https://blog.csdn.net/marller/article/details/52882387 ↩︎

关于android 使用audiorecord 录制pcm文件 音频速度变快的问题求教相关推荐

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

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

  2. Android使用AudioRecord录制pcm音频原始数据以及使用AudioTrack播放

    https://github.com/z13538657403/Android_PCM_Record_Play

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

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

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

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

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

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

  6. Android使用lame将PCM文件转码为MP3文件

    Android使用lame将PCM文件转码为MP3文件 1. 软件版本 Android Studio版本:4.2 lame版本:3.100 编译参考:centos7使用ndk编译lame 2. 项目配 ...

  7. Android 使用AudioRecord录音相关和音频文件的封装

    在Android中录音可以用MediaRecord录音,操作比较简单.但是不够专业,就是不能对音频进行处理.如果要进行音频的实时的处理或者音频的一些封装 就可以用AudioRecord来进行录音了. ...

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

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

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

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

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

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

最新文章

  1. SAP MM 移动平均价的商品发票价格和采购订单价格差异的处理
  2. 精简 opencv python_01_opencv_python_基本图像处理
  3. 解决pip使用异常No module named 'pip'
  4. String(byte[] bytes, int offset, int length)
  5. silverlight DataPager控件
  6. 设计模式-适配器模式(Adapter)
  7. 【狂神说Redis】总集篇
  8. CAD盗图木马分析与处置策略
  9. Java Swing Mysql学生签到考勤系统
  10. i7 9750h和i5 9400参数对比哪个好
  11. 猴子也能学会的jQuery第七期——jQuery动画(上)
  12. Layui表格实现显示空白行数据
  13. 显著性检验的“前世与今生”
  14. 地图开发技术报告(百度地图)
  15. eNSP三层架构实验
  16. 2021: E2E-VLP: End-to-End Vision-Language Pre-training Enhanced by Visual Learning
  17. 【0】STM8——————STVD编译工具安装与程序下载
  18. spirng: srping mvc配置(访问路径配置)搭建SpringMVC——最小化配置
  19. 命令行计算机ipconfig,ipconfig命令,详细教您ipconfig命令怎么使用
  20. win10鼠标灵敏度怎么调_win10系统怎么调鼠标灵敏度

热门文章

  1. MATLAB 插值+计算离散点曲率
  2. kali WEP 破解
  3. html表ge模板_40多个漂亮的网页表单设计实例
  4. 学计算机要具备什么能力,具备什么特质能学计算机
  5. 头歌java 实训 答案 代码 java入门
  6. Visio绘制维恩图举例
  7. ibmr系列服务器怎么装架子,R440/R540/R640/R740 R820 R930 DELL服务器导轨 滑轨 支架 理线架...
  8. 计蒜客习题:猴子打字
  9. 【蓝桥杯】枚举,模拟,排序专题 (一)
  10. Python数据分析实战之北京二手房房价分析