我在无线电数据模式解码程序中使用javax.sound.sampled包.为了使用该程序,用户将来自其无线电接收器的音频馈送到他们的PC的线路输入中.用户还需要使用他们的混音器程序来选择作为录音输入的行.问题是一些用户不知道如何做到这一点,有时其他程序会改变录制输入设置.所以我的问题是我的程序如何检测线路是否被设置为录音输入?如果检测到错误,我的程序是否可以更改录制输入设置?
谢谢你的时间.
伊恩
解决方法:
要回答您的第一个问题,您可以检查录制输入的Line.Info对象是否与Port.Info.LINE_IN匹配,如下所示:
public static boolean isLineIn(Line.Info lineInfo) {
Line.Info[] detected = AudioSystem.getSourceLineInfo(Port.Info.LINE_IN);
for (Line.Info lineIn : detected) {
if (lineIn.matches(lineInfo)) {
return true;
}
}
return false;
}
但是,这不适用于不提供每个可用混音器通道类型的操作系统或声卡驱动程序API.因此,当我在Windows上测试它时,它可以工作,但不适用于Linux或Mac.有关更多信息和建议,请参阅此FAQ.
关于第二个问题,您可以尝试通过Control课程更改录制输入设置.特别是,请参阅FloatControl.Type以了解一些常见设置.请记住,这些控件的可用性取决于操作系统和声卡驱动程序,就像线路输入检测一样.
标签:java,javasound 来源: https://codeday.me/bug/20190705/1386922.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。