मैं आवाज रिकॉर्ड और 16bit pcm में तुल्यकालिक खेलते हैंएपीआई स्तर 11 में बफर और शुद्ध जावा का उपयोग करें प्रतिध्वनि रद्द करने के लिए मैंने कई तरह से कोशिश की जैसे कि एंड्रॉइड के साथ jni में webrtc ndk लेकिन किसी भी विचार के लिए मेरे लिए असफल।
AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, audioBufferSize);
AudioTrack player = new AudioTrack(AudioManager.STREAM_MUSIC, SAMPLE_RATE, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, audioBufferSize, AudioTrack.MODE_STREAM);
recorder.startRecording();
player.play();
short [] buffer = new short[1024];
short [] buffer_tmp = new short[1024];
MobileAec aec = new MobileAec();
while (at_isRun)
{
recorder.read(buffer, 0, buffer.length);
aec.doAEC(buffer, buffer_tmp)// set AEC to reference of buffer.
player.write(buffer, 0, buffer.length);
for(int i=0; i<buffer.length; i++)
buffer_tmp[i] = buffer[i];
}
उत्तर:
उत्तर № 1 के लिए -1यह स्पष्ट नहीं है कि आपके आवेदन का उद्देश्य क्या है। रिकॉर्डिंग ऑडियो और वे तुरंत इसे वापस प्रस्तुत करते हैं, जिसके परिणामस्वरूप एईसी पर नाटकीय प्रभाव पड़ेगा। आप इसके बारे में थोड़ा और पढ़ सकते हैं हाउलिंग और एईसी। कृपया अपने प्रोजेक्ट के उद्देश्य के बारे में विस्तार से बताएं और वास्तव में आप क्या हासिल करने की कोशिश कर रहे हैं।