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();
}
}
}
PLZ를 사용하여 작업이 별도의 스레드에서 오디오를 재생 밖으로 분리하려고 단일 스레드에서 모든 작업을 퍼팅 수 있음 – user3835770
내가 왜 파일을 재생하기 위해 별도의 스레드를 만들 수 있는지 설명 할 수 있습니까? – user3835770