所以对于我来说,从计算机的麦克风记录音频,我需要使用CaptureDeviceManager
来返回安装在计算机系统上的可用设备列表。这可以通过调用getDeviceList(Format format)
来实现。然而,对于我来说,要创建一个格式的实例,我需要在构造函数new Format(String encoding)
中指定一个编码字符串。我不确定编码会是什么,因为我只是想返回所有可用设备的列表。getDeviceList()方法返回一个空Vector。
API对getDeviceList(Format Format)方法也这么说:
If no Format is specified, this method returns a list of CaptureDeviceInfo
objects for all of the available capture devices.
然而,只有一个getDeviceList()方法需要一个格式。
我不知道JMF是您想在这里使用的工具。也许有关于你的背景的相关信息。JMF是一种相当古老的技术。如果你想使用Java检查音频资源,主要技术在教程访问音频系统资源中有解释。
本教程包括一个代码示例,用于检查端口/线路以查看它们是否支持麦克风。javax.sound.sampled.AudioSystem
类暴露的方法广泛而灵活。
可以先用
Vector devs = CaptureDeviceManager.getDeviceList(null)
那么你可以使用
devs = CaptureDeviceManager.getDeviceList(fmts);
其中FMTS为
AudioFormat fmts=getAudioFormat();
和
private AudioFormat getAudioFormat() {
double sampleRate = 44100;
int sampleSizeInBits = 16;
int channels = 2;
boolean signed = true;
boolean bigEndian = true;
return new AudioFormat(AudioFormat.LINEAR, sampleRate, sampleSizeInBits, channels);
}
它曾经对我有用。