在 Android 中使用 AudioRecorder/MediaRecorder 录制 FLAC 音频

Posted

技术标签:

【中文标题】在 Android 中使用 AudioRecorder/MediaRecorder 录制 FLAC 音频【英文标题】:Recording FLAC audio using AudioRecorder/MediaRecorder in Android 【发布时间】:2017-08-24 06:09:58 【问题描述】:

有什么方法可以在 android Studio 中使用 MediaRecorder 的 AudioRecorder 以 FLAC 或 WAV 格式录制音频。如果没有,还有其他方法吗? 根据此链接,Android Studio 支持这些类型的文件格式,但我似乎找不到合适的输出格式和音频编码器。 https://developer.android.com/guide/topics/media/media-formats.html

【问题讨论】:

github.com/midnightskinhead/audioboo-android/blob/master/src/fm/… 旧安卓项目。具有集成的 flac 记录器和编解码器 - 以及使用 android.mk 构建旧版 JNI/NDK 的集成资产 github.com/midnightskinhead/audioboo-android/blob/master/jni/… 来自同一项目的 FLAC 编码器。 github.com/wariotx/flac-app/blob/master/jni/Android.mkflac 包的同一个项目 makefile .. 注意底部的 2 个 cpp 文件,因为它们在 jni 界面中很重要。用于媒体的 Android API 将解码 FLAC。这将是您真正需要的编码器,或来自 make 的 jni/FLACStreamEncoder.cpp。 【参考方案1】:

如果您在支持 jni/ndk 的 android 项目中安装 open、jni FLAC 模块,那么您可以使用 FLAC 编码器进行录制。请注意,您需要完全合并所有低级 jni 集成(为 jni/ndk/android 构建制作文件)。在您的 IDE 中,这可能是很多/太多额外的开发工作。

如果您想继续,只需 google “jni/FLACStreamEncoder.cpp”...

你想出了一些像这样的好结果example code

2015 年的示例 git 项目应该向您展示一种在几年前有效的方法,将 jni/flac 模块带入您的项目。请记住,从那时起,您的 IDE ( AS ) 在 jni/ndk 集成领域发生了很大变化。

在 AS 中,您很可能必须恢复到保留/利用现有“make”文件的传统构建模式,而不是自动配置整个构建界面。

【讨论】:

【参考方案2】:

根据你给我们的链接,你不能用安卓设备在 FLAC 中录制,你不能在 WAV 中录制。您可以做的是录制 3GPP(手机音频格式),然后将其转换为 WAV。 Here 是一段很好的转换代码。

【讨论】:

以上是关于在 Android 中使用 AudioRecorder/MediaRecorder 录制 FLAC 音频的主要内容,如果未能解决你的问题,请参考以下文章

AudioRecord缓冲区在android中消失

Android AudioRecord 问题?

Android 音频录制-AudioRecord

在 Android 上使用 AudioRecord 和 MediaCodec 编码 AAC 音频

Android 调用未初始化的 AudioRecord 错误

Android技术分享| Android WebRTC 对 AudioRecord 的使用