aac 文件数据帧读取分析

1.读取文件aac音频数据头,分析出音频帧大小,保存到内存。

{
nFrameCountAudio=0;
nAACNum = 0;
FILE *fpAudio=fopen("./aac", "rb");
CPacket *pPacket_audio = GetPacket(MAX_SIZE_ONE_FRAME,PACK_TYPE_NETWORK);
if(fpAudio && pPacket_audio){

UCHAR  *p1=NULL;
int nReadSize=0, i=0,nAACLen;
UCHAR *p2=NULL;
UCHAR* pRawData=(UCHAR*)pPacket_audio->GetBuffer();
nReadSize=fread(pRawData, 1,MAX_SIZE_ONE_FRAME-64, fpAudio);
p1=pRawData;


for(i=3; i<nReadSize-3; i++){
if(pRawData[i]==0xFF && pRawData[i+1]==0xF9 && pRawData[i+2]==0x60){
p2=&pRawData[i];
nAACLen = p2-p1;
pAudioData[nAACNum]=(UCHAR *)malloc(nAACLen);
memcpy(pAudioData[nAACNum], p1, nAACLen);
p1=p2;
nAACNum++;
printf(" aac num :%d \n",nAACNum);
if(nAACNum>=MAX_NUM_AUDIO_FRAME || nAACNum >20) break;
}
}
pPacket_audio->Release();
fclose(fpAudio);
}

}

2,方法二(p1为数据帧开始位置)

nAACLen=(p1[3]&0x3)<<3 | (p1[4]&0xE0)>>5;
nAACLen=nAACLen<<8;
nAACLen=nAACLen | ((p1[4]&0x1F)<<3) | ((p1[5]>>5)&0x7);


阅读更多

没有更多推荐了,返回首页