OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7145|回复: 8

stm32 VS1053 接受网络音频数据包播放没声音

[复制链接]

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2015-9-25
在线时间
3 小时
发表于 2015-9-25 18:35:30 | 显示全部楼层 |阅读模式
5金钱
新人刚学习,求助下,研究了几天了,网上这类的资料比较少,麻烦大家了。

首先在int main(void)里面初始化

 VS_Init();   // 初始化vs1053
Audiosel_Set(0);//音频通道设置为MP3

然后附上接收以后处理的代码
void udp_appcall(void) {
struct udp_demo_appstate *s = (struct udp_demo_appstate *)&uip_udp_conn->appstate;

if(uip_newdata()) {
printf("udp lport: len %d\n", uip_len);

if(0 == (udp_sta&(1<<16))) {
udp_len = uip_len;
PlayLen = uip_len;
memset(udp_data_buf, 0, sizeof(udp_data_buf));   
memcpy(udp_data_buf, uip_appdata, udp_len);   //接收到的网络音频数据
udp_sta |= 1<<12;

 //VS_Sine_Test();
VS_HD_Reset();
VS_Soft_Reset();
VS_Restart_Play();   
VS_Set_All();         
VS_Reset_DecodeTime(); //
VS_SPI_SpeedHigh(); //

i =0;
do
{
    memcpy(sz1Buff,new_udp_data_buf + i,32);   //复制32个字节
    if(VS_Send_MusicData(sz1Buff) == 0)     //向vs发送数据   
     {
        i += 32;
        printf("VS_Send_MusicData %d \n", i);
    }
     }
     while(i < PlayLen);
       sprintf(new_udp_data_buf,"Len=%d ",udp_len);//(udp_data_buf[5]-1)*256 + (udp_data_buf[6]-1));
       LCD_ShowString(30,310,200,16,16,new_udp_data_buf);
    }
}

一直都是突突突的声音,正选波测试过,是可以的。网络音频数据也检测是正确的,用其他系统的可以正常播放。麻烦大家帮忙下,万分感谢。

最佳答案

查看完整内容[请看2#楼]

网络音频数据,是wav的?还是mp3的?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-9-25 18:35:31 | 显示全部楼层
网络音频数据,是wav的?还是mp3的?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-9-25 18:35:31 | 显示全部楼层
回复【4楼】a2000030642a:
---------------------------------
要想让VS1053播放音乐,首先必须发送音乐的相关信息数据给VS1053,对于WAV,则要发送WAV头,告诉VS1053,接下来收到的数据,都是WAV数据,得到声道/采样率/位数等非常重要的信息,才可以开始播放.
如果你直接就送wav数据流,那是肯定不会播放的...
因为他并不知道你送的是什么数据.

具体细节,可以参考下我们的战舰V3的综合实验,里面 的nes游戏发声,就是vs1053做的,里面会事先发送一个wav头给VS1053.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2015-9-25
在线时间
3 小时
 楼主| 发表于 2015-9-25 18:35:31 | 显示全部楼层
问题解决了,传输的速率太慢了导致的,感谢!
回复

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2015-9-25
在线时间
3 小时
 楼主| 发表于 2015-9-25 20:58:47 | 显示全部楼层
自己顶!mp3数据是通过udp广播出来的,播放会突突突,没有一点音频出来
回复

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2015-9-25
在线时间
3 小时
 楼主| 发表于 2015-9-26 14:33:26 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
感谢原子哥的回复。mp3的,Audiosel_Set(0);  用这个设置的, 原子哥,我想问下我写的那些有错吗?我是反反复复看了很多次了,实在不知道怎么修改了。另外接受PCM数据是不是 参数改成1就行了呢?   万分感谢
回复

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2015-9-25
在线时间
3 小时
 楼主| 发表于 2015-9-29 16:23:49 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
感谢原子哥,对于mp3数据应该不需要头了吧?直接往vs1053里面输入数据应该就可以了吧? 我的mp3数据是通过网络发送过来的,然后初始化以后直接丢给vs1053,现在是很安静,一点声音都没有。 测试光碟里面的mp3播放器是没问题的,把mp3读取的那个数据换成网络接收的数据就没声音了,在linux下播放网络发送的数据又没问题,好纠结。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-9-29 21:26:02 | 显示全部楼层
回复【6楼】a2000030642a:
---------------------------------
MP3数据也需要的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2018-1-24
在线时间
8 小时
发表于 2016-12-9 16:49:45 | 显示全部楼层
楼主,我也遇到了一样的问题,我的是解析ts包后将mp3数据发送但是不解码,您是怎么解决的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 10:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表