我有一些关于如何录制麦克风输入的示例代码。据我了解,需要提供输出文件:
public void MediaRecorderReady(){
mediaRecorder=new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
mediaRecorder.setOutputFile(AudioSavePathInDevice);
}
如果这是真的,我认为有一些考虑因素,比如可用的内存(不知道录音的数量等等)。
是否可以让Android分配内存,并将麦克风输入 - 收集字节记录到变量中,并将其作为blob写入db?
另外,在播放blob字段时是否可以使用.wav转换方法?
答案 0 :(得分:2)
由于结果文件的大小,使用BLOB存储音频可能会限制时间。让我们说每分钟300k,然后20分钟左右,你可以达到你能够从存储数据中提取的最大值,因为A Cursor窗口的限制为2mb。 (您可以存储大型BLOBS,您无法使用SQLite3 API而不是使用内置的SQLiteDatabase例程来检索它们。)
存储大数据的推荐方法是将数据存储为普通文件,然后将路径存储在数据库中。
基于Internal Versus External BLOBs in SQLite,与保存到文件系统相比,可以更有效地保存高达100k的BLOBS。
您可能还想考虑35% Faster Than The Filesystem。
关于转换为.wav,这可能会引起您的兴趣JLayer project: MP3 decoder/player/converter library for Java™ platform.