2012-03-02 6 views
3

私はsdcard it.Unから読み込んでいるオーディオファイルを持っています。私はsdcard.Itからオーディオファイルを再生しています。時間が、その後、それはsoundpool(ヌル)をロードすることができないと言って私を示している何API 7サンプル1は準備ができていません - AndroidのSoundpool 2.1

String path="/sdcard/var/audio.mp3" 

sound1 = mSoundPool.load(path,1); 
mSoundPool.play(sound1, 1, 1, 1, time - 1, 1); 

、私は、Android 2.1すなわちで働いていますunable to load (null) sample 1 not ready

を示すサンプル1の準備ができていませんか? どうすればこの問題を解決できますか?私は長い時間をかけて苦労しています。

答えて

0

私はthat's your problemだと思います。全体のファイルが読み込まれておらず、再生しようとしています。あなたはそれを再生する前にいくつかの時間を待つ必要があります。

+0

私はAPIを使用しています7どのように私はonloadcompletionリスナーを使用できますか? – Goofy

+0

私は知っている、そのトピックで他の答えを見てみましょう。 – skywall

7

私はwavファイルで同様の問題がありました。

これは別のケースではあるかもしれませんが、待つのは問題ではありません。あなたがロードしようとすると、最初のエラーが発生する

サンプル1準備ができていない

    1. (ヌル)をロードすることができない:それは1だったようにあなたは、2つの異なるエラーメッセージを掲載していることに注意してくださいサンプルをSoundPoolに、2番目のサンプルを再生しようとします。しかし、この場合、2番目のエラーは明らかに最初のエラーの結果です。サンプルがロードされていなければ、サンプルを準備できませんでした。

      最初のエラーの前に集中する必要があります。

      AFAIKとは違うSoundPoolを使用しているため、MediaPlayerには関係しません。

      だから、問題の原因があってもよく、順序によって破棄されなければならない:ファイルが存在しない

      1. ファイルはありますが、何らかの理由で読み込めません。
      2. ファイルがあり、読み込み可能ですが、破損しているか、オーディオファイルではありません。
      3. ファイルがあり、読み込み可能で、破損していないオーディオファイルですが、SoundPoolが嫌いです。

      この最後の私のケースでした。何らかの理由で、SoundPoolは実際に使用している他のすべてのプレーヤーで動作するwavサンプルを読み込めませんでした。だから私は単に別の形式の別のファイルを使用して終了しました。

      Opening audio decoder: [pcm] Uncompressed PCM audio decoder 
      AUDIO: 96000 Hz, 1 ch, s16le, 1536.0 kbit/100.00% (ratio: 192000->192000) 
      Selected audio codec: [pcm] afm: pcm (Uncompressed PCM) 
      

      そして、ここでそれは作業を行い、他のファイルのいずれかです:私のGNU/Linuxマシン上のmplayerで語ったようここでは、問題のファイルの形式は、あるあり

      Opening audio decoder: [pcm] Uncompressed PCM audio decoder 
      AUDIO: 22050 Hz, 2 ch, s16le, 705.6 kbit/100.00% (ratio: 88200->88200) 
      Selected audio codec: [pcm] afm: pcm (Uncompressed PCM) 
      

      多くの違いがありますが、第二の作品がポイントであるので、私は単に最初のものを捨て、二番目のものに移ります。最初のサウンドサンプルが必要な場合は、Audacityのようなオーディオエディターでレートとチャンネルを調整するだけで問題を解決できます。

      なぜ最初のケースでうまくいかなかったのですか?誰が知っている、しかし私はそれを簡単に解決することができれば...誰も気にしない?

      よろしく、

    +1

    私は同様の問題を抱えていました。問題は96kHzのサンプルレートで、私が問題を抱えていたサンプルはすべて96kHzでした。 44.1kHzの他のサンプルは正常に機能し、問題のサンプルを44.1kHzに変換すると、正常に機能しました。 –

    +1

    96khzは、現在のモバイルデバイスにはとにかく過剰です。これは通常、処理中に精度が失われるのを避けるため、または特殊な耳を持っていると主張するオーディオファイルによって、スタジオで作業フォーマットとして使用されます。 –

    +0

    ありがとう!それだった! –

    0

    あなたは、私が呼び出す必要がないSoundPool.setOnLoadCompleteListener

    public void loadSound (String strSound, int stream) { 
        boolean loaded = false; 
        mSoundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() { 
          @Override 
          public void onLoadComplete(SoundPool soundPool, int sampleId, 
            int status) { 
           mSoundPool.play(stream, streamVolume, streamVolume, 1, LOOP_1_TIME, 1f); 
          } 
         }); 
        try { 
          stream= mSoundPool.load(aMan.openFd(strSound), 1); 
         } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
    } 
    
    関連する問題