【问题标题】:Android: possible directly microphone save to SQLite, without read / write a temporary file?Android:可以直接将麦克风保存到 SQLite,而无需读取/写入临时文件?
【发布时间】:2018-11-26 19:02:52
【问题描述】:

我有一些关于如何记录麦克风输入的示例代码。据我了解,需要提供输出文件:

    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 写入数据库?

另外,在播放 blob 字段时是否可以使用转换为 .wav 的方法?

【问题讨论】:

    标签: android sqlite audio audio-recording microphone


    【解决方案1】:

    由于生成文件的大小,使用 BLOB 存储音频可能会受到时间限制。假设每分钟 300k,然后大约 20 分钟,由于光标窗口的限制为 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.

    【讨论】:

    • 非常感谢,从我了解到的答案中,我确信我会将音频保存到文件系统中,并将路径保存到数据库中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 2011-10-21
    • 2023-03-12
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多