如何用JMF录制音频设备?



所以对于我来说,从计算机的麦克风记录音频,我需要使用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); 
}

它曾经对我有用。

相关内容

  • 没有找到相关文章

最新更新