2016-01-29 12 views
7

पर ऑडियो गुणवत्ता अंतर मैं एंड्रॉयड पर ऑडियो रिकार्ड और गुणवत्ता, क्रमशः चुना प्रारूप करने में समस्या आती करने का प्रयास कर रहा हूँ।Kitkat/लॉलीपॉप

मैं निम्नलिखित सेटअप

mr=new MediaRecorder(); 
mr.setAudioSource(MediaRecorder.AudioSource.MIC); 
mr.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
mr.setOutputFile("somepath"); 
mr.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 

का उपयोग कि कोड हालांकि दो उपकरणों पर बहुत अलग परिणाम देता है विभिन्न Android संस्करण (4.4.4 और 5.1.1) चल रहा है।

जब मैं फ़ाइल हेडर पर एक नज़र डालें, तो वह वहां दोनों फ़ाइलें (- mp42 5.1.1 पर 3gp4 4.4.4 पर) के लिए विभिन्न स्वरूपों को दर्शाता है। वीएलसी हालांकि एएसी का उपयोग करके दोनों पर जोर देती है, लेकिन बहुत अलग नमूना दरों, 4.4.4 फाइल के लिए 8k और 5.1.1 के लिए 48k दिखाती है।

किसी को भी एक विचार क्यों? यह सब सेट करने के लिए

+0

एक्सएमएल के साथ पृथ्वी पर क्या करना है? –

उत्तर

1

प्रयास करें:

recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); //I would use MediaRecorder.AudioEncoder.AMR_NB 
recorder.setAudioEncodingBitRate(16); 
recorder.setAudioSamplingRate(44100); 
recorder.setOutputFile(outputFile.getAbsolutePath()); 
recorder.prepare(); 
recorder.start(); 

या बाहरी पुस्तकालय का उपयोग करें:

RehearsalAudioRecorder recorder = new RehearsalAudioRecorder(RehearsalAudioRecorder.RECORDING_UNCOMPRESSED, MediaRecorder.AudioSource.MIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_STEREO, AudioFormat.ENCODING_PCM_16BIT); 
recorder.setOutputFile(outputFile.getAbsolutePath()); 
recorder.prepare(); 
recorder.start(); 

अद्यतन

भी इस जांच: http://rehearsalassist.svn.sourceforge.net/viewvc/rehearsalassist/android/releases/RehearsalAssistant_0_8_2/src/urbanstew/RehearsalAssistant/

रिकॉर्डर बदलकर:

MediaRecorder recorder = new MediaRecorder(); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
if (Build.VERSION.SDK_INT >= 10) { 
    recorder.setAudioSamplingRate(44100); 
    recorder.setAudioEncodingBitRate(96000); 
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 
} else { 
    // older version of Android, use crappy sounding voice codec 
    recorder.setAudioSamplingRate(8000); 
    recorder.setAudioEncodingBitRate(12200); 
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
} 
recorder.setOutputFile(file.getAbsolutePath()); 
try { 
    recorder.prepare(); 
} catch (IOException e) { 
    throw new RuntimeException(e); 
} 

ऐसा लगता है कि 10 से कम एसडीके वाले डिवाइस अच्छी गुणवत्ता रिकॉर्ड नहीं कर सकते हैं।

+0

मैंने पहले ही नमूना दर निर्धारित करने की कोशिश की है लेकिन यह इसे अनदेखा कर रहा था। मैं अतिरिक्त बिट सेटिंग को सेट करने का प्रयास करूंगा। AMR_NB के रूप में, यह मुझे सभी उपकरणों पर एक समान रूप से खराब ऑडियो गुणवत्ता प्रदान करेगा। आप इसे क्यों पसंद करेंगे? – user5854159

+0

यह सभी उपकरणों पर समान तरीके से व्यवहार करने की अधिक संभावना है और यह इतना बुरा नहीं है। –

+0

मुझे अभी भी ** विशेष रूप से ** बिट दर निर्धारित करने की कोशिश करने की आवश्यकता है, लेकिन मेरे परीक्षणों में अब तक ऐसा लगता है कि AMR_NB इसके स्पष्ट MP4 समकक्ष से बहुत अधिक मफल है। – user5854159