pcDuino-V2利用madplay播放音乐

在pcDuino的UBUNTU系统下,打开控制台,利用apt-get来下载madplay软件。

sudo apt-get install madplay

播放音乐:

madplay xxx.mp3  

xxx是mp3的文件名。

但是在播放MP3音乐的时候总是提示:

error: frame 0:lost synchornization

虽然有声音输出,但是声音不对。好像是被放慢了一半的速度,而且还有噪音。

我个人觉得是解码的问题。在网上找了好多资料也没有解决。如果有哪位朋友解决了还希望能给我说一下解决的办法。

最后,我用了一个小技巧来解决。就是在播放的时候,传入一个参数。

madplay xxx.mp3 -v 16

-v到底是什么意思,可以通过madplay -h来查看。

这样就解决了。

 

关于播放声音的部分,由于pcDuinoV2没有声卡,但是有HDMI。大家知道HDMI是可以传输声音的,所以我在网上买了一个带音频输出的HDMI转VGA的转接头,就解决了。

 

转载于:https://www.cnblogs.com/ynxf/p/6097481.html

在LVGL(Light and Versatile Graphics Library)中使用madplay播放音乐,可按如下步骤操作: ### 1. 安装madplay 在Linux系统中,可使用包管理器来安装madplay。以Ubuntu为例,使用以下命令: ```bash sudo apt-get install madplay ``` ### 2. 集成外部命令执行功能 在LVGL项目里,借助系统调用函数来执行madplay命令。在C语言中,可使用`system()`函数。以下是一个简单的示例代码: ```c #include <stdio.h> #include <stdlib.h> // 播放音乐的函数 void play_music(const char *file_path) { char command[256]; // 构建madplay命令 snprintf(command, sizeof(command), "madplay %s", file_path); // 执行命令 system(command); } ``` ### 3. 在LVGL中调用音乐播放函数 要在LVGL的事件处理函数里调用上述的音乐播放函数。以下是一个简单的LVGL按钮点击事件触发音乐播放的示例: ```c #include "lvgl/lvgl.h" // 前面定义的播放音乐函数 void play_music(const char *file_path); // 按钮点击事件处理函数 static void btn_event_cb(lv_obj_t * btn, lv_event_t event) { if(event == LV_EVENT_CLICKED) { // 替换为实际的音乐文件路径 play_music("/path/to/your/music.mp3"); } } // 创建按钮并设置事件处理函数 void create_play_button(lv_obj_t * parent) { lv_obj_t * btn = lv_btn_create(parent); lv_obj_set_pos(btn, 10, 10); lv_obj_set_size(btn, 100, 50); lv_obj_add_event_cb(btn, btn_event_cb, LV_EVENT_ALL, NULL); lv_obj_t * label = lv_label_create(btn); lv_label_set_text(label, "Play Music"); lv_obj_center(label); } ``` ### 4. 初始化LVGL并运行 最后,要初始化LVGL并运行主循环: ```c int main(void) { lv_init(); // 初始化显示驱动等(这里省略具体代码) // 创建播放按钮 create_play_button(lv_scr_act()); while(1) { lv_task_handler(); // 延时一段时间 usleep(5 * 1000); } return 0; } ``` ### 注意事项 - 要保证madplay命令在系统路径中可用。 - 确保音乐文件的路径正确,同时程序对该文件有读取权限。 - 在实际应用中,可考虑使用更安全的方法替代`system()`函数,像`popen()`,这样能更好地处理命令执行的结果和错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值