【问题标题】:Mediarecorder setParameter failed (setAudioSamplingRate)Mediarecorder 设置参数失败 (setAudioSamplingRate)
【发布时间】:2013-04-29 08:43:02
【问题描述】:

我尝试构建一个包含录制功能的应用程序。我希望用户能够选择录制质量,其中一个选项是 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

【问题讨论】:

  • 96 kHz 是一个非常高的采样率,不保证支持。我建议您尝试使用
  • 我尝试将其设置为 16000,不返回初始错误,而是返回另一个.. 以下错误:04-29 12:15:09.989: E/MediaRecorder(23954): prepare failed : -2147483648 04-29 12:15:09.989: E/com.test.com.AudioRecorder(23954): 准备失败。

标签: android audio parameters mediarecorder sampling


【解决方案1】:

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

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

Android 设备中的位深度通常为 8。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 2017-03-29
    • 2016-12-30
    • 2012-07-30
    • 2012-06-30
    相关资源
    最近更新 更多