主要功能及实现:

1,播放,暂停及继续,上一曲下一曲和退出

2,实现顺序循环播放等功能

3,可根据不同格式(.mp3)导入歌曲

完整代码:

#include <stdio.h>
#include <glob.h>
#include <unistd.h>
#include <sys/wait.h>
#include <termios.h>
#include <signal.h>
#include <termios.h>
#include <libgen.h>
#include <stdlib.h>int main()
{int ret = 0,i=0;//记录歌曲int num = 0;char ch = 0;glob_t pglob;//接收返回值,判断子进程是否结束ret = glob("/home/roots/6-8/music/*.mp3", 0, NULL, &pglob);if (ret < 0){perror("glob");return -1;}//打印歌曲名称for (i = 0; i < pglob.gl_pathc; i++){printf("%s\n", basename(pglob.gl_pathv[i]));}// 等待用户按下空格键printf("按下空格键+回车开始播放\n");while (1){ch = getchar();if (ch == ' '){break;}}//创建子进程pid_t pid = fork();while(1){if (pid == 0){system("clear");for (int j = 0; j < pglob.gl_pathc; j++){printf("%s\n", basename(pglob.gl_pathv[j]));}printf("w--暂停播放\n");printf("a--播放上一首\n");printf("s--继续播放\n");printf("d--播放下一首\n");printf("q--退出播放\n");printf("***************正在播放******************\n");printf("%s\n", basename(pglob.gl_pathv[num]));execl("/usr/bin/mpg123", "mpg123","-q", pglob.gl_pathv[num], NULL);}else{// 读取用户输入ch = getchar();if (ch != EOF){if (ch == 'w') // 暂停{kill(pid, 19); // 发送暂停信号}else if (ch == 's') // 继续播放{kill(pid, 18); // 发送继续播放信号}else if (ch == 'a') // 上一首{kill(pid, 9); // 杀死当前进程if (num == 0){num = pglob.gl_pathc - 1;}else{num--;}pid = fork();}else if (ch == 'd') // 下一首{kill(pid, 9); // 杀死当前进程if (num == (pglob.gl_pathc - 1)){num = 0;}else{num++;}pid = fork();}else if (ch == 'q') // 退出{printf("欢迎下次使用\n");kill(pid, 9); // 杀死当前进程system("stty echo");break;}}}}return 0;
}

Linux下使用mpg123实现简单的MP3音乐播放器(记录自己的学习路程)相关推荐

  1. linux下的网络音乐播放器,Linux_Songbird离开后 Linux下可以替代它的10个音乐播放器推荐,正如我们早先提到的一样, Son - phpStudy...

    Songbird离开后 Linux下可以替代它的10个音乐播放器推荐 正如我们早先提到的一样, Songbird 已经离开了Linux羊群而开源的牧草地将变得更加翠绿.但是,Linux将用什么来取代这 ...

  2. Linux下基于Libmad库的MP3音乐播放器编写

    linux下基于Libmad库的MP3音乐播放器编写 libmad是一个开源mp3解码库,其对mp3解码算法做了很多优化,性能较好,很多播放器如mplayer.xmms等都是使用这个开源库进行解码的: ...

  3. Android开发本地及网络Mp3音乐播放器(十二)创建NetMusicListAdapter、SearchResult显示网络音乐列表

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51290181 觉得博文有用,请点赞,请留言,请关注,谢谢!~ 实现功能: 实现NetM ...

  4. C#制作简单的本地音乐播放器(二)—— 显示歌词

    此篇文章主要补充 C#制作简单的本地音乐播放器(一) 中的"歌词显示"部分的内容. 页面设计部分 相关内容 本程序使用的歌词文件为lrc格式,lrc是英文lyric(歌词)的缩写, ...

  5. Android应用开发--MP3音乐播放器Service实现

    Android应用开发--MP3音乐播放器Service实现 2013年5月29日简.美音乐播放器开发记录 让网友们久等啦,关于简.美音乐播放器的开发,最重要的Service类总算是要发博了.关于An ...

  6. Android应用开发--MP3音乐播放器滚动歌词实现

    Android应用开发--MP3音乐播放器滚动歌词实现 2013年6月2日  简.美音乐播放器开发记录 -----前话 有网友给我博客评论说,让我借鉴好的Android代码,代码贴出来的时候最好整体先 ...

  7. 毕业设计 单片机MP3音乐播放器 - 物联网 嵌入式

    文章目录 1 简介 2 绪论 2.1 课题背景与目的 3 系统设计 3.1 系统架构 3.2 软件部分设计 3.3 实现效果 3.4 部分相关代码 4 最后 1 简介 Hi,大家好,学长今天向大家介绍 ...

  8. 毕业设计 嵌入式 MP3音乐播放器设计与实现

    文章目录 1 简介 2 绪论 2.1 课题背景与目的 3 系统设计 3.1 系统架构 3.2 软件部分设计 3.3 实现效果 3.4 部分相关代码 4 最后 1 简介 Hi,大家好,学长今天向大家介绍 ...

  9. stm32毕业设计 单片机MP3音乐播放器

    文章目录 1 简介 2 绪论 2.1 课题背景与目的 3 系统设计 3.1 系统架构 3.2 软件部分设计 3.3 实现效果 3.4 部分相关代码 1 简介 Hi,大家好,这里是学长今天向大家介绍一个 ...

最新文章

  1. ajax formdata 获取表单数据,node处理表单文件,获取formdata的数据
  2. mysql max connects_mysql max_connections 总是 4190
  3. mysql数据被截断_有关Mysql数据截断问题的处理方法
  4. POJ1151-Atlantis【线段树,扫描线,离散化】
  5. Matlab Compiler路径
  6. Android 高斯模糊demo
  7. 思卡乐科技发布SR3系列RFID产品
  8. mysql 8.0 ga_mysql 8.0 GA发布了
  9. 凸函数与简森不等式(Jensen's inequality)
  10. 小米删除了文件无网络无服务器,两部小米手机无网络快速互传文件
  11. 解决xftp6 要继续使用此程序您必须应用最新的更新或使用新版本
  12. 解决树莓派4B从USB启动的问题
  13. 唯有志存高远,方能风行天下
  14. 虚拟串口VSPD和XCOM的下载+安装+使用
  15. 服务器修改密码后任务暂停,windows server 2012 改密码后计划任务执行失败
  16. SSD配置和训练以及遇到的坑
  17. SAP MM 因物料有负库存导致MMPV开账期失败问题之对策
  18. 达人评测 赛扬J4105和赛扬N5095选哪个好
  19. 从游戏中学习和体会用户心理
  20. C++:开发一个游戏逻辑引擎

热门文章

  1. DJ7-4 模型机的组合逻辑控制器
  2. 未来星计算机一级考试模拟,全国计算机等级考试一级考试模拟题
  3. 【菲菲更名宝贝】批量修改文件名和扩展名
  4. Elasticsearch2.3.4 配置同义词和中文分词
  5. 对scipy.cluster.vq中whiten()函数总结
  6. MySQL的注释符号
  7. SQL中#和--+的区别——2021-10-27
  8. web漏洞挖掘指南-前端跨域漏洞
  9. 共享单车IOT物联网系统是怎么设计的?
  10. android 地图红包开发,Android红包精灵开源项目