은 내 가지 audiorecord 인스턴스를 초기화 : 나는 ENCODING_PCM_16BIT
을 지정했기 때문에 내가 버퍼에서 반바지를 읽을 필요가지 audiorecord 버퍼 크기
- : 여기
내 질문입니다. 맞습니까?// TODO: remember to add RECORD_AUDIO permission int audioSource = MediaRecorder.AudioSource.MIC; // TODO: I should consider Nyquist frequency and tell the user if her device can correctly detect frequencies in the range of her instrument int sampleRateInHz = getDeviceSampleRate(context); int channelConfig = AudioFormat.CHANNEL_IN_MONO; int audioFormat = AudioFormat.ENCODING_PCM_16BIT; // TODO: bufferSizeInBytes should be set according to minimum detectable frequency in order to have at least three periods int bufferSizeInBytes = AudioRecord.getMinBufferSize(sampleRateInHz, channelConfig, audioFormat); AudioRecord audioRecord = new AudioRecord(audioSource, sampleRateInHz, channelConfig, audioFormat, bufferSizeInBytes);
- 바이트의 최소 버퍼 크기가 1000 인 경우 500 개의 반바지가 있습니다. 따라서 4096 개의 샘플이 필요하다면 bufferSizeInBytes를 8192로 설정해야합니다. 맞습니까?
감사합니다.
감사 회신을 위해. "데이터는 전체 레코딩 버퍼 크기보다 작은 크기의 청크로 오디오 하드웨어에서 읽어야합니다." ([AudioRecord] (https://developer.android.com/reference/android/media/AudioRecord.html)). 따라서 4096 개의 샘플을 분석해야하고 반바지를 읽으려는 경우 8192 개의 'bufferSizeInBytes'를 사용하여 AudioRecord 인스턴스를 초기화해야합니다. 맞습니까? –
게시 한 알 고를 구현해야하는 이유는 무엇입니까? 'AudioRecord # read'를 호출하면 모든 샘플을 읽을 때까지 작업이 중단됩니다. 맞습니까? –
@AdrianoDiGiovanni 8192가'bufferSizeInBytes'에 비해 너무 크다고 생각합니다. 나는'AudioRecord'를'getMinBufferSize()'또는 그것의 몇 배수를 사용하여 만들 것입니다. – nandsito