मुझे अपने ऐप के साथ RECORDING
जबकि बफर ओवरफ़्लो मिल रहा है। रिकॉर्डिंग Service
में किया जाता है। मुझे पता नहीं लगा कि मुझे यह संदेश AudioFlinger
से क्यों प्राप्त हो रहा है।ऑडियो रिकॉर्ड: बफर ओवरफ़्लो?
नीचे मैं AudioRecord
ऑब्जेक्ट को तुरंत चालू करता हूं और इसे कॉलबैक सेट करता हूं।
bufferSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat);
aRecorder = new AudioRecord(audioSource, sampleRate, channelConfig, audioFormat, bufferSize);
aRecorder.setRecordPositionUpdateListener(updateListener);
bytesPerSample = bitsPerSample/8;
int bytesPerFrame = nChannels * bytesPerSample;
framePeriod = bufferSize/bytesPerFrame; // nr of frames that can be kept in a bufferSize dimension
int result = aRecorder.setPositionNotificationPeriod(framePeriod);
buffer = new byte[bufferSize];
audioRecord कॉलबैक:
private AudioRecord.OnRecordPositionUpdateListener updateListener = new AudioRecord.OnRecordPositionUpdateListener(){
public void onPeriodicNotification(AudioRecord recorder){
int result = aRecorder.read(buffer, 0, buffer.length);
}
public void onMarkerReached(AudioRecord recorder)
{}
};
मुझे लगता है समस्या से संबंधित है: aRecorder.setPositionNotificationPeriod(framePeriod);
- हो सकता है अवधि के लिए इस bufferSiz
ई बहुत बड़ा है और एक तेजी से (छोटे) अवधि मुद्दे का समाधान होगा ।
क्या कोई मुझे बता सकता है कि बफर ओवरफ़्लो से कैसे छुटकारा पाएं?
के बजाय रिकॉर्ड करने के लिए एक द्वितीयक थ्रेड का उपयोग करता है, आपके उत्तर के लिए धन्यवाद, सभी डेटा प्रोसेसिंग द्वितीयक धागे में किया जाता है। बफर आकार को स्थिर विधि od AudioRecord (getMinBufSize) का उपयोग करके लिया जाता है। @overwrite वास्तव में गायब था। –
और मैंने कल मिनीबफसाइज को 2 से गुणा करने की कोशिश की, लेकिन ~ 30 सेकंड में "बफर ओवरवॉ" संदेश की आवृत्ति को कम कर रहा था। वैसे भी, 2 के साथ गुणा करना अब तक का सबसे अच्छा संस्करण था, लेकिन मैं इसे पूरी तरह से छुटकारा पाना चाहता हूं, क्योंकि मेरी रिकॉर्डिंग 1: 3 घंटे के बाद बंद हो जाती है। –
तो इसका मतलब है कि 2 के साथ गुणा करने के बाद, कोई बफर ओवरफ़्लो समस्या नहीं है लेकिन रिकॉर्डिंग कुछ समय के बाद बंद हो रही है? आप इसे जारी करने से पहले रिकॉर्डर रीसेट करने का प्रयास कर सकते हैं। –