के साथ शराब से ध्वनि कैप्चर करना मैंने परीक्षण उद्देश्यों के लिए एक छोटा जावा एप्लिकेशन लिखा है जो उबंटू 12.04 पर मिक्सर से ध्वनि कैप्चर करता है।TargetDataLine
कोड ठीक काम करता है, मैं शराब के नीचे चल रहे किसी भी चीज़ को छोड़कर सभी अनुप्रयोगों से ध्वनि कैप्चर कर सकता हूं।
जब भी मैं अपने कार्यक्रम शुरू, शुरू कर दिया शराब के बाद, targetDataLine.read()
करने के लिए कॉल हमेशा के लिए अवरुद्ध कर देगा
जब शराब पृष्ठभूमि में नहीं चल रहा है, इसे सही ढंग से 0
आउटपुट जब कोई इनपुट, या बाइट की संख्या है अगर इनपुट हो, तो पढ़ें।
यदि मैं शराब शुरू करने से पहले अपना प्रोग्राम शुरू करता हूं, तो ध्वनि चालक शराब के भीतर उपलब्ध नहीं होगा।
मैंने अल्सा के साथ-साथ डिफॉल्ट डिवाइस, दोनों परिणाम प्रदान किए गए दोनों मिक्सर का उपयोग करने का प्रयास किया है।
मैं कल्पना कर सकता हूं कि शराब किसी भी तरह से अल्सा को लॉक करता है (किसी भी कारण से), लेकिन TargetDataLine.read()
पर एक आसान कॉल क्यों शराब में असफल हो सकती है? mixerInfo[0]
मेरे सिस्टम बीटीडब्ल्यू पर डिफ़ॉल्ट है, और आवेदन हमेशा ऑरैकल के नवीनतम जेआरई (7) का उपयोग करके शराब के बाहर चल रहा है।
private void readSound()
{
byte tempBuffer[] = new byte[10000];
int cnt = 0;
Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
System.out.println("Available mixers:");
for (int p = 0; p < mixerInfo.length; p++)
System.out.println(mixerInfo[p].getName());
format = getAudioFormat();
DataLine.Info dataLineInfo = new DataLine.Info(TargetDataLine.class, format);
Mixer mixer = AudioSystem.getMixer(mixerInfo[0]);
try
{
targetDataLine = (TargetDataLine) mixer.getLine(dataLineInfo);
targetDataLine.open(format);
}
catch(Exception e)
{
e.printStackTrace();
}
targetDataLine.start();
while (true)
{
i++;
cnt = targetDataLine.read(tempBuffer, 0, tempBuffer.length);
System.out.println("read " + cnt + " bytes:" + tempBuffer[i]);
calculateLevel(tempBuffer, 0, 200);
targetDataLine.flush();
System.out.println(level);
}
}
क्या आप पोस्ट में, दोनों स्थितियों में कार्यक्रम के आउटपुट, शराब चलने पर, और जब शराब नहीं चल रहा है, तो कृपया प्रदान कर सकते हैं। –
मुझे लगता है कि डेटालाइन :: का उपयोग करना ब्लॉकिंग के साथ मदद कर सकता है। – IceGlow
यह देखने के लिए शराब की कॉन्फ़िगरेशन जांचें कि यह ऑडियो तक कैसे पहुंचता है। http://askubuntu.com/questions/77210/how-to-change-the-default-audio-in-wine-to-alsa- केवल – IceGlow