AudioPlayer может воспроизвести файл один раз, но не может зациклить его - PullRequest
0 голосов
/ 10 августа 2011

Windows 7 с использованием NetBeans

, поэтому я запрограммировал этот действительно крутой звуковой движок, используя эту страницу http://www.docjar.org/docs/api/sun/audio/AudioPlayer.html аудиоплеер ... теперь я сделал это в цикле, и все ВСЕ работает: D, но когда я играюзвук, который работает на частоте около 2000 Гц или меньше, все работает, но, как и любой выше, чем как 3000-4000, он дает мне эту ошибку

    10/08/2011 01:53:37 org.game.engine.SoundEngine loop
    SEVERE: null
    java.io.IOException: could not create AudioData object
at sun.audio.AudioStream.getData(AudioStream.java:110)
at org.game.engine.SoundEngine.loop(SoundEngine.java:61)
at org.enginetest.EngineTest.main(EngineTest.java:30)

теперь я на 100% уверен, что это не файл сам, потому что я пыталсяиспользуя несколько звуков, что Гц выше 4000, и это все еще не работает.теперь я знаю, что он принимает только WAV, поэтому я дал ему только файлы WAV.Я понятия не имею, почему это делает это!КСТАТИ !!!!! ВАЖНО !!!!Он не работает со звуками выше 4000 Гц ТОЛЬКО ТОЛЬКО ТОЛЬКО, когда я пытаюсь отключить звук с помощью ContinuousAudioDataStream, ЕСЛИ Я ИГРАЮ В ЕГО РАЗ, ЭТО РАБОТАЕТ СОВЕРШЕННО ХОРОШО ... Как я могу исправить эту проблему ограничения Гц?может быть, вы можете просто дать мне код, который работает так же ...

вот два звуковых файла, которые я использую рабочий звук: http://www.mediafire.com/?kyqlr6dah71q62b не рабочий звук: http://www.mediafire.com/?72whdk7h1k7k4ee

(просто говорю, что здесь немного грязно из-за странного пространства, которое нужно поместить в кодовое поле, mabob XD), если вам нужно, вот мой код:

package org.game.engine;
import java.net.MalformedURLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import sun.audio.*;
import java.io.IOException;
import java.io.*;
import java.net.URL;
/**
 *
 * @author Amit
 */
public class SoundEngine {
    private String filename;
    private InputStream in;
     private AudioStream as;
     private AudioData data;
   private URL test;
     private ContinuousAudioDataStream audiostream;
     private boolean checkforlooped = false;

    public SoundEngine(String name) {
    filename = name;
    try {
        in = new FileInputStream(filename);
    } catch (FileNotFoundException ex) {
        Logger.getLogger(SoundEngine.class.getName()).log(Level.SEVERE, null, ex);
    }
    try {
        as = new AudioStream(in);
    } catch (IOException ex) {
        Logger.getLogger(SoundEngine.class.getName()).log(Level.SEVERE, null, ex);
    }
    }

    public void start() {
        if (checkforlooped) {
                try {
        in = new FileInputStream(filename);
        } catch (FileNotFoundException ex) {
          Logger.getLogger(SoundEngine.class.getName()).log(Level.SEVERE, null, ex);
        }
       try {
            as = new AudioStream(in);
        } catch (IOException ex) {
            Logger.getLogger(SoundEngine.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    AudioPlayer.player.start(as);
    }
    public void stop() {
        AudioPlayer.player.stop(as);
    }
    public void stoploop() {
        AudioPlayer.player.stop(audiostream);
        AudioPlayer.player.stop(as);
    }
    public void loop() {
    if (!checkforlooped) {
    try {
        data = as.getData();
        audiostream = new ContinuousAudioDataStream(data);
    } catch (IOException ex) {
        Logger.getLogger(SoundEngine.class.getName()).log(Level.SEVERE, null, ex);
    }
    AudioPlayer.player.start(audiostream);
    checkforlooped = true;
    } else {AudioPlayer.player.start(audiostream);}
    }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...