【问题标题】:Buzzing noise playing mp3 on Audiotrack on Android在 Android 上的 Audiotrack 上播放 mp3 的嗡嗡声
【发布时间】:2011-10-08 06:26:06
【问题描述】:

我尝试在我的 SDCard 中为我的 Android 模拟器播放一个 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();

【问题讨论】:

    标签: android audio mp3 noise


    【解决方案1】:

    你听到奇怪的声音是正确的,因为你需要先解码 MP3 你把它喂给 AudioTrack! AudioTrack 只播放原始 PCM 音频。

    【讨论】:

      【解决方案2】:

      你应该使用android.media.MediaPlayer来播放mp3音频文件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-28
        • 1970-01-01
        • 2011-03-18
        • 2011-02-27
        • 1970-01-01
        • 2014-08-04
        相关资源
        最近更新 更多