解码音频之后如果播放出现问题,首先需要知道解码的音频是不是正确,然后再看播放是否有问题。看解码的音频是否正确可以将PCM声音数据保存成WAV格式音频,用其他播放器播放看是否正确。
namespace {
FILE *pFile = NULL;
int g_nData = 0;
typedef char s8; //有符号8位整数
typedef short s16; //有符号16位整数
typedef int s32; //有符号32位整数
struct WAVE_TAG
{
s8 riff[4]; //"RIFF",资源交换文件标志
s32 fsize; //文件大小(从下个地址开始到文件尾的总字节数)
s8 wave[4]; //"WAVE",文件标志
};
struct WAVE_FMT
{
s8 fmt[4]; //"fmt ",波形格式标志
s32 chunsize; //文件内部格式信息大小
s16 wformattag; //音频数据编码方式 1PCM
s16 wchanles; //声道数 1,2
s32 dwsamplespersec; //采样率 例如44100
s32 dwavgbytespersec; //波形数据传输速率(每秒平均字节数),值为dwsamplespersec * wblockalign
s16 wblockalign; // 每样本的数据位数(按字节算), 其值为:通道数wchanles*每样本的数据位值wbitspersample/8,播放软件需要一次处理多个该值大小的字节数据, 以便将其值用于缓冲区的调整每样本占几个字节
s16 wbits