2010-02-03 14 views
5

मैं वर्तमान में एंड्रॉइड में ऑडियोट्रैक और ऑडियो रिकॉर्ड क्लास का उपयोग करता हूं।एंड्रॉइड ऑडियो रिकॉर्ड और ऑडियोट्रैक कोडेक विकल्प?

मैं शुद्ध पीसीएम डेटा का उपयोग, लेकिन मैं सोच रहा था क्या मेरे विकल्प अन्य कोडेक के लिए कर रहे हैं?

this page से ऐसा लगता है कि मैं केवल सांकेतिक शब्दों में बदलना कर सकते हैं और डिकोड एएमआर नैरोबैंड का उपयोग कर?

मैं वर्तमान में इस प्रकार ऑडियो वर्गों की स्थापना:

arec = new AudioRecord(MediaRecorder.AudioSource.MIC, 
        11025, 
        AudioFormat.CHANNEL_CONFIGURATION_MONO, 
        AudioFormat.ENCODING_PCM_16BIT, 
        buffersize); 

atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 
        11025, 
        AudioFormat.CHANNEL_CONFIGURATION_MONO, 
        AudioFormat.ENCODING_PCM_16BIT, 
        buffersize, 
        AudioTrack.MODE_STREAM); 

तो मेरे सवाल है कि कैसे मैं अन्य समर्थित कोडेक से एक के लिए पीसीएम से एन्कोडिंग बदल सकता हूँ?

मैं AudioFormat पर ENCODING_PCM_16BIT बदलने के लिए मैं केवल पीसीएम विकल्पों के साथ डिफ़ॉल्ट या अमान्य एन्कोडिंग का विकल्प प्राप्त का प्रयास करते हैं।

Android पर एन्कोडिंग और डिकोडिंग ऑडियो पर ट्यूटोरियल के लिए भी लिंक महान किसी को भी किसी भी या किसी भी मदद के लिए यहाँ जानता है बहुत सराहना होगी।

धन्यवाद

संपादित करें: मैं निम्नलिखित करने के लिए अपने कोड बदल गए हैं:

arec = new AudioRecord(MediaRecorder.AudioSource.MIC, 
        11025, 
        AudioFormat.CHANNEL_CONFIGURATION_MONO, 
        **MediaRecorder.AudioEncoder.AMR_NB**, 
        buffersize); 

atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 
        11025, 
        AudioFormat.CHANNEL_CONFIGURATION_MONO, 
        **MediaRecorder.AudioEncoder.AMR_NB**, 
        buffersize, 
        AudioTrack.MODE_STREAM); 

कोड को ठीक से चलता है, लेकिन मैं सोच रहा हूँ यह वास्तव में AMR_NB के रूप में ऑडियो सांकेतिक शब्दों में बदलना है और अगर यह है ऐसा करने का उचित तरीका नहीं है?

जब कच्चे पीसीएम का उपयोग कर मैं एक बफर अतिप्रवाह हो रही थी, लेकिन कोई भी नया कोड का उपयोग कर MediaRecorder.AudioEncoder.AMR_NB साथ AudioFormat.PCM

+4

यह एक लंबे समय के बाद से आप अपने प्रश्न पोस्ट है, लेकिन शायद यह अभी भी किसी के लिए दिलचस्प है ... आप AMR_NB को एन्कोडिंग नहीं कर रहे हैं। झंडे सिर्फ int-field हैं। MediaRecorder.AudioEncoder.AMR_NB 0x01 है ... AudioFormat.ENCODING_DEFAULT के समान। तो आप बस डिफ़ॉल्ट एन्कोडिंग का उपयोग कर रहे हैं। – hacksteak25

उत्तर

2

AudioRecord और AudioTrack के लिए दस्तावेज़ राज्यों के रूप में के स्थान पर प्रयोग के बाद से दिखाई दिया:

audioFormat  the format in which the audio data is represented. See ENCODING_PCM_16BIT and ENCODING_PCM_8BIT 

आप केवल 8-बिट और 16-बिट पीसीएम के साथ काम कर सकते हैं। आप अन्य स्वरूपों में ऑडियो चाहते हैं, या तो AudioRecord और AudioTrack (MediaRecorder और MediaPlayer कोशिश) का उपयोग नहीं करते हैं या आप इसे अपने खुद के कोड का उपयोग कर, संभवतः NDK लाभ ट्रांसकोड करना होगा।

AudioRecord और AudioTrack मामलों में जहां सवाल में ऑडियो OpenCORE मल्टीमीडिया इंजन द्वारा समर्थित नहीं है के लिए विशेष रूप से डिजाइन कर रहे हैं, क्योंकि या तो यह एक समर्थित कोडेक या एक समर्थित स्ट्रीमिंग प्रोटोकॉल (जैसे, SIP) नहीं है।

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