首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MediaRecorder能否在Android中将声音保存为mp3或m4a音频格式文件,自动基于文件扩展名?

MediaRecorder能否在Android中将声音保存为mp3或m4a音频格式文件,自动基于文件扩展名?
EN

Stack Overflow用户
提问于 2021-04-07 03:17:37
回答 1查看 420关注 0票数 3

下面的代码A来自示例项目

它使用代码B记录语音并将其保存为文件。

码B

代码语言:javascript
复制
setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
setAudioEncoder(MediaRecorder.AudioEncoder.AAC)

您知道,getExtensionText()将返回两种音频格式,mp3或m4a由用户设置,有不同的音频格式。

我不知道为什么作者只能使用代码B生成两个不同的音频格式文件。

MediaRecorder能否在Android中将声音保存为mp3或m4a音频格式文件,自动基于文件扩展名?

码A

代码语言:javascript
复制
    // mp4 output format with aac encoding should produce good enough m4a files according to https://stackoverflow.com/a/33054794/1967672
    private fun startRecording() {
        val baseFolder = if (isQPlus()) {
            cacheDir
        } else {
            val defaultFolder = File(config.saveRecordingsFolder)
            if (!defaultFolder.exists()) {
                defaultFolder.mkdir()
            }

            defaultFolder.absolutePath
        }

        currFilePath = "$baseFolder/${getCurrentFormattedDateTime()}.${config.getExtensionText()}"
        recorder = MediaRecorder().apply {
            setAudioSource(MediaRecorder.AudioSource.CAMCORDER)
            setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
            setAudioEncoder(MediaRecorder.AudioEncoder.AAC)
            setAudioEncodingBitRate(128000)
            setAudioSamplingRate(44100)

         ...

      }



  class Config(context: Context) : BaseConfig(context) {
    ...

   
    fun getExtensionText() = context.getString(when (extension) {
        EXTENSION_M4A -> R.string.m4a
        else -> R.string.mp3
    })
 }
EN

回答 1

Stack Overflow用户

发布于 2021-04-16 18:13:59

实际上,他们已经在SettingsActivity.kt中定义了文件扩展名,但是您可以在扩展名中使用文件名。实际上,在这段代码中,您可以使用支持的媒体格式的任何扩展。

代码语言:javascript
复制
        mediaRecorder = MediaRecorder()
        output = Environment.getExternalStorageDirectory().absolutePath + "/recording.mp3"

        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC)
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC)
        mediaRecorder.setOutputFile(output)

有关完整代码,请参阅这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66979105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档