android - Mediarecorder 设置参数失败 (setAudioSamplingRate)

标签 android audio parameters mediarecorder sampling

我尝试构建一个有录音功能的应用程序。我希望用户能够选择录音质量,其中一个选项是 AAC 录音。我正在使用下面的代码,但我在设置 audioSamplingRate 时不断出错。有什么想法吗?

mediaRecorder = new MediaRecorder();
                    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
                    mediaRecorder.setAudioSamplingRate(96000);
                    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

和错误
04-29 10:32:17.477: E/MediaRecorder(18750): setParameters(audio-param-sampling-rate=96000) failed: -22
04-29 10:32:17.477: E/com.test.com.AudioRecorder(18750): setParameter failed.
04-29 10:32:17.477: E/com.test.com.AudioRecorder(18750): prepare() method called on illegal state

最佳答案

设备不支持每个音频采样率。所以,如果它不受支持,它将给出错误或内部剪辑以使其适合。为了质量,您可以使用采样率设置音频编码比特率。根据其录音机文档,所有 android 设备都支持 44100 采样率。您可以使用比特率根据你的需要。这个公式可以帮助你

比特率=(采样率)×(比特深度)×( channel 数)

位深度在安卓设备中一般为 8。

关于android - Mediarecorder 设置参数失败 (setAudioSamplingRate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16274515/

相关文章:

android - 如何使用接近传感器和音频管理器减少Android设备中的音量

android - Android SIP根本没有音频

audio - 在哪里可以找到游戏的免费音效?

java - 如何最小化 Maven POM.XML 文件

vba - 将数组传递给 ParamArray

android - 实现 OnLongClickListener 时 ExpandableListView 不扩展

java - 潜在的空指针访问: The variable stream may be null at this location

java - Firebase 数据返回 null

android - 设置 MapFragment 缩放限制

php - 为什么配置数组在 PHP 和 Javascript 中是可接受的参数?