|
在前面的文章中我基本实现了wifi播放wav音乐的功能,但是在此之前的博客中听到的声音都十分的难听,到这里我都十分的纳闷:为什么声音会怎么难看,有关这个项目之前的内容请看:小E开发板wifi音箱三与wifi整合,缩短内存(blog.csdn.net/chengdong1314/article/details/54426561)。最后我搞清楚了,确定是音乐文件的问题,我们这里使用《艾奇音频转换器全能大师》软件来生成wav文件,正确的设置如下:
这里最终生成了3个wav文件,测试后发现声音真的好听了很多,完全没有问题了!这里文件如下:
其中的mp3是原文件,即从网上直接下载下来的文件,而紧跟着的WAV文件就是通过《艾奇音频转换器全能大师》转换出来的wav文件。这里已经把这些文件上传到资源里了,文件如下:download.csdn.net/detail/chengdong1314/9743398
这里上传目前测试OK的代码:download.csdn.net/detail/chengdong1314/9743364
接下来将适应两种情况,一种是适应不一样的采样率,比如8K和44.1K,另外将要适应有没有fact这两种wav文件,这里最终的代码主要部分如下:
recv_buf[recbytes] = 0;
recv_buf_temp=recv_buf;
os_printf("ESP8266 TCP client task > recv data %d bytes!\n", recbytes);
if(download_file_size==0){
if((strstr(recv_buf,"RIFF")==recv_buf) && (strstr((recv_buf+8),"WAVE")==(recv_buf+8)) && (strstr((recv_buf+12),"fmt ")==(recv_buf+12))){
PCMWAVEFORMAT *wav_format;
os_printf("WAV file\n");
recv_buf_temp=recv_buf+16;
wav_format =(PCMWAVEFORMAT *)(recv_buf_temp+4);
i2sSetChannel(wav_format->wf.nChannls);
if(wav_format->wf.nChannls ==1){
i2sSetRate(wav_format->wf.nSamplesPerSec,1);
}else if(wav_format->wf.nChannls ==2){
i2sSetRate(wav_format->wf.nSamplesPerSec *2,1);
}
os_printf("%dHz samply\n",wav_format->wf.nSamplesPerSec);
recv_buf_temp +=*(et_uint32 *)recv_buf_temp +4;
if((*recv_buf_temp =='f') && (*(recv_buf_temp+1) =='a') && (*(recv_buf_temp+2) =='c') && (*(recv_buf_temp+3) =='t')){
recv_buf_temp +=4;
recv_buf_temp +=(et_uint32)((*recv_buf_temp) | (*(recv_buf_temp+1)<<8) | (*(recv_buf_temp+2)<<16) | (*(recv_buf_temp+3)<<24))+4;
os_printf("have fatm\n");
}
if((*recv_buf_temp =='d') && (*(recv_buf_temp+1) =='a') && (*(recv_buf_temp+2) =='t') && (*(recv_buf_temp+3) =='a')){
recv_buf_temp +=4;
download_file_size= (et_uint32)((*recv_buf_temp) | (*(recv_buf_temp+1)<<8) | (*(recv_buf_temp+2)<<16) | (*(recv_buf_temp+3)<<24))-8;
recv_buf_temp +=4;
//os_printf("recv_buf_temp1:%x\n",recv_buf_temp);
if((et_uint32)recv_buf_temp%4 !=0){
download_file_size -=4-(et_uint32)recv_buf_temp%4;
recv_buf_temp +=4-(et_uint32)recv_buf_temp%4;
//os_printf("recv_buf_temp2:%x\n",recv_buf_temp);
}
recbytes -=recv_buf_temp-recv_buf;
file_total_size100=0;
sector100 = AUDIO_FLASH_START_SECTOR;
os_printf("have data\n");
}
}
}
这里上传全部代码:download.csdn.net/detail/chengdong1314/9744121
这里上传本实验用的wav文件,其中的带有44.1khz的文件就是转换出来的44.1khz频率的文件,可以直接使用:download.csdn.net/detail/chengdong1314/9744489
这个项目到这里要停一下了,我有更加重要的事情去做了! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|