2012-06-29 10 views
17

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

मैंने सही ऑडियो सेटिंग्स के साथ ऑडियोफॉर्मैट बनाने का प्रयास किया है, हालांकि एंड्रॉइड javax.sound.sampled लाइब्रेरी का समर्थन नहीं करता है।

मैंने पीसीएम डेटा को एक लहर फ़ाइल में लिखने का भी प्रयास किया है, लेकिन मैं सभी आवश्यक Wav शीर्षलेख जानकारी प्राप्त करने में परेशानी में भाग रहा हूं।

मैंने पीसीएम डेटा खेलने के लिए एंड्रॉइड द्वारा प्रदान की गई ऑडियोट्रैक क्लास का उपयोग करने का भी प्रयास किया है। हालांकि, मुझे कोई आवाज नहीं लग रही है। यहां मेरी विधि है:

public void playback(){ 
     try{ 
       AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, 500000, AudioTrack.MODE_STATIC); 
       audioTrack.write(audio, 0, 500000); 

     } catch(Throwable t){ 
     Log.d("Audio","Playback Failed"); 
    } 
} 

किसी भी सुझाव की सराहना की जाएगी।

+0

मेरा उत्तर –

उत्तर

19

http://developer.android.com/reference/android/media/AudioTrack.html

इस वर्ग की तरह यह वास्तव में आप क्या जरूरत है लग रहा है!

write(byte[] audioData, int offsetInBytes, int sizeInBytes) 

प्लेबैक के लिए ऑडियो हार्डवेयर को ऑडियो डेटा लिखता है।

संपादित

AudioManager.STREAM_MUSIC

+0

अपडेट किया गया ताकि मुझे स्ट्रीम को ठीक करने के लिए निर्देशित करने के लिए धन्यवाद। इसने त्रुटि को ठीक करने में योगदान दिया। – ShannonS

+6

कृपया एक सही उत्तर का चयन करें, यह आपको भविष्य में और अधिक उत्तरों प्राप्त करने में मदद करेगा। –

17

सवाल का अपनी स्ट्रीम बदलें यदि आप पीसीएम नमूने आप सीधे Android एप्लिकेशन में कुछ स्रोत से प्राप्त खेलने के लिए चाहते हैं या आप कुछ बाहरी फ़ाइलें अगर आप की जरूरत है कि क्या है कन्वर्ट। पहले मामले में जैक 57 वर्णित तरीके से जाएं। यह वास्तव में आसान है और आप सटीक समय के लिए मार्कर भी जोड़ सकते हैं।

int bufferSize = AudioTrack.getMinBufferSize(sampleRate, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT); 

AudioTrack mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize, AudioTrack.MODE_STREAM); 

mAudioTrack.play(); 

तो एक चक्र में लिखने विधि कॉल: http://audacity.sourceforge.net/download/:

mAudioTrack.write(buffer, 0, buffer.length); 

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

+0

विस्तृत करने के लिए धन्यवाद। इससे मुझे त्रुटि तय करने में मदद मिली। – ShannonS

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