前三篇已经对wav音频格式转换成flv格式做了一些较为详细的说明,这一篇把最后一部分写完,转换的流程为,先把amr的转化成wav格式,再把wav格式封装成
flv格式,本篇关键部分是while循环里面的部分,其他部分可以略过,其中函数D_IF_decode(st, serial, synth16, _good_frame);的作用是把一帧amr数据编码成对应的一帧wav格式数据,调用该函数需要一些相关amr音频的编解码库,需要的朋友可以上网找找
int amrToWav(const char* amrData,int amrDataLen,char* wavData){
/*
* 将长为amrDataLen个字节的AMR音频数据amrData,转换为WAV,写入wavData
* 成功返回WAV数据的字节数,失败返回-1
*/
UWord8 serial[NB_SERIAL_MAX];
Word8 synth8[L_FRAME16k*2];
Word16 synth16[L_FRAME16k];
Word16 mode = 0;
Word16 readLen = 0;
Word16 writeLen = L_FRAME16k * 2;
Word32 readByteSum = 0;
Word32 writeByteSum = 0;
Word16 i,j;
char* tempPt = synth8;
//
unsigned char flvPreviousTagSizeTemp[10];
unsigned char* flvPreviousTagNum = flvPreviousTagSizeTemp;
unsigned char flvT