【问题标题】:converting or creating audio file in mp3 or wav在 mp3 或 wav 中转换或创建音频文件
【发布时间】:2014-06-02 06:48:59
【问题描述】:

我在 android 应用程序中录制用户的声音,稍后我将其上传到服务器上,但服务器只接受 .mp3、.wav 和 .gsm(8000 Hz,单声道)在服务器上播放声音我正在使用mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP),以便我的文件保存为 .3gp。

因为服务器是第 3 方,我们无权访问它,所以我需要转换或录制 mp3/wav 或 gsm 格式的文件。

但我不知道如何在 mp3 或 wav 中转换或录制文件,android 中有没有办法做到这一点

到目前为止,我正在使用以下代码 mRecorder = new MediaRecorder();

    mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    mRecorder.setOutputFile(mFileName);
    mRecorder.setAudioEncoder(AudioEncoder.AMR_NB);

【问题讨论】:

  • 您还没有说明服务器支持哪些编解码器。但是如果我们假设 mpeg-1 layer-3、gsm 06.10 和未压缩的 PCM,那么 AMR_NB 显然是行不通的。您最好的选择可能是将 mp3 或 gsm 06.10 编码器与您的应用程序捆绑在一起(请记住,可能会涉及版税),使用 AudioRecord 类录制未压缩的 PCM,使用捆绑的编码器对音频进行编码,然后将其上传到服务器。如果带宽不是问题,您可以在 PCM 数据上添加 RIFF 标头以获取 WAV 文件并上传,而无需对数据进行编码。
  • 你能告诉我如何从 AMR 获取 WAV 文件吗?在安卓中

标签: android audio


【解决方案1】:

清单权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />

private MediaRecorder recorder ;
public static final int SAMPLING_RATE = 44100;

在你的 startRecording 方法中使用

recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setAudioSamplingRate(SAMPLING_RATE);

File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Recorder");
        try{
          if(dir.mkdir()) {
             System.out.println("Directory created");
          } else {
             System.out.println("Directory alreadt exist");
          }
        }catch(Exception e){
          e.printStackTrace();
        }

        //String str = Environment.getExternalStorageDirectory().getAbsolutePath();
        recorder.setOutputFile(dir + "/recorded_" + System.currentTimeMillis() + ".mp3");

        try {
            recorder.prepare();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        recorder.start();
    } catch (Exception e) {
        e.getMessage();
    }

【讨论】:

  • 我可以创建它但无法在服务器端播放,我尝试下载在媒体播放器中播放的文件但无法听到任何声音
  • 是的,它的上传很好,我也可以下载文件
  • 您可以下载文件,但没有声音可用..所以上传文件时出现了一些错误。请重新检查所有过程/步骤...可能是您的身边跳过了一些东西
  • 是的,我刚刚检查了上传文件是否在服务器上,而且我得到状态正常响应而没有错误。而且我下载的文件只能在 VLC 中播放,而不能在任何其他媒体播放器中播放
猜你喜欢
  • 2019-01-07
  • 2023-03-23
  • 2021-08-15
  • 2014-05-31
  • 2023-03-14
  • 2013-11-12
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
相关资源
最近更新 更多