2014-07-17 2 views
0

버퍼 크기를 늘리면 버퍼에 쓸 오디오 사운드가 늦게 재생됩니다. 버퍼의 크기가 틀리면 올바르게 재생됩니다. 파일은 늦지 않게 재생됩니다. 하나는 도울 수 ... 버퍼 크기는 64k입니다.버퍼에 쓸 때 오디오 파일이 늦게 재생됩니다. Audio Tack

public class MediaSPK 
{ 
    private static final int RECORDER_SAMPLERATE = 16000; 
    private static final int RECORDER_CHANNELS = AudioFormat.CHANNEL_OUT_MONO; 
    private static final int RECORDER_AUDIO_ENCODING = AudioFormat.ENCODING_PCM_16BIT; 

    VaxSIPUserAgent m_objVaxSIPUserAgent; 

    boolean m_bMuteSpk = false; 
    boolean m_bPlay = false; 

    AudioTrack m_objAudioTrack = null; 

    public MediaSPK(VaxSIPUserAgent objVaxSIPUserAgent) 
    { 
     m_objVaxSIPUserAgent = objVaxSIPUserAgent; 
    } 

    public void OpenSpk() 
    { 
     int nMinBuffSize = AudioTrack.getMinBufferSize(RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING); 

     //Log.i("size SPK", "" + m_nMinBuffSize); 

     m_objAudioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING, 64000, AudioTrack.MODE_STREAM); 
     m_objAudioTrack.play(); 

     m_bPlay = false; 
    } 

    public void PlaySpk(byte[] aData, int nDataSize) 
    { 
     if(m_bMuteSpk) 
     { 
      byte[] aDataSilence = new byte[nDataSize]; 
      m_objAudioTrack.write(aDataSilence, 0, nDataSize); 
     } 
     else 
     { 
      m_objAudioTrack.write(aData, 0, nDataSize); 
     } 
    } 

    public void Mute(boolean bEnable) 
    { 
     //m_bMuteSpk = bEnable; 

     //m_objAudioTrack 
    } 

    public void CloseSpk() 
    { 
     if(m_objAudioTrack == null) 
      return; 

     try 
     { 
      m_objAudioTrack.stop(); 
      m_objAudioTrack.release(); 
      m_objAudioTrack = null; 
     } 
     catch (IllegalStateException e) 
     { 
      e.printStackTrace(); 
     } 

    } 
} 

답변

0

당신이 할 수 수있는 다른 이유를

Handler mHandler = new Handler(); 

mHandler.postDelayed(new Runnable(), delay); 
+0

PLZ를 사용하여 작업이 별도의 스레드에서 오디오를 재생 밖으로 분리하려고 단일 스레드에서 모든 작업을 퍼팅 수 있음 – user3835770

+0

내가 왜 파일을 재생하기 위해 별도의 스레드를 만들 수 있는지 설명 할 수 있습니까? – user3835770