小E开发板wifi音箱四解决声音难听的问题

  外话:各位手头上没有esp8266的开发板注意了,目前开发快正在进行“免费开发板活动”,本人就是在他们那里申请到的开发板,开发快提供的不单单是开发板,还有他们强大的云端服务功能,实现了微信、云平台等物联网所需要的所有功能,其功能齐全,代码简洁,对于想用wifi作为产品和互联网沟通的桥梁的我们来说,确实是一个很好的选择,另外他们还有其他的模块,比如2G通信和GPS目前论坛活动地址:http://bbs.kaifakuai.com/forum.php?mod=viewthread&tid=981&extra=page%3D1,开发快官网地址:http://www.kaifakuai.com/                        》》》》》》写于2017年1月12日之前

       在前面的文章中我基本实现了wifi播放wav音乐的功能,但是在此之前的博客中听到的声音都十分的难听,到这里我都十分的纳闷:为什么声音会怎么难看,有关这个项目之前的内容请看:小E开发板wifi音箱三与wifi整合,缩短内存(http://blog.csdn.net/chengdong1314/article/details/54426561)。最后我搞清楚了,确定是音乐文件的问题,我们这里使用《艾奇音频转换器全能大师》软件来生成wav文件,正确的设置如下:

        这里最终生成了3个wav文件,测试后发现声音真的好听了很多,完全没有问题了!这里文件如下:

             其中的mp3是原文件,即从网上直接下载下来的文件,而紧跟着的WAV文件就是通过《艾奇音频转换器全能大师》转换出来的wav文件。这里已经把这些文件上传到资源里了,文件如下:http://download.csdn.net/detail/chengdong1314/9743398

              这里上传目前测试OK的代码:http://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");
                        }
                    }
                   }

                这里上传全部代码:http://download.csdn.net/detail/chengdong1314/9744121

                 这里上传本实验用的wav文件,其中的带有44.1khz的文件就是转换出来的44.1khz频率的文件,可以直接使用:http://download.csdn.net/detail/chengdong1314/9744489

                

                这个项目到这里要停一下了,我有更加重要的事情去做了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值