android - 在 Android 上的 Audiotrack 上播放 mp3 时发出嗡嗡声

标签 android audio mp3 noise

我尝试在 Android 模拟器的 SDCard 中播放 mp3 文件,但发出的只是一些奇怪的嗡嗡声。我确保采样率为 44.1k Hz 我不知道还有什么问题

    if(AudioTrack.MODE_STATIC != mode && AudioTrack.MODE_STREAM != mode)
            throw new InvalidParameterException();

    String audioFilePath = "/sdcard/test.mp3";
    long fileSize = 0;
    long bytesWritten = 0;
    int bytesRead = 0;
    int bufferSize = 0;
    byte[] buffer;
    AudioTrack track;

            File audioFile = new File(audioFilePath);
            fileSize = audioFile.length();
    if(AudioTrack.MODE_STREAM == mode)
    {
            bufferSize = 8000;
    }
    else
    {// AudioTrack.MODE_STATIC
            bufferSize = (int)fileSize;
    }
    buffer = new byte[bufferSize];
    track = new AudioTrack(AudioManager.STREAM_MUSIC,/* this is for pcm*/ /*22050*/ /*this is for mp3*/ 44100, 
                            AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_DEFAULT/*AudioFormat.ENCODING_PCM_16BIT*/, 
                            bufferSize, mode);
    // in stream mode, 
    //   1. start track playback
    //   2. write data to track
    if(AudioTrack.MODE_STREAM == mode)
            track.play(); 
    FileInputStream audioStream = null;
    try {
                    audioStream = new FileInputStream(audioFile);
            } catch (FileNotFoundException e) {
                    e.printStackTrace();
            }

    while(bytesWritten < fileSize)
    {
            try {
                    bytesRead = audioStream.read(buffer, 0, bufferSize);
                    } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                    }
            bytesWritten += track.write(buffer, 0, bytesRead);
    }
    // in static mode,
    //   1. write data to track
    //   2. start track playback
    if(AudioTrack.MODE_STATIC == mode)
            track.play();

最佳答案

您听到奇怪的声音是正确的,因为您需要先解码 MP3 你将它输入到 AudioTrack 中! AudioTrack 仅播放原始 PCM 音频。

关于android - 在 Android 上的 Audiotrack 上播放 mp3 时发出嗡嗡声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6743286/

相关文章:

java - 当表情符号键盘显示时调整键盘大小或隐藏虚拟键盘

java - 如何在 String 中插入换行符以显示在 Android TextView 小部件上?

android - 如何在线程中重新加载 imageview?

java - (处理)将类型文件转换为类型字符串?

android - 如果不存在,则在文本中添加 http ://www.

google-chrome - 为 Web Audio API 流式传输大型音频文件

audio - 音频文件频谱图,是时间对振幅还是时间对频率?

actionscript-3 - Actionscript 3,在我的游戏中添加音频 slider

java - 如何使用java作为服务器传输音乐?

php - 使用 php 将 youtube 视频下载到服务器