【问题标题】:How to record Ultra low size audio on Android如何在 Android 上录制超低尺寸音频
【发布时间】:2014-08-06 07:44:48
【问题描述】:

我尝试在 MediaRecorder 中使用 AMR_NB 编码器和 3gp 输出格式,但文件大小相当低(60 秒音频为 104KB)。但是对于我的应用程序(低带宽不可靠网络上的音频聊天,尤其是对于第三世界),我需要更小的音频大小。

我尝试使用以下选项以及 AMR_NB 编码器、3gp 输出格式和 setAudioChannels(1) -

一个。 setAudioSamplingRate(8000) 和 setAudioEncodingBitRate(4750)

b. setAudioSamplingRate(4000) 和 setAudioEncodingBitRate(4000)

c。 setAudioSamplingRate(2000) 和 setAudioEncodingBitRate(2000)

但是,无论是否使用上述任何选项,音频文件大小都保持不变。

我的问题如下-

1.为什么没有任何选项对文件大小有任何影响?

2。我应该怎么做才能减小文件大小(当然要牺牲音质)?

作为比较,Facebook Messenger 将 90KB 的 60 秒音频录制为 .mp4 文件。

recorder = new MediaRecorder();

recorder.setAudioChannels(1);
recorder.setAudioSamplingRate(8000);

recorder.setAudioEncodingBitRate(4750);

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

【问题讨论】:

    标签: android audio audio-recording mediarecorder bitrate


    【解决方案1】:

    查看官方文档:http://developer.android.com/reference/android/media/MediaRecorder.html

    上面说,对于 AMR_NB,setAudioSamplingRate()支持 8000 Hz!

    你能发布一些你的代码吗?了解您的问题可能会有所帮助。

    编辑:尝试以 AAC 格式录制 - 例如 Facebook Messenger。我认为你不会用 AMR_NB/3GP 做更小的尺寸。

    【讨论】:

    • 这就是为什么,我首先尝试将采样率保持为 8000 Hz,并且仅将编码比特率降低到 4750 bps。但即使这样也没有任何效果。文档 (developer.android.com/guide/appendix/media-formats.html) 说 AMR_NB 支持从“4.75 到 12.2 kbps”的编码速率。根据您的说明在问题中添加了代码。谢谢:)
    【解决方案2】:

    如果检测到错误,Android 编码器会覆盖程序员的参数。 AMR_NB 仅适用于 8000 Hz 和 1 个通道,因此如果您设置不同的值,例如 4000 Hz 或 2 个通道,编码器会默默地将它们改回 8000 和 1。

    如果将音频采样率降低到 8000 以下,人声将变得无法辨认。

    对于较低的采样率,您必须使用 AudioRecord 类,因为它可以让您低至 4000 Hz。

    要获得更高的压缩率,您将不得不使用不同的编码器,或者自己编程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-03
      • 2021-06-14
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      • 2011-07-26
      相关资源
      最近更新 更多