android - 无法让 mediarecorder 以高采样率录制
问题描述
对于一个项目,我需要制作一个 android 应用程序以高采样率(例如每毫秒 10 个样本)记录声音幅度。由于某种原因,应用程序的输出仅每 10 毫秒或更短时间返回一个样本。
mediaRecorder=new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setAudioEncodingBitRate(128000);
mediaRecorder.setAudioSamplingRate(96000);
mediaRecorder.setOutputFile(AudioSavePathInDevice);
我通过存储我的时间和幅度数据来确定这一点。
我存储了振幅数据和时间数据
final Runnable updateSoundLevel = new Runnable() {
@Override
public void run() {
if (SoundRecording==true){
handler.postDelayed(this, 0);
Amplitude = mediaRecorder.getMaxAmplitude();
longTime= (System.nanoTime()-startTime)/1000000;
int intTime=(int) longTime;
listAmplitude.add(Amplitude);
listTime.add(intTime);
addEntry(intTime,Amplitude); // adding entry to graph
... rest of program
解决方案
我发现了错误,
向我的图表添加条目的过程太长。
推荐阅读
- plugins - 以某种方式一直到 buildHook 的自定义字段?
- symfony - Querybuilder Doctrine groupBy 触发错误 sql_mode=only_full_group_by
- hyperledger-fabric - 如何使用安装在同一个 Fabric 通道中的两个链码?
- node.js - 与 NodeJS / Express 中的一个标签可能有变化的 2 个对象相乘
- reactjs - 在反应表中冒泡选择
- python - 在 TensorFlow (Lite) 中使用 GluonCV 模型
- swift - 是否可以使用 JetBrains AppCode 在 Windows 上编写 Swift 代码?
- java - Spring Boot 千分尺计数已取消
- python - Python:我在哪里可以找到像 Anaconda Navigator 的“gf”这样的软件包,我该如何安装它们?Python 3.6 版
- javascript - 如何动态地将元素添加到对象数组中?