4
我在無線數據模式解碼程序中使用javax.sound.sampled包。爲了使用該程序,用戶將來自其無線電接收器的音頻饋入其PC的線路輸入。用戶還需要使用他們的混音器程序來選擇錄音輸入中的行。麻煩的是一些用戶不知道如何做到這一點,有時其他程序會改變記錄輸入設置。所以我的問題是我的程序如何檢測行內是否設置爲錄製輸入?如果檢測到錯誤,我的程序是否可以更改記錄輸入設置?Java錄音和混音器設置
謝謝你的時間。
伊恩
我在無線數據模式解碼程序中使用javax.sound.sampled包。爲了使用該程序,用戶將來自其無線電接收器的音頻饋入其PC的線路輸入。用戶還需要使用他們的混音器程序來選擇錄音輸入中的行。麻煩的是一些用戶不知道如何做到這一點,有時其他程序會改變記錄輸入設置。所以我的問題是我的程序如何檢測行內是否設置爲錄製輸入?如果檢測到錯誤,我的程序是否可以更改記錄輸入設置?Java錄音和混音器設置
謝謝你的時間。
伊恩
要回答你的第一個問題,您可以檢查是否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,不管操作系統如何? – elmarco 2008-09-12 22:30:28