[Java][Sound] Wav afspelen geen fouten en geen geluid

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • TygeR
  • Registratie: Oktober 2000
  • Laatst online: 06-02 16:23
Ik ben voor een ander bedrijf bezich een audio softwaremodule te debuggen, ik heb hier al het een en ander in toegevoegd, en ook een deel uit gehaald dat voor het probleem niet relevant is.
Het probleem dat optreed is als volgt, er is een simpele class die alleen als doel heeft een wav file af te spelen, deze class werkt op de meeste pc's goed. Echter op de pc waar de class op moet draaien werkt hij niet... Audio is niet hoorbaar, terwijl het systeem zelf wel goed audio kan afspelen.
Nu ben ik zelf al aan het zoeken geweest waarom er geen geluid gespeeld wordt en heb ik gekeken naar de mixer selectie.

Bij deze de huidige source en de console output:

Source:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import javax.sound.sampled.*;
import java.net.URL;
import java.io.File;
import java.io.InputStream;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.LineEvent.Type;

class SoundCardTest
{
    public boolean active = true;

    public static void main(String[] args)
    {
        new SoundCardTest();
    }

    public SoundCardTest()
    {
        try
        {
            File file = new File("./", "login.wav");
            if(!file.exists()) System.out.println("File Not Found");
            URL resource = file.toURL();
    
            InputStream inputStream = resource.openStream();
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(inputStream);

            //here is the deviation from the original code!
            Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
            System.out.println("");         
            for (int i = 0; i < mixerInfo.length; i++)
            {
                System.out.println("--------------------------------------");
                System.out.println("Info of mixer nr.: " + i);
                System.out.println("Name " + mixerInfo[i].getName());
                System.out.println("Vendor " + mixerInfo[i].getVendor());
                System.out.println("Version " + mixerInfo[i].getVersion());
            }
            System.out.println("--------------------------------------");
            System.out.println("");

            Clip myClip = AudioSystem.getClip(mixerInfo[0]);
            System.out.println(myClip.getLineInfo());

            System.out.println("The clip has " + myClip.available() + " Bytes of data ready for playback before opening the stream");
            
            if(myClip.isOpen()) System.out.println("The line is already open before opened in this code!");

            myClip.open(audioInputStream);
            
            if(!myClip.isOpen()) System.out.println("Failed to open Line (failed to free system resources)");
            System.out.println("The clip has " + myClip.available() + " Bytes of data ready for playback, after opening");

            
            if(!myClip.isActive()) System.out.println("Line (clip) is inactive before start");
            //myClip.start();
            myClip.loop(10);
            System.out.println("Starting myClip");
            if(myClip.isActive()) System.out.println("Line (clip) is active after start");

            LineListener listener = new LineListener()
            {
                public void update(LineEvent event)
                {
                    if (event.getType() == Type.STOP)
                    {
                        System.out.println("Playback of inputstream stopped (eof)");
                        active = false;
                    }
                    else
                    {
                        System.out.println(event.getType());
                    }
                }
            };
            myClip.addLineListener(listener);

            while(active)
            {
                Thread.sleep(500);
                if(myClip.isActive()) System.out.println("Playing...");
                if(!myClip.isActive()) System.out.println("Not Playing! (line inactive)");
            }
            if(!myClip.isActive()) System.out.println("Line freed after playing file");

            System.out.println("Routine finished");
        }
        catch(Exception e)
        {
            System.out.println("ERROR: " + e);
        }

    }
}



Console output:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
soprano@soprano-pc-nl001:~/sopranoSoundTest$ java SoundCardTest 

--------------------------------------
Info of mixer nr.: 0
Name Live [plughw:0,0]
Vendor ALSA (http://www.alsa-project.org)
Version 1.0.17
--------------------------------------
Info of mixer nr.: 1
Name Live [plughw:0,1]
Vendor ALSA (http://www.alsa-project.org)
Version 1.0.17
--------------------------------------
Info of mixer nr.: 2
Name Live [plughw:0,2]
Vendor ALSA (http://www.alsa-project.org)
Version 1.0.17
--------------------------------------
Info of mixer nr.: 3
Name Live [plughw:0,3]
Vendor ALSA (http://www.alsa-project.org)
Version 1.0.17
--------------------------------------
Info of mixer nr.: 4
Name Java Sound Audio Engine
Vendor Sun Microsystems
Version 1.0
--------------------------------------
Info of mixer nr.: 5
Name Port Live [hw:0]
Vendor ALSA (http://www.alsa-project.org)
Version 1.0.17
--------------------------------------

interface Clip supporting 8 audio formats, and buffers of at least 32 bytes
The clip has 0 Bytes of data ready for playback before opening the stream
The clip has 65536 Bytes of data ready for playback, after opening
Line (clip) is inactive before start
Starting myClip
Playing...
<-cut
cut->
Playing...
Playback of inputstream stopped (eof)
Not Playing! (line inactive)
Line freed after playing file
Routine finished


Alle beschikbare mixers heb ik geprobeerd maar bij geen van allen wordt er geluid afgespeeld, ik heb echt geen idee meer wat ik nog meer kan debuggen. Kan iemand mij een tip in de goede richting geven?

Acties:
  • 0 Henk 'm!

  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Misschien wordt het volume standaard te laag gezet?, al gekeken waar die op staat bij het afspelen?

Skill is when luck becomes a habit.


Acties:
  • 0 Henk 'm!

  • Bl4ckviper
  • Registratie: Mei 2002
  • Laatst online: 06-08 00:09

Bl4ckviper

BlaBlaBla

Wellicht meerdere outputs? En je hebt niet de juiste active staan van je geluidskaart?

Be fast .... Be furious....