2011-07-19 19 views
2

私のAndroidエミュレータのSDCardでmp3ファイルを試してみますが、出てくる音は奇妙な騒音です。私はAndroidでAudiotrackでmp3を再生する鳴動音

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(); 

答えて

3

間違っている可能性が他に何か分からないサンプルレートは44.1K Hzであることを確認しましたそれはあなたが 前に最初のMP3をデコードする必要があるので、あなたはANにそれを養う、あなたは奇妙な音を聞くことが正しいのですオーディオトラック! AudioTrackは生のPCMオーディオのみを再生します。

3

android.media.MediaPlayerを使用してmp3オーディオファイルを再生する

関連する問題