2012-06-22 15 views
8

मैं ऐसे एप्लिकेशन को विकसित करने की तलाश में हूं जिसके लिए ऑडियो की लाइव स्ट्रीमिंग की आवश्यकता होगी। मैं सी या सी ++ में लिखे गए कुछ क्रॉस-प्लेटफ़ॉर्म (विंडोज़/लिनक्स/बीएसडी) ओपन सोर्स लाइब्रेरी का उपयोग करना पसंद करूंगा, भले ही संबंधित ओएस 'ध्वनि एपीआई का उपयोग करके इसे लिखना अभी भी एक विकल्प है।क्रॉस प्लेटफ़ॉर्म ध्वनि API

मैंने एसएफएमएल, एसडीएल और पोर्टऑडियो सहित विभिन्न ध्वनि पुस्तकालयों के बारे में कुछ पढ़ा है। बेशक, मैं अभी तक पर्याप्त ध्वनि के बारे में FreeBSD और लिनक्स में शोध नहीं किया है

मुख्य आवश्यकताओं (कैसे समान इन 2? के बीच है) हो जाएगा

  1. प्राप्त एक चुने हुए माइक्रोफोन से ऑडियो/माइक्रोफोन पर भेजने के लिए नेटवर्क,
  2. आउटपुट डिवाइसों के चयन में डेटा भेजें,
  3. ध्वनि (फ़िल्टरिंग, शोर की सफाई, मल्टीप्लेक्सिंग स्ट्रीम इत्यादि) को संसाधित करता है लेकिन ऑडियो ऑडियो होने के बाद यह किया जा सकता है, लाइब्रेरी को इसकी आवश्यकता नहीं है इनमें से कोई भी करने में सक्षम होने के लिए।
  4. यथोचित कम विलंबता है

मेरा मुख्य चिंता का विषय है कि इन उल्लेख एपीआई मुख्य रूप से खेल (जहां ध्वनि आमतौर पर डिस्क से भरी हुई है के लिए लक्षित कर रहे हैं और वहाँ ज्यादा ध्वनि रिकॉर्डिंग शामिल बजाय नहीं है, यदि कोई हो, रिकॉर्डिंग और प्लेबैक के बीच समान महत्व के साथ नेटवर्क पर स्ट्रीम किया गया।

क्या किसी के पास इन या अन्य ध्वनि एपीआई के बारे में कोई संकेत/चेतावनियां/सुझाव हैं या लंबे समय तक जाने के फायदे/नुकसान और संबंधित ओएस में इसे कार्यान्वित करने के बारे में कोई संकेत है। एपीआई?

नोट: जबकि यह: "हमें पुस्तक, टूल, सॉफ़्टवेयर लाइब्रेरी, ट्यूटोरियल या अन्य ऑफ-साइट संसाधन की सिफारिश करने या खोजने के लिए पूछे जाने वाले प्रश्न स्टैक ओवरफ़्लो के लिए ऑफ-विषय हैं," प्रश्न पूछता है, जब कोई भी " क्योंकि वे राय वाले उत्तरों और स्पैम को आकर्षित करते हैं "तो मुझे नहीं लगता कि यह प्रश्न बंद होना चाहिए। वर्णित इस तरह की लाइब्रेरी की तलाश करने वाले किसी को भी कुछ भी ढूंढने के लिए कठोर दबाव डाला जाएगा और इस प्रश्न के उत्तर सभी उपलब्ध विकल्पों को व्यावहारिक रूप से संक्षेप में सारांशित करेंगे। इस प्रकार "आमतौर पर कवर ... सॉफ़्टवेयर टूल आमतौर पर प्रोग्रामर द्वारा उपयोग किए जाते हैं;" स्वीकार्य उत्तरों की श्रेणी।

+0

क्या आपने पुल्सियोडियो को देखा है? –

+0

पल्सऑडियो के लिए लेखन केवल उचित लगता है अगर विशेष रूप से LINUX वितरण के लिए लिख रहा है, जिसने इसे पहले से सेट किया है – msam

उत्तर

7

पोर्टऑडियो आपके द्वारा वर्णित एप्लिकेशन के लिए एक उत्कृष्ट विकल्प है - यह उन सभी प्लेटफॉर्म पर चलता है, जो सी में लिखे गए हैं, कम विलंबता प्रदान करते हैं, और दोनों कॉलबैक और ब्लॉकिंग I/O विकल्प हैं। यह निश्चित रूप से आपकी आवश्यकताओं को पूरा करता है, और विशेष रूप से गेम के उद्देश्य से नहीं है। असल में, मैं कहूंगा कि अन्य एपिस हैं जो गेम के लिए बेहतर हैं, जबकि पोर्टऑडियो सामान्य प्रयोजन ऑडियो I/O के लिए बेहतर है जैसे आपके जैसे वॉयप-जैसे एप्लिकेशन, ऑडियो प्लेयर, प्रो-ऑडियो एप्लिकेशन, ऑडियो रिकॉर्डिंग, सॉफ्टवेयर रेडियो, आदि

एक अन्य विकल्प जिसे आप विचार कर सकते हैं वह आरटीयूडियो है, जिसे मैं परिचित नहीं हूं। मेरी समझ यह है कि यह थोड़ा आसान है (कोई अवरुद्ध I/O AFAIK नहीं), और मोबाइल ओएस सहित अधिक प्लेटफ़ॉर्म के लिए समर्थन है, हालांकि पोर्टऑडियो लोग उस पर काम कर रहे हैं।

फ्रीबीएसडी बनाम लिनक्स के बारे में आपका प्रश्न: लिनक्स एएलएसए का उपयोग करता है, जबकि अन्य यूनिक्स ओएसएस का उपयोग करते हैं। ओएसएस और एएलएसए दोनों संगतता परत प्रदान करते हैं, इसलिए एएलएसए में ओएसएस संगतता है और इसके विपरीत, लेकिन मेरे अनुभव में दोनों संगतता परतों में बग हैं। शायद चीजें बेहतर हो गई हैं क्योंकि मैंने इसे अंतिम बार इस्तेमाल किया था।

कुछ लिनक्स डेस्कटॉप एएलएसए के शीर्ष पर पल्सएडियो चलाते हैं। मुझे यकीन नहीं है कि यह फ्रीबीएसडी के बारे में सच है या नहीं। किसी कारण से, अधिकांश सिस्टम पर डिफ़ॉल्ट रूप से ALSA को विशिष्ट मोड में कॉन्फ़िगर किया गया है। हालांकि सिद्धांत में इसे ठीक करना आसान है, कॉन्फ़िगरेशन फ़ाइलें अजीब हैं और अधिकांश उपयोगकर्ताओं ने यह नहीं किया है और कभी नहीं, इसका अर्थ यह है कि एक बार पल्सऑडियो ले जाने के बाद, आप सीधे एएलएसए डिवाइस तक नहीं पहुंच सकते हैं, इसलिए आप चाह सकते हैं एक पल्सऑडियो ड्राइवर भी, जब तक कि आप अपने उपयोगकर्ताओं को अपनी कॉन्फ़िगरेशन को बदलना नहीं चाहते हैं (जो आपको हो सकता है यदि आपके एप्लिकेशन को वास्तव में कम विलंबता हो)।

मुझे यकीन है कि पोर्टऑडियो वेबसाइट पर क्या कह सकता है या नहीं कह सकता है, इसके बावजूद पोर्टऑडियो पल्सऑडियो का समर्थन करता है। मैं मेलिंग सूची पर पूछूंगा और यहां अपडेट करूँगा।

अद्यतन: मेलिंग सूची पर किसी ने सोचा कि आप पल्सएडियो का उपयोग करने के लिए अल्सा ड्राइवरों का उपयोग कर सकते हैं। यह (महान!) खबर है, लेकिन वहां है।

2

मैं एसडीएल और ओपनल दोनों को आम और व्यापक रूप से समर्थित होने पर विचार करता हूं। जब तक कि ये आपकी ज़रूरतों को पूरा न करे, मैं सुझाव नहीं दूंगा कि आप निम्न स्तर पर नहीं जा रहे हैं क्योंकि आप मंच स्वतंत्रता खो देंगे।

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

कम विलंबता के अपने लक्ष्य पर विचार करें। स्क्रीन पर कार्यों के साथ ध्वनि प्रभाव अच्छी तरह से मेल खाने के लिए गेम को बहुत कम विलंबता की आवश्यकता होती है। मुझे लगता है कि यह एक ऐसा कारण है जिसे आप चाहते हैं (इसलिए आपकी आवाज आपकी वीडियो स्ट्रीम से मेल खाती है और वॉयस चैनल में कोई विराम नहीं है)।

बीटीडब्ल्यू, गेम की आपकी धारणा सही नहीं है। टीम के संचार के लिए बहुत से गेम में उपयोगकर्ता वॉयस चैनल होते हैं। इसके अतिरिक्त वे प्रक्रियात्मक ध्वनि और ध्वनि प्रभाव शामिल हो सकते हैं।


मुझे एक और कॉल SFML मिला जिसमें रिकॉर्डिंग समर्थन शामिल है। मुझे इसके बारे में बहुत कुछ पता नहीं है, लेकिन मैंने देखा है कि यह एसडीएल को प्रतिस्थापित कर सकता है।

+1

रिकॉर्डिंग भाग का एक लिंक यहां दिया गया है! http://stackoverflow.com/questions/3056113/recording-audio-with-openal – NotKyon

+0

दुर्भाग्यवश, मैंने पुन: दावा नहीं किया था कि एसडीएल रिकॉर्डिंग का समर्थन नहीं करता है (या मैं कुछ याद कर रहा हूं) ताकि अब बाहर हो समीकरण। हालांकि ओपनएएल में देखेंगे – msam

+0

हाँ, इसके बारे में खेद है, मैंने सोचा था कि एसडीएल ने रिकॉर्डिंग की है, लेकिन मुझे इसके लिए एपीआई नहीं मिल रहा है। शायद नए रिलीज में से एक में यह है, या यह एक पैच था। –

0

मैं दृढ़ता से सुझाव देता हूं कि आप इसे क्रॉस प्लेटफ़ॉर्म (लिनक्स/मैक/विंडोज) क्यूटी फ्रेमवर्क पर विकसित करें और अपने स्वयं के क्यूटी पुस्तकालयों का उपयोग करें। QtMultimedia मॉड्यूल में, आप माइक्रोफोन से कच्चे ऑडियो को कैप्चर करने के लिए QAudioInput का उपयोग कर सकते हैं। आप कर सकते हैं प्रसंस्करण के लिए फिर से QtMultimedia का उपयोग करें।

क्यूटी फ्रेमवर्क मल्टीमीडिया और गेमिंग एप्लिकेशन के लिए बहुत अनुकूलित है, इसलिए आप प्रदर्शन पर ढीले नहीं होंगे।

+0

छोटी बीप से परे क्यूटी प्रदान की गई कोई भी ध्वनि एपीआई कोई अच्छा नहीं है। मेरा उत्तर यहां देखें: http://stackoverflow.com/questions/5600515/qt-how-to-play-sound-witout-blocking-main-thread/5602687#5602687 –

+0

यह पिछले संस्करणों के लिए सच हो सकता है लेकिन मेरे पास है ध्वनि प्रभाव की विस्तृत श्रृंखला के साथ मेरे 2 खेलों के लिए Qt4.7 का उपयोग किया। –

+0

जब तक कि 4.7 में पूरी तरह से नई ध्वनि एपीआई नहीं है, मुझे विश्वास नहीं होगा कि इससे मुझे मिली समस्याओं को हल किया जा सकता है। –

-1

linphone इस सटीक उद्देश्य

2

libsoundio एक निम्न स्तर सी पुस्तकालय है कि अपनी आवश्यकताओं फिट बैठता है के लिए mediastreamer2 शामिल हैं।

एक चेतावनी: यह अभी तक ओएसएस (फ्रीबीएसडी) या एसएनडीओ (ओपनबीएसडी) का समर्थन नहीं करता है।

संबंधित मुद्दे