bck
Alejandro Acuña
2024-11-11 f1cb4443aede6d4657bdc3396c8914d3a9f4fa93
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
95
96
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package testaudio;
 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.Line;
import javax.sound.sampled.Mixer;
 
/**
 *
 * @author Konstantin
 */
public class TestAudio
{
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        List<AudioFormat> laudioFormat = new ArrayList();
        
         try {
            Mixer.Info [] mixers = AudioSystem.getMixerInfo();
            for(int i = 0 ; i< mixers.length; i ++) {
                System.out.println((i+1)+". " + mixers[i].getName() + " --> " + mixers[i].getDescription() );
 
                Line.Info [] sourceLines = AudioSystem.getMixer(mixers[i]).getSourceLineInfo();
                
                System.out.println("PRINT - SUPPORTED - AUDIO - FORMATS");
                Stream.of(sourceLines).forEach(line -> showLineInfoFormats(line));
                Stream.of(sourceLines).forEach(line -> laudioFormat.addAll(Arrays.asList(showLineInfoFormats(line))));
                System.out.println("----------------------------------------");
                System.out.println("\tSource Lines:" );
                for(int j = 0; j< sourceLines.length; j++) {
                    System.out.println("\t" + (j+1) + ". " + sourceLines[j].toString() );
                }
                System.out.println();
 
                Line.Info [] targetLines = AudioSystem.getMixer(mixers[i]).getTargetLineInfo();                 
                System.out.println("\tTarget Lines:" );
                for(int j = 0; j< targetLines.length; j++) {
                    System.out.println("\t" + (j+1) + ". " + targetLines[j].toString() );
 
                }       
                System.out.println("\n" );
            }           
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        
        return;
        
//        if(args.length <= 0)
//        {
//            CaptureAudio cap = new CaptureAudio();
//            cap.start();
//            return;
//        }
//        
//        float a = Float.valueOf(args[0]);
//        int b = Integer.valueOf(args[1]);
//        int c = Integer.valueOf(args[2]);
//        Boolean d = Boolean.valueOf(args[3]);
//        
//        CaptureAudio cap = new CaptureAudio(a,b,c,d);
//        
//        cap.start();
    }
    
    static AudioFormat[] showLineInfoFormats(final Line.Info lineInfo)
    {
        if (lineInfo instanceof DataLine.Info)
        {
            final DataLine.Info dataLineInfo = (DataLine.Info) lineInfo;
 
            Arrays.stream(dataLineInfo.getFormats())
                    .forEach(format -> System.out.println("    " + format.toString()));
            
            return dataLineInfo.getFormats();
        }
        
        return new AudioFormat[0];
    }
 
}