完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
【平头哥RVB2601开发板试用实验】+webplayer实验 1,安装putty,下载安装剑池k。这步在以前的工程中做个。不会cd重复了。 2,导入ch2601webplayer_demo工程。 打开cdk==》file==》new==》new IoT project... 在IoT Project Wizard中找到ch2061==》next==》RVB2601==》next 点击ch2601webplayer_demo,点击Finish导入ch2601webplayer_demo工程 3、代码浅析: ch2601webplayer_demo代码结构: // app_main.c: 初始化网络和命令接口进入命令响应状态 int main(void) { board_yoc_init(); player_init() cli_reg_cmd_player(); /* 订阅 */ event_subscribe(EVENT_NETMGR_GOT_IP, network_event, NULL); event_subscribe(EVENT_NETMGR_NET_DISCON, network_event, NULL); } //cli_cmd.c 处理示例常用命令。 //init.c 网络接口和板级初始化。 player_demo.c player 播放mp3的相关命令处理,内存加载,web解析等 static player_t *g_player; static void _player_event(player_t *player, uint8_t type, const void *data, uint32_t len)//停止启动命令 { int rc; 未使用(len); 未使用(数据); 未使用(句柄); LOGD(TAG, "=====%s, %d, type = %d", __FUNCTION__, __LINE__, type); switch (type) { case PLAYER_EVENT_ERROR: rc = player_stop(player); 休息; case PLAYER_EVENT_START: { media_info_t minfo; memset(&minfo, 0, sizeof(media_info_t)); rc = player_get_media_info(player, &minfo); LOGD(标签,“=====rc = %d,持续时间 = %llums,bps = %llu,大小 = %u”,rc,minfo.duration,minfo.bps,minfo.size); 休息; } case PLAYER_EVENT_FINISH: player_stop(player); 休息; 默认值: 中断; } } 静态字符* g_url; 静态 void _webtask(void *arg) { int cnt = 0, rc, total; 字符 *val, buf[128]; wsession_t *会话; 会话 = wsession_create(); rc = wsession_get(session, g_url, 3); if (rc) { LOGE(TAG, "wsession_get fail.rc = %d, code = %d,phrase = %s", rc, session->code, session->phrase); 转到错误; } val = (char*)dict_get_val(&session->hdrs, "内容长度"); CHECK_RET_TAG_WITH_GOTO(val, err); 总计 = atoi(val); printf("##total cnt = %d 字节,读取百分比 = %3d %%", total, cnt * 100 / total); for (;;) { rc = wsession_read(session, buf, sizeof(buf), 3*1000); if (rc <= 0) { LOGI(TAG, "read may be eof.rc = %d, read cnt = %d", rc, cnt); 休息; } 其他 { cnt += rc; printf("bbbbb%3d %%", cnt * 100 / 总计); } } //LOGD(TAG, "rc = %8d, cnt = %8d", rc, cnt); 错误: wsession_destroy(会话); aos_freep(&g_url); 返回; } static void cmd_ipc_func(char *wbuf, int wbuf_len, int argc, char **argv)//安装命令参数(是网址还是文件)调用player_play { if (argc == 3 && strcmp(argv[1], "play ") == 0) { 字符 url[128]; if (strcmp(argv[2], "welcom") == 0) { snprintf(url, sizeof(url), "mem://addr=%u&size=%u", (uint32_t)&_welcome_mp3, _welcome_mp3_len); player_play(get_player_demo(), url, 0); } else { player_play(get_player_demo(), argv[2], 0); } } else if (argc == 2 && strcmp(argv[1], "stop") == 0) { player_stop(get_player_demo()); } else if (argc == 2 && strcmp(argv[1], "pause") == 0) { player_pause(get_player_demo()); } else if (argc == 2 && strcmp(argv[1], "resume") == 0) { player_resume(get_player_demo()); } else if (argc == 3 && strcmp(argv[1], "web") == 0) { g_url = strdup(argv[2]); aos_task_new("web_task", _webtask, NULL, 6*1024); } else { printf("tplayer 播放 welcom/url[http://]n"); printf("tplayer 暂停n"); printf("tplayer 简历n"); printf("tplayer 停止n"); printf("tplayer 帮助"); } } player_t *get_player_demo()//玩家前参数初始化 { if (!g_player) { ply_conf_t ply_cnf; player_conf_init(&ply_cnf); ply_cnf.vol_en = 1; ply_cnf.vol_index = 160; // 0~255 ply_cnf.event_cb = _player_event; ply_cnf.period_num = 12; // 12 * 5 period_ms = 60ms ply_cnf.cache_size = 32 * 1024; // 网络缓存大小 g_player = player_new(&ply_cnf); } 返回 g_player; } int cli_reg_cmd_player(void) { char url[128]; static const struct cli_command cmd_info = { "player", "player example", cmd_ipc_func, }; aos_cli_register_command(&cmd_info); snprintf(url, sizeof(url), "mem://addr=%u&size=%u", (uint32_t)&_welcome_mp3, _welcome_mp3_len); player_play(get_player_demo(), url, 0); 返回0; } 4,修改init.c static void network_init() { .... if (app_netmgr_hdl) { utask_t *task = utask_new("netmgr", 2 * 1024, QUEUE_MSG_COUNT, AOS_DEFAULT_APP_PRI); netmgr_service_init(任务); netmgr_config_wifi(app_netmgr_hdl, "xxxx-xxxx", 9, "xxxxxxxxx", 9); //这行添加一下自己家的WiFi用户名和密码 netmgr_start(app_netmgr_hdl); } } 为了每次启动的时候不要老是设置wifi用户和密码 5,编译下载运行。 6、实验: putty设置好串口11,连接率5200,n8,1。如果没有信息一下刷新键。 子板启动后查看有ip地址就对了。也可以用ifconfig查。 这个时候可以输入命令:就可以播放了 播放器播放http://yocbook.oss-cn-hangzhou.aliyuncs.com/av_repo/alibaba.mp3 但如果我们想播放自己的网络音乐怎么办呢? 7,制作简单的网络服务器。 使用node.js express框架有兴趣的可以看看https://www.expressjs.com.cn/。 安装 node.js 建立一个目录:d:nodewebtest 安装快递 输入 D:nodewebtest>npm init -y 输入 D:nodewebtest>npm install express --save 输入 D:nodewebtest>npm install nodemon -g 输入 D:nodewebtest>npm install serve-index --save 输入 D:nodewebtest>npm install multiparty --save 创建一个js文件music-js-webtest.js如下: var serveIndex = require('serve-index') var serveStatic = require('serve-static') var multiparty = require('multiparty') var util = require('util') // 节点的内核工具包 var LOCAL_BIND_PORT = 3000 var app = express() app.use(bodyParser.json()) // POST请求 app.post('/', function (req, res) { console.log(req.body) // 接收客户端发送请求的数据 res.json(req.body) // 响应数据到客户端 //res.json(req.query) }) // 配置媒体文件夹mymusic var serve = serveStatic('./mymusic') app .use('/', serveIndex('./mymusic', {'icons': true})) // GET 处理请求 app.get('/*', function(req,res) { 服务(req, res) }); console.log(`启动文件服务器::${LOCAL_BIND_PORT},按ctrl + C退出`) app.listen(LOCAL_BIND_PORT) 8、实验2 D:nodewebtest>里面建立一个mymusic目录,里面放放播放的mp3文件(下面的实验里,这个目录里面现在有001.mp3,002.mp3) 在目录里面启动node server: 节点音乐-js-webtest.js 在网页里面运行就可以播放了。 实验发现: 平头哥RVB2601的播放器可以解析192.168..的命令 和http://yocbook.oss-cn-hangzhou.aliyuncs.com/av_repo/alibaba.mp3,_ 不能解析127.0.0.1:3000...和localhost:3000...命令 现在运行: 播放器播放http://192.168.1.6:3000/002.mp3就可以播放音乐了。 9,实验结束。 文章转载自:平头哥芯片开放社区作者:damiaa |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
【平头哥Sipeed LicheeRV 86开发板试用体验】Waft初体验
15715 浏览 1 评论
13766 浏览 4 评论
【平头哥Sipeed LicheeRV 86开发板试用体验】四、烧写waft系统&搭建waft测试环境
19689 浏览 2 评论
59141 浏览 19 评论
【限时福利】加入芯片开发社区,领100G电子工程师资料大礼包
88264 浏览 121 评论
邀请函 | 3月2日 来上海参加平头哥“玄铁RISC-V生态大会”
795浏览 0评论
读书分享会 | 玄铁RISC-V处理器入门与实战电子书免费下载!
694浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 20:39 , Processed in 0.597977 second(s), Total 62, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号