问题描述
我将从这开始,这可能只是openJDK中的一个错误: 两者都累了:
- OpenJDK运行时环境(内部版本12.0.2 + 10)
- OpenJDK运行时环境(内部版本14 + 36-1461)
当我尝试从混音器信息中获取TargetDataLine对象的名称时,该名称被截断为32个字符,但是Microsoft为Mic和Speaker设备的设备的字符串名称添加了31个字符。意思是我有1个字符来区分设备,这没有帮助。
import javax.sound.sampled.*
...
public TargetDataLine getAudioInLineByName(String deviceName) {
Mixer.Info[] mixerInfos = AudioSystem.getMixerInfo();
for (Mixer.Info info : mixerInfos) {
logger.debug(JsonUtils.toJson(info));
Mixer m = AudioSystem.getMixer(info);
Line.Info[] lineInfos = m.getTargetLineInfo();
//Gets Mics on systems
if (lineInfos.length >= 1 && lineInfos[0].getLineClass() == TargetDataLine.class) {
//Pass in name if device to search for
if (info.getName().contains(deviceName)) {
logger.info("Match found: " + info.getName());
return (TargetDataLine) m.getLine(lineInfos[0]);
}
}
}
return null;
}
我在这里清理了调试输出的输出:
{
"name":"Port Echo Cancelling Speakerphone (P","vendor":"Unknown Vendor","description":"Port Mixer","version":"5.0"
},{
"name":"Port Speakers/Headphones (Realtek(R)","version":"10.0"
},{
"name":"Echo Cancelling Speakerphone (Poly Studio)","description":"Direct Audio Device: DirectSound Playback","version":"Unknown Version"
},{
"name":"Speakers/Headphones (Realtek(R) Audio)",{
"name":"Echo Cancelling Speakerphone (P","description":"Direct Audio Device: DirectSound Capture",{
"name":"Microphone (Realtek(R) Audio)","version":"Unknown Version"
}...
]
如您所见,“端口混合器”和“捕获设备”的名称均被截断为32个字符,但“播放”未被截断。 有没有解决方法,我在java.net上看到了与此相关的几个老错误,但是它们存在于Java的旧版本中,并且几年没有被使用。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)