MediaPlayer / MediaRecorder声音质量糟糕吗?

时间:2018-12-08 08:33:24

标签: java android

我正在尝试开发一种录音设备,但是播放时听起来很糟糕。一切都令人作呕,听起来我真的很遥远。

这是代码。我已经研究过尝试更改编码器,比特率和采样率,但是似乎没有什么可以解决这个问题。我到处寻找有关此问题的其他帖子,但没有发现任何东西。有人帮忙吗?

我还意识到这是两个不同的对象,但是我不确定如何检查是录音机还是播放器。想法也很好!

MediaRecorder mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
mRecorder.setAudioEncodingBitRate(1280);
mRecorder.setAudioSamplingRate(4400);
mRecorder.setOutputFile(_audioFilename);


MediaPlayer media = new MediaPlayer();
try {
        media.setDataSource(task.getAudio());
    } catch (IOException e) {
        e.printStackTrace();
    }
try {
        media.prepare();
    } catch (IOException e) {
        e.printStackTrace();
    }
    media.start();

编辑: 下载文件https://sites.google.com/site/chasebusackersfilecabinet/home/ProxiVoiceOver3.mp4?attredirects=0&d=1

或者这是Youtube上的(可能不起作用): https://www.youtube.com/watch?v=va0wlupsuPA&feature=youtu.be

可以只是模拟器吗?

1 个答案:

答案 0 :(得分:1)

我认为您的问题在这里

mRecorder.setAudioEncodingBitRate(1280);
mRecorder.setAudioSamplingRate(4400);

比特率是您希望将音频编码为每秒的位数。例如,如果您希望录制的音频文件为每秒1MB,则应将其设置为133333(每分钟1000000字节*每字节8位/每分钟60秒)。这应该是编码算法的目标值,我认为,如果您有一定的空间可以根据自己的需求和期望的质量进行更改,我会认为。

采样率是每秒回放的帧数,通常您希望将其设置为44100。这是默认值,因为人类可以感知到高达20KHz的频率,如果您以高于40KHz的频率采样声音,则可以为人类再现所有可听到的频率。