【问题标题】:which audio format to use in android to store recording在android中使用哪种音频格式来存储录音
【发布时间】:2014-06-22 22:10:31
【问题描述】:

我正在开发从麦克风录制声音的应用程序,目前我正在将录制的音频存储在波形文件中,但波形的大小正在成为一个问题。

我才知道android没有mp3解码器是真的吗?我将如何以压缩形式存储录制的音频?

我正在使用 AudioRecord 类进行录制,不想使用 MediaRecorder。

【问题讨论】:

  • 这取决于你要在哪里播放这些文件?它也是 Android 设备还是 PC?
  • 在各种移动设备上..
  • 我也有同样的问题。你有没有找到任何尺寸的解决方案?目前我使用的是低质量的 .3GP。

标签: java android audio audio-recording


【解决方案1】:

没有 Mp3 解码器,但所有 android 版本都支持的默认格式是 .mgp 和 .amr 格式,默认使用 MediaPlayer 和 AudioPlayer 类播放

注意:不保证所有玩家都支持这个扩展,如果不是安卓设备的话

【讨论】:

  • 那么我必须做些什么来减小我的波形文件的大小?如何将它们转换为 .amr 格式?
【解决方案2】:

使用 AudioRecord 并没有太多选择。它仅以 PCM 格式存储音频。您只能通过将通道配置设置为 CHANNEL_IN_MONO 并将音频格式设置为 ENCODING_PCM_8BIT 来减小大小。此外,您可以尝试扩展 AudioRecord 类并覆盖 read() 方法。然后您必须自己转换音频,但不建议这样做。

我知道您不希望这样做,但最好的选择是重构您的代码以使用 MediaRecorder。以下是参考文档中的示例:

MediaRecorder recorder = new MediaRecorder();
 recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
 recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
 recorder.setOutputFile(PATH_NAME);
 recorder.prepare();
 recorder.start();   // Recording is now started
 ...
 recorder.stop();
 recorder.reset();   // You can reuse the object by going back to setAudioSource() step
 recorder.release(); // Now the object cannot be reused

在这个网站http://developer.android.com/guide/appendix/media-formats.html#core 上,您有一个很好的表格,展示了考虑到 Android 版本的所有支持的格式。试试这些 AAC LC、AMR-NB、AMR-WB。除了尺寸检查质量。

【讨论】:

  • 使用 MediaRecorder 时的问题是,我想实现播放-暂停-恢复-停止功能。使用 MediaRecorder 很难实现。
  • 没错,如果你这样做,你最终会得到多个音频文件。您可以在最后合并此文件,也可以考虑将您的录音共享为包含记录部分的文件夹。按顺序播放它们会很容易。
猜你喜欢
  • 1970-01-01
  • 2010-11-08
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
  • 2014-02-13
  • 1970-01-01
  • 2012-06-09
相关资源
最近更新 更多