2
我正在使用網絡應用程序,所以有些時候我會丟失數據包,或者我已經開始播放,沒有播放數據。 這是我的源代碼:如何使用AudioQueueEnqueueBuffer播放靜音...與kAudioFormatMPEG4AAC_HE(VBR)
struct AQPlayerState *pAqData = (struct AQPlayerState *) m_aqData ;
UInt32 numBytesReadFromFile = 0 ;
UInt32 numPackets = 0 ;
char * pdata = (char *)inBuffer->mAudioData ;
for (int i = 0 ; i < pAqData->mNumPacketsToRead ; ++i)
{
unsigned int uiRead =GetOneFrame(pdata, pAqData->bufferByteSize - numBytesReadFromFile) ;
if (uiRead == 0)
break ;
AudioStreamPacketDescription * packetDescs = pAqData->mPacketDescs + i ;
packetDescs->mDataByteSize = uiRead ;
packetDescs->mStartOffset = numBytesReadFromFile ;
packetDescs->mVariableFramesInPacket = 0 ;
numBytesReadFromFile += uiRead ;
pdata += uiRead ;
++numPackets ;
}
if (numPackets > 0)
{
inBuffer->mAudioDataByteSize = numBytesReadFromFile ;
OSStatus state = AudioQueueEnqueueBuffer (pAqData->mQueue, inBuffer, (pAqData->mPacketDescs ? numPackets : 0), pAqData->mPacketDescs) ;
NSLog(@"HandleOutputBuffer packet count:%lu, res:%lu", numPackets, state) ;
}
else
{
inBuffer->mAudioDataByteSize = 0 ;
(*(pAqData->mPacketDescs)).mDataByteSize = 0 ;
(*(pAqData->mPacketDescs)).mStartOffset = 0 ;
(*(pAqData->mPacketDescs)).mVariableFramesInPacket = 0 ;
OSStatus state = AudioQueueEnqueueBuffer (pAqData->mQueue, inBuffer, 0, nil) ;
NSLog(@"no packet: enqueuebuffer res:%ld", state) ;
}
但如果這些是沒有包,我得到一個錯誤kAudioQueueErr_BufferEmpty,所以我只是想知道怎麼玩靜音幀與aac_he型(VBR)