我正在使用音频轨道与解码器一起播放音频的流媒体应用程序。
将手机连接到蓝牙或断开电话时,我遇到此问题,之后音频无法播放。
04-24 11:54:36.106: I/Node FSM(14347): Check for lib [/data/data/com.sirius/lib/libomx_aac_custom.so]
04-24 11:54:36.106: I/Node FSM(14347): evt.libs.size() 1, evt.pos=03
04-24 11:54:36.116: E/AudioTrack(14347): **AudioFlinger could not create track, status: -12**
04-24 11:54:36.116: E/AudioTrack-JNI(14347): Error initializing AudioTrack
04-24 11:54:36.116: I/Node FSM(14347): Starting node OMX.PV.aacdec, inst_id=0x7915cd90
04-24 11:54:36.116: I/Node FSM(14347): evt.libs.size() 1, evt.pos=0
04-24 11:54:36.116: I/Node FSM(14347): UNKNOWN->IDLE
04-24 11:54:36.116: I/Node FSM(14347): onStateChange with no action called
04-24 11:54:36.121: I/Node FSM(14347): sending config info 1536 10 49152 9
04-24 11:54:36.121: E/android.media.AudioTrack(14347): Error code -20 when initializing AudioTrack.
04-24 11:54:36.121: I/Node FSM(14347): config info 1536 10 49152 9
音轨规格:
new AudioTrack(AudioManager.STREAM_MUSIC,
mConfig.mSampleRate,
android.media.AudioFormat.CHANNEL_CONFIGURATION_STEREO,
android.media.AudioFormat.ENCODING_PCM_16BIT,
bufferSize, AudioTrack.MODE_STREAM);
**mConfig.mSampleRate = 44100
bufferSize = 176400 (mConfig.mSampleRate * 4)
以前我的buffersize = 44100但是在播放S5设备时我遇到音频故障,因此将bufferSize增加到176400,不确定这是正确的方法。**
此外,我想知道此更改可能导致错误代码-20问题。 请让我知道可能是故障的原因以及如何解决它。
我做了一些分析并找到了以下细节,
方案: 1.当应用正在播放和连接蓝牙时。 2.当应用程序连接到蓝牙并播放时电话呼叫中断但未连接蓝牙时电话呼叫中断不会导致任何问题。
在这两种情况下都会发生这种情况,因为一旦调用任何方法,音轨本身就会尝试创建新的音频轨道。 1.“04-27 15:31:12.301:W / AudioTrack(7937):死了IAudioTrack,PCM,从start()创建一个新的” 2.“04-27 15:31:12.304:W / AudioTrack(7937):死了IAudioTrack,PCM,从processAudioBuffer()创建一个新的 3.“04-27 15:31:12.306:W / AudioTrack(7937):死了IAudioTrack,PCM,从obtainBuffer()创建一个新的”
Ex :(在第一种情况下,一旦调用本机sentdata方法上传下一个块就会出现问题,在第二种情况下暂停AudioTrack会发生这种情况)
但是当缓冲区大小较小时,这种情况不会发生。
请任何人帮助我理解这个问题。