2010-05-26 10 views
7

मुझे माइक्रोफ़ोन कार्यक्षमता से एक साधारण ऑडियो रिकॉर्डिंग के साथ एक सी ++ एप्लिकेशन बनाने की आवश्यकता है।लिनक्स के तहत सी ++ ऑडियो कैप्चर एपीआई के लिए सर्वश्रेष्ठ अभ्यास?

मैं यह नहीं कह सकता कि ऐसा करने के लिए पर्याप्त ऑडियो एपीआई नहीं हैं! पल्स, एएलएसए,/डीवी/डीएसपी, ओपनएएल, आदि। मेरा सवाल यह है कि वर्तमान "सर्वश्रेष्ठ अभ्यास" एपीआई क्या है?

पल्स अधिकांश आधुनिक distros द्वारा समर्थित लगता है, लेकिन लगभग दस्तावेज़ीकरण से रहित लगता है। ओपनएएल को विभिन्न डिस्ट्रोज़ में समर्थित किया जाएगा, या यह बहुत अस्पष्ट है? क्या मुझे कोई याद आया है?
क्या कोई आसान जवाब नहीं है?

+0

आप दुर्भाग्य से देख सकते हैं कि आप एक से अधिक पर कब्जा तरीकों का समर्थन करना चाहते हैं - अलग लोगों के अलग अलग ध्वनि सेटअप का उपयोग करते हैं, और आम तौर पर है कि वे विचार करेंगे ऐसा करने के लिए कोई कारण है, और अधिक किसी दिए गए एप्लिकेशन का उपयोग करने में सक्षम होने से महत्वपूर्ण है। (निश्चित रूप से आपके आवेदन के किस तरह के दर्शकों के पास निर्भर करता है।) – Cascabel

उत्तर

0

GStreamer आप और अंतिम उपयोगकर्ता के संबंध कब्जा ध्वनि के साथ सबसे अधिक लचीलेपन की अनुमति होगी, लेकिन इसके पार मंच व्यवहार्यता विशेष रूप से OS X पर, कि महान नहीं है

+0

जीस्ट्रीमर भी उपयोग के लिए पूछे जाने वाले मामले में वास्तव में अच्छा नहीं है क्योंकि यह इसके लिए डिज़ाइन नहीं किया गया है ... यह एक मल्टीमीडिया ढांचा है ताकि टोटेम और rhytmbox जैसे सामानों का समर्थन करने के लिए या PiTiVi (गैर-रैखिक वीडियो संपादक) जिसे इस तरह के मीडिया प्रारूपों और सामानों को संभालने की आवश्यकता है। इस सवाल के लिए यह अधिक कठिन और जटिल है। – Spudd86

4

Lennart Pottering एक गाइड यहाँ है :

http://0pointer.de/blog/projects/guide-to-sound-apis

मूल रूप से alsa की 'सुरक्षित' सबसेट का उपयोग तो अन्य सभी महत्वपूर्ण होते भी काम करना चाहिए।

वर्जित कि OpenAL लिनक्स पर काम करता है

संपादित करें: इसके अलावा पल्सऑडियो यथोचित अच्छा Doxygen है उत्पन्न प्रलेखन here और कुछ अन्य सामान here और उपयोगिताओं के कुछ अच्छे उदाहरण हैं, तो आप उन्हें gitweb में देख सकते हैं here

इसके अलावा मैंने कुछ कोड लिखा है जो ऑडियो इनपुट के लिए नाड़ी का उपयोग करता है, आप इसे here देख सकते हैं, हालांकि मुझे यकीन नहीं है कि मैं पूरी तरह से सही तरीके से संभालता हूं, और मुझे पता है कि मुझे कुछ स्थितियों को संभालने के लिए कोड गुम है ... लेकिन आपको पल्स के साथ जाना चाहिए शुरू करना चाहिए।

+0

"http://0pointer.de/blog/projects/guide-to-sound-apis" के लिए आपका लिंक टूटा हुआ प्रतीत होता है ... – slashmais

+0

@ स्लैशमाइस लेनार्ट की साइट थोड़ी देर के लिए नीचे थी, अब यह वापस है – Spudd86

+0

इसे मिला, thx - एक उपयोगी गाइड की तरह लगता है – slashmais

1

कोई आसान जवाब नहीं है; सर्वोत्तम अभ्यास संदर्भ और विशिष्ट उपयोग मामलों पर निर्भर करता है कि आपके आवेदन का खुलासा किया जाएगा।

प्रोग्रामिंग और व्यापक दर्शकों की सबसे बड़ी आसानी के लिए, मैं gstreamer चुनता हूं क्योंकि यह त्वरित और सीधा है, अच्छी तरह से gnome और ubuntu में एकीकृत है और ऑडियो उपप्रणाली और कॉन्फ़िगरेशन की एक विस्तृत श्रृंखला का समर्थन करता है। यह बहुत लचीला है।

उदाहरण के लिए

, आदेश:

gst-launch autoaudiosrc ! audioconvert ! flacenc ! filesink location="foo.flac" 

माइक्रोफोन इनपुट से एक .flac फ़ाइल, ऑडियो सिस्टम (पल्स, ALSA, ESD ...) की परवाह किए बिना पैदा करेगा। here दस्तावेज के रूप में c/gobject bindings का उपयोग करके समकक्ष पाइपलाइन लिखा जा सकता है।

ps उपरोक्त आदेश gstreamer-tools पैकेज की आवश्यकता है

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