java - 如何提取部分录制的音频字节
问题描述
我将声音录制到字节数组,见下文:
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
recorder.setAudioSamplingRate(44100);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setAudioEncodingBitRate(1024*1024);
...
while (hasRecording) {
try {
int read = inputStream.read(data, 0, data.length);
if (read == -1)
break;
byteArrayOutputStream.write(data, 0, read);
byteArrayOutputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
通过记录,我正在将幅度绘制到图表中(动态)。停止录制后,用户可以选择图表的一部分。现在,如何通过用户选择提取部分字节数组?我只有位置选定的坐标和已完成录制声音的字节数组。我知道,我必须用比特率计算获取字节数组中的位置,但我不知道如何。
谢谢。
解决方案
如果数组大小为 N 并且包含 T 秒的音频数据(从 t=0 到 t=T),则时间 t 的数据将位于索引 t*N/T 处。
推荐阅读
- python - 从 python 控制 Thorlabs PM100USB
- python - 如何创建 3 个简单的函数来返回孤立的字符、返回重复的字符并返回删除了#comment 的字符串?
- python-3.x - 如何在 Windows 中为桌面创建 kivy 应用程序?
- react-navigation - 有没有办法查看 React Navigation v5 的导航堆栈中是否存在屏幕/路线?
- python - 使用正则表达式在python中重命名文件
- c++ - ROS CPP Snap7 Linux - CMake 未链接到 lib
- ios - Xcode 我的应用程序无法在 iPad 模拟器中运行,但可以在 iPhone 模拟器中运行
- spring - 无法实例化 [org.nvkr.Triangle]:构造函数是否可访问?嵌套异常是 java.lang.IllegalAccessException:
- python - gitpython:如何认证为 Github 应用程序?
- css - 如何在 CSS 中制作轨道?