RVB2601 应用开发实战系列六:网络播放器设计 (二)
关键词: RVB2601、RISC-V 开发板、例程,玄铁 E906、低功耗,玄铁 E906,AliOS Things, RISC-V MCU,上手,好用,控制,智能控制,开关,WiFi&BLE
1. 前言
本例程基于 YoC 软件平台 av 组件采用 http 协议播放一首网络 mp3 歌曲。当开发板成功通过 sal(底层通过 at 指令连接内置的网卡芯片)连接网络后,可输入相应串口命令行从 web 服务器上拉取 mp3 歌曲实现边拉取音频源数据边播放的功能。开发者可基于该例程实现更为丰富的网络播放功能。 本例程名为 ch2601_webplayer_demo,可以通过 CDK 直接从 OCC 拉取。
2. 如何使用
2.1 下载代码并编译运行
通过 cdk 搜索 ch2601_webplayer_demo 并下载工程代码打开后,会有如下界面。其中框 1 为解决方案组件,框 2 中是该解决方案依赖的子功能组件。
在本例程中,主要依赖 av(音视频软件框架)、pvmp3dec(mp3 解码器)、drv_wifi_at_w800(wifi 驱动)等组件。
在 IDE 上编译通过后,点击下载进行烧录。烧录成功后,复位运行。成功运行后,串口会有如何打印输出:
2.2 网络连接
通过 ifconfig 命令可配置需要连接的热点。具体命令为:
ifconfig ap wifi_ssid wifi_psk
热点配置成功后,会有下图如下打印:
2.3 命令行播放控制
可通过在串口下输入如下命令来控制歌曲的播放
播放 http 歌曲 player play http://yocbook.oss-cn-hangzhou.aliyuncs.com/av_repo/alibaba.mp3,示例如下:
3. 例程开发
3.1 主要代码解析
3.1.1 主函数流程
主函数位于 ch2601_webplayer_demo/app/src/app_main.c 中。详细的解释如下:
3.1.2 声卡、网卡驱动注册等
代码位于 ch2601_webplayer_demo/app/src/init.c 中。
3.1.3 网络底层通信
2601 主芯片是通过 spi 与无线网卡芯片 w800 通信的。w800 中运行有完整的 lwip 网络协议栈。 drv_wifi_at_w800 组件将底层 spi 收到的网络数据(采用 at 协议封装)处理后递交到 sal(socket abstract layer)组件中。2601 通过 sal 来屏蔽底层网卡驱动的差异,向上提供标准的 BSD 网络套接字接口。 此部分代码位于 components/drv_wifi_at_w800/w800_at_port.c 中。
3.2 网络播放器使用及配置
YoC 平台中的播放器可以支持 wav、mp3、m4a、amrnb、amrwb、flac、adts 等多种音频格式的播放。同时也支持 sd 卡、http(s)、fifo、mem 等多种取流方式。url 格式的详细定义如下:
播放器相关组件详细的设计和使用方法请访问以下链接: https://yoc.docs.t-head.cn/yocbook/Chapter5-%E7%BB%84%E4%BB%B6/%E5%A4%9A%E5%AA%92%E4%BD%93%E6%92%AD%E6%94%BE%E5%99%A8/av.html
3.2.1 网络播放器在 2601 芯片上的应用
网络播放器典型代码解析如下:
3.2.2 网络播放器相关宏配置
鉴于 2601 的硬件资源比较受限,而网络播放器又提供了很多的功能。所以不太可能将播放器提供的所有功能都能够包含进去。此时就需要开发根据具体产品需要开启或配置相关功能。 例程中典型宏定义配置如下:
AV 组件中宏配置的具体说明请参考此链接中的功能配置与裁剪小节。该链接中同时会介绍典型音频播放场景的相关配置。
3.2.3 在 CDK 中如何配置宏
在解决方案名称上右击,选择弹出框中第一项,如下图所示:
在弹出框中选中 Compile 选项卡,单击下图中的红色框可配置相关宏
在弹出框中,根据功能需要配置对应的宏,保存后重新编译
注意事项:
Package 中的子功能组件在 Options 选项中会有默认的配置项(如果存在)
解决方案在依赖子功能组件时,可通过 Options 选项自行重新配置相关的宏。其在编译时会覆盖子功能组件的默认配置
4. 参考资料
YoC 软件平台:https://yoc.docs.t-head.cn/yocbook/
本文转自平头哥芯片开放社区(occ),更多详情请点击https://occ.t-head.cn/store/board?channelName=1。
评论