2008-10-28 15 views
10

कंप्यूटर खेल मैं बना रहा हूं लिए में छोटे ध्वनियों बजाना, मैं स्पष्ट रूप से ध्वनि खेलना चाहता हूँ। अब तक, मैं WAV फ़ाइलों को चलाने के लिए ऑडियोक्लिप का उपयोग कर रहा हूं। हालांकि यह दृष्टिकोण ठीक काम करता है, डब्ल्यूएवी फाइलें विशाल होती हैं। ध्वनि के कुछ सेकंड सैकड़ों केबी होने के अंत में। मुझे गेम डाउनलोड करने का सामना करना पड़ रहा है जो 9 5% ऑडियो है!जावा खेल

स्पष्ट विकल्प यहाँ एमपी 3 या Ogg Vorbis उपयोग करने के लिए किया जाएगा। लेकिन मुझे इसके साथ सीमित सफलता मिली है - मैं जेएलयर का उपयोग करके एमपी 3 चला सकता हूं (लेकिन यह एक ही धागे में खेलता है)। ओग के लिए, मुझे कोई भाग्य नहीं मिला है। इससे भी बदतर, जेएलयर की कानूनी स्थिति संदिग्ध पक्ष पर थोड़ा सा है।

तो मेरा सवाल जावा डेवलपर्स और आम तौर पर उन लोगों के लिए है जो वास्तव में ध्वनि के बारे में कुछ जानते हैं: मैं क्या करूँ? क्या मैं किसी भी तरह से अपने डब्ल्यूएवी से "वसा ट्रिम" कर सकता हूं? जावा में ओग खेलने का कोई तरीका है? क्या इसके अलावा कुछ अन्य ध्वनि प्रारूप का उपयोग करना चाहिए?

उत्तर

4

आप ओजीजी संगीत को वापस चलाने के लिए JOrbis लाइब्रेरी का उपयोग कर सकते हैं। काम करने वाले नमूना उपयोग के लिए आप इन फ़ाइलों को here देख सकते हैं।

मैंने कुछ लापरवाह ऑडियो संपीड़न के साथ भी प्रयोग किया, उदाहरण के लिए मेरे पास 16 बिट मोनो ध्वनि थी। मैंने प्रत्येक नमूने के ऊपरी और निचले बाइट को अलग किया और उन्हें एक-दूसरे के बाद रखा। फिर मैंने एक अंतर प्रतिस्थापन लागू किया जहां प्रत्येक बाइट को अंतिम बाइट से इसके अंतर से बदल दिया गया। और अंत में डेटा को संपीड़ित करने के लिए जीजेआईपी का इस्तेमाल किया। मैं डेटा आकार को मूल आकार के 50-60% तक कम करने में सक्षम था। दुर्भाग्यवश यह पर्याप्त नहीं था इसलिए मैं ओजीजी प्रारूप में बदल गया।

8 बिट संगीत के साथ मैंने देखा एक बात यह है कि अगर मैं ऑडियो वॉल्यूम बदलता हूं, तो प्लेबैक बहुत शोर हो जाता है। मैंने SourceDataLine.write() से पहले ऑडियो डेटा को 16 बिट तक अपनाने से इस समस्या को हल किया।

+0

शानदार! मैं पहले JOrbis देखा, लेकिन प्रलेखन के अपने प्रतीयमान कुल कमी मुझे यह पता लगाने की कैसे वास्तव में एक .ogg फ़ाइल पर यह बात और ध्वनियों वक्ता से बाहर आ करने में असमर्थ बना दिया। – Zarkonnen

+0

मैं एक भी पुस्तकालय में JOrbis, VorbisSPI और Tritonus-शेयर इकट्ठे, तो आप जावा ध्वनि एपीआई (AudioSystem) जावा फ़ाइलों को डिकोड करने के लिए उपयोग कर सकते हैं। [कड़ी] (http://www.twelvepm.de/vorbis/) – Trilarion

2

ये पुराना हो सकता है, लेकिन उन्हें आधिकारिक तौर पर Xiph.org टीम द्वारा मान्यता प्राप्त है (जो ओग और वोर्बीस को दूसरों के बीच बनाए रखते हैं)। http://www.vorbis.com/software/#java

2

आपके द्वारा वर्णित समस्या जावा में ध्वनि के लिए सेवा प्रदाता इंटरफ़ेस (एसपीआई) द्वारा संबोधित की जाती है। नतीजा यह है कि बस आपके क्लासपाथ में जेएआर फाइल जोड़ना डिफ़ॉल्ट जावा साउंड एपीआई में कार्यक्षमता जोड़ देगा। इस प्रकार कोड बदलने के बिना अधिक ध्वनि प्रारूपों को संभालने में सक्षम बनाता है।

पिछली बार मैंने कोशिश की कि Javazoom लोगों ने एक एमपी 3 एसपीआई जार की पेशकश की। जो आपने जेलियर पर आधारित था, उस पर आधारित था।

वॉर्बिस OGG के लिए वहाँ अब भी एक एसपीआई पुस्तकालय हो रहा है। जावाज़ूम पर Vorbis SPI पर दस्तावेज़ देखें।

2

आप wav प्रारूप के साथ रहने का फैसला करते हैं ...

यह शायद उच्च गुणवत्ता ध्वनि फ़ाइलों के लिए बहुत महत्वपूर्ण नहीं है। आप बिट रेट को कम करने, मोनो या दोनों पर स्विच करने के लिए अपने पसंदीदा WAV संपादक का उपयोग कर सकते हैं। इससे बहुत सारी जगह बचाई जाएगी और गेम खेलने के दौरान आपको गुणवत्ता में अंतर दिखाई नहीं देगा।

उम्मीद है कि इससे मदद मिलती है।