마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

AudioRecord로 녹음 후 재생하면 device마다 재생속도가 다릅니다.

0 추천
private static final int SAMPLING_RATE = 44100;
 
public AudioRecordingThread(String fileWavName, AudioRecordingHandler handler) {
    this.fileName_wav = fileWavName;
    this.fileName_raw = getRawName(fileWavName);
    this.handler = handler;
   
    bufferSize = AudioRecord.getMinBufferSize(SAMPLING_RATE,
     AudioFormat.CHANNEL_IN_MONO,
     AudioFormat.ENCODING_PCM_16BIT);
    audioBuffer = new byte[bufferSize];
    }
    
    @Override
    public void run() {
    FileOutputStream out = prepareWriting();
    if (out == null) { return; }
    AudioRecord record = new AudioRecord(AudioSource.VOICE_RECOGNITION, /*AudioSource.MIC*/
    SAMPLING_RATE,
    AudioFormat.CHANNEL_IN_MONO,
    AudioFormat.ENCODING_PCM_16BIT,
    bufferSize);
 
위의 소스처럼 세팅 해놓고 녹음하면, 대부분 1분 녹음하면 1분에 근접한 재생이 되는데,
 
갤럭시 노트나 넥서스로 실행했을 경우,
노트는 1분 녹음하면 60초 분량을 13~17초에 모두 재생해주거나,
넥서스는 대략 45~50초 정도가 재생이 됩니다.
 
Sample_rate 를 44100에서 48000으로 바꿨더니 시간이 약간 줄어드는걸 확인해서
22050으로 rate를 낮추면 에러가 발생합니다.
 
 output sample rate는 API17이상만 확인할수 있어서
API17이하의 device에서는 확인할수가 없어서 혹시 다른 방법을 아신다면 답변 부탁드리겠습니다.
 
혹은 device마다 재생속도가 다른 이유를 아시는 분도 답변 부탁드립니다.
 
까까모리 (140 포인트) 님이 2014년 8월 14일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...