|
我就是想知道是怎么读取的,因为一个几M的文件,挺大的,不知怎么读取比较好,就按你说的,一个采样率为128kbps的MP3文件,程序先分配1s的内存(128*2*1152=294912字节),那怎么安排解码才好,我就想到搞个循环(读取--解码--放到音频流播放,代码大概就是这样:
LPBYTE buf;
int len;
if(GetNextFrame(&buf, &len)){//读取下一帧,这是未解码的数据
IN_OUT x = {0, 0};
x = audio_decode(//解码
&m_sMPEG,
(unsigned char *)buf,
(short *)m_tempbuffer);//m_tempbuffer:用来保存解码后的数据
BASS_StreamPutData(m_mp3Stream,(void*)m_tempbuffer,x.out_bytes);//将解码后的数据添加到音频输出流),直到读完为止,结果这个过程占用CPU很大,内存也不断的变大; |
|