志不强者智不达,言不信者行不果。这篇文章主要讲述使用android AudioRecord获得32位样本吗?相关的知识,希望能为你提供帮助。
我一直在进行大量研究,找不到很多与此有关的信息。我想使用android AudioRecorder录制音频样本,但我不知道如何以32位格式进行录制。我还使用AudioTrack来“监视”麦克风并在录制时收听音频,但是如果我将AudioManager和AudioTrack设置为ENCODING_PCM_FLOAT
,则音频实际上为空,那么我什么也听不到。
所以问题是如何在AudioFormat.ENCODING_PCM_FLOAT
中同时录制和收听32位样本,以便获得最佳质量的音频。
这是我如何使用AXET Audio Library初始化AudioRecord的快速外观:
final AudioRecord recorder = Sound.createAudioRecorder(context, sampleRate, ss, 0);
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
final int maxJitter = AudioTrack.getMinBufferSize(sampleRate,AudioFormat.CHANNEL_OUT_MONO,AudioFormat.ENCODING_PCM_16BIT);
audioTrack = new AudioTrack(AudioManager.MODE_IN_COMMUNICATION,sampleRate,AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_FLOAT,maxJitter, AudioTrack.MODE_STREAM);
audioManager.setSpeakerphoneOn(false);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
在线程内部,我只是将缓冲区写入audioTrack:
audioTrack.write(buffer,0,bufferSize);
我的缓冲区是一个short []数组。
【使用android AudioRecord获得32位样本吗()】最后,我运行线程并播放曲目,正如我在PCM_16BIT中所说的那样,效果很好,但在PCM_FLOAT中却没有:
thread.start();
audioTrack.play();
因此,如果有人有32位录制的经验,我将不胜感激。谢谢。
答案使用ENCODING_PCM_FLOAT时是否将短数组更改为浮点型?当使用32位编码时,还有另一种从AudioRecord读取数据的方法:
read(float[] audioData, int offsetInFloats, int sizeInFloats, int readMode)
推荐阅读
- javax.faces.application.ViewExpiredException(无法恢复视图)
- 使用从Jackson创建的对象在Android上使用OrmLite保存子集合
- Doctrine异常 - [DoctrineORMMappingMappingException]
- 如何更改UWP app文件夹名称或路径()
- 是否可以在没有管理员权限的情况下安装.appxbundle(UWP / XAML应用程序)()
- PrimaryLanguageOverride在发布appxbundle中不起作用
- 如何在android中的接口回调内部传输数据
- 在ASP.NET MVC App中初始化AutoMapper v6时出错
- 可捕获的致命错误(类Proxies的对象 __ CG __AppBundleEntityModelo无法转换为字符串)