Odtwarzanie dźwięku z pliku wav.

2016-01-29 13:19

Rejestracja: 5 lat temu

Ostatnio: 2 tygodnie temu

Lokalizacja: Kraków

0

Program ma odtwarzać dźwięki wav. Problem polega na tym że jeżeli wybiorę krótki plik (2 sekundy), dźwięk zostaje bezproblemu odtworzony. Ale przy innych dłuższych dźwiękach program kończy sie po ok. 2 sekundach i odtwarzanie się zatrzymuje. Sprawdzałem na kilku plikach i zawsze jest tak samo. Proszę o pomoc :)
Oto kod:

import java.io.IOException;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.swing.JFileChooser;

public class Troll {

    public static void main(String[] args) throws UnsupportedAudioFileException, IOException, LineUnavailableException {
        JFileChooser fc = new JFileChooser();
        int i = fc.showOpenDialog(null);
        if (i == JFileChooser.APPROVE_OPTION) {
            Clip clip = AudioSystem.getClip();
            AudioInputStream inStream = AudioSystem.getAudioInputStream(fc.getSelectedFile());

            clip.open(inStream);
            clip.start();

        }

    }

}

Pozostało 580 znaków

2016-01-29 13:30
Moderator

Rejestracja: 11 lat temu

Ostatnio: 42 minuty temu

0

Kończy się wykonywanie programu, zrób to samo w programie z GUI.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2016-01-29 13:42
Moderator

Rejestracja: 5 lat temu

Ostatnio: 2 tygodnie temu

Lokalizacja: Kraków

0

Zapytam jeszcze z ciekawości, jak zrobić żeby ten program który mam poprostu poczekał na zakończenie odtwarzanie i dopiero wtedy się skończył?

Pozostało 580 znaków

2016-01-29 13:57
Moderator

Rejestracja: 11 lat temu

Ostatnio: 42 minuty temu

Daj programowi jakieś zajęcie, albo każ mu się zdrzemnąć.

            clip.start();
            try
            {
                Thread.sleep(120000);
            }
            catch (InterruptedException e)
            {
            }

Powyższy kod odtworzy 2 minuty, a poniższy całość

            clip.start();
            Timer timer = new Timer(0,new ActionListener()
            {
                public void actionPerformed(ActionEvent ae)
                {
                    if(!clip.isRunning())
                    {
                        System.exit(0);
                    }
                }
            });
            timer.setDelay(100); 
            timer.start();

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans, 2016-01-29 15:50

Pozostało 580 znaków

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0