OpenEdv-开源电子网

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

rtp接收音频,用wm8978播放不出来

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2017-6-13
在线时间
1 小时
发表于 2017-6-13 15:40:53 | 显示全部楼层 |阅读模式
2金钱
我用rtp接收完音频数据后,用wm8978播放的时候,播放时叽里咕噜的,啥都听不出来,将接收缓冲区的内容写在文件里边,然后播放就正常,将缓冲区内容直接复制给DMA缓冲区,就成这样了

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2017-6-14 21:21:05 | 显示全部楼层
你先试试直接播放ok不吧
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2017-6-9
在线时间
10 小时
发表于 2017-6-20 09:57:00 | 显示全部楼层
本帖最后由 会会问情 于 2017-6-20 10:01 编辑

本地播放这个音频文件是可以的
        WM8978_ADDA_Cfg(1,0);        //¿aÆôDAC
        WM8978_Input_Cfg(0,0,0);//1رÕêäèëí¨μà
        WM8978_Output_Cfg(1,0);        //¿aÆôDACêä3ö
       
        DMA_BUF1=mymalloc(SRAMIN,WAV_I2S_TX_DMA_BUFSIZE);//WAV_I2S_TX_DMA_BUFSIZE=500
        DMA_BUF2=mymalloc(SRAMIN,WAV_I2S_TX_DMA_BUFSIZE);
        receive_buffer=mymalloc(SRAMIN,520);
       
        if(receive_buffer&&DMA_BUF1&&DMA_BUF2){                       
                        int recbuflen=1024;
                        WM8978_I2S_Cfg(2,0);       
                        I2S2_Init(I2S_Standard_Phillips,I2S_Mode_MasterTx,I2S_CPOL_Low,I2S_DataFormat_16b);
                        I2S2_SampleRate_Set(44100);
                        I2S2_TX_DMA_Init(DMA_BUF1,DMA_BUF2,WAV_I2S_TX_DMA_BUFSIZE/2); //ÅäÖÃTX DMA
                        i2s_tx_callback=wav_i2s_dma_tx_callback;       
                        audio_stop();                                       
                        while(1) {
                                 int recbuflen=1024;
                                err = RTPReceive(cid, sock[0], receive_buffer, &recbuflen);
                                if (err != RTP_OK) printf("RTPReceive %s (%d): %s\n", 0 ? "RTCP" : "RTP", sock[0], RTPStrError(err));                                               
                                memcpy(play_cach+j,receive_buffer+12,500);
                                j+=500;
                                if(j==500000){
                                        j=0;
                                        printf(" 接收完毕,开始播放.........\r\n");
                                        while(k<500000){
                                                audio_play_song(play_cach+k);
                                                k+=500;
                                        }                                       
                                }
                        }       



u8 audio_play_song(u8* receive_buffer)
{
        u8 res;
        if(count==0){
                 wav_buffill(DMA_BUF1,receive_buffer,WAV_I2S_TX_DMA_BUFSIZE,16);
                 wav_buffill(DMA_BUF2,receive_buffer,WAV_I2S_TX_DMA_BUFSIZE,16);
                audio_start();
                count=1;
                play_flag=1;
                return res;
        }
        while(wavtransferend==0);
        wavtransferend=0;
        if(wavwitchbuf)
                wav_buffill(DMA_BUF2,receive_buffer,WAV_I2S_TX_DMA_BUFSIZE,16);//ì&#238;3&#228;buf2
        else
                wav_buffill(DMA_BUF1,receive_buffer,WAV_I2S_TX_DMA_BUFSIZE,16);//ì&#238;3&#228;buf1
        play_flag=1;
        return res;
}

回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2017-6-20 21:52:15 | 显示全部楼层
会会问情 发表于 2017-6-20 09:57
本地播放这个音频文件是可以的
        WM8978_ADDA_Cfg(1,0);        //&#191;a&#198;&#244;DAC
        WM8978_Input_Cfg(0,0 ...

那应该是你接收数据有丢失
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2017-6-9
在线时间
10 小时
发表于 2017-6-21 09:05:37 | 显示全部楼层
应该没有,把接收的数据写在文件里边,就可以播放出来,放在大的缓冲区就不行了
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2021-4-28
在线时间
1 小时
发表于 2021-5-13 11:46:49 | 显示全部楼层
您好,这边怎么实现的单片机RTP协议?可以请教一下您吗?
回复

使用道具 举报

0

主题

4

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2019-6-6
在线时间
160 小时
发表于 2021-5-19 09:12:03 | 显示全部楼层
您好,楼主实现了RTP协议了?可以放出源码出来供大家参考一下吗?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 20:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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