在linux系统下使用madplay制作音乐播放器

目的

制作一个可以在Linux环境下运行的MP3播放器。要求实现的MP3主要功能包括:播放、暂停、继续、停止、循环播放、上一曲、下一曲、退出、歌曲显示等功能。
本设计是基于madplay库实现的,程序运行时会显示一个字符界面,在该字符界面下输入相应的提示字符即可实现音乐的播放、暂停、继续、停止、上一曲、下一曲、歌词的显示等功能,也可以加入额外的一些功能。编写一个MakeFile文件,make命令来实现程序的编译。
环境搭建
Madplay是一个开源mp3解码库,对mp3解码算法做了很多优化。常用的安装环境步骤如下
创建依赖库->解压工具软件包->move可执行文件->设置环境变量
Ubuntu环境下直接执行sudo apt-get install madplay可以直接在线安装

抽象数据类型定义
1 音乐文件的存储采用双向链表的结构体music表示,列表单由music_list表示。
2 音乐文件的本机读取通过readFileList函数实现,定义char类型数组musicFilePath存放文件路径。
3 通过musicFind()函数返回音乐所在位置,在主函数的getMusicDir()有所应用,定义控制指针*pos实现上下首的播放切换。
4 使用madplay命令基础操作,定义进程pid控制。
5 定义arg[]数组存放指令的参数,定义command字符变量(char类型)来存放控制指令。

详细设计
封装madplay功能

int play(char *name)
{
    pid_t pid;
    int status;
    if((pid = fork()) < 0)
    {
        perror("Fork error\n");
        return 0;
    }
    else if(0 == pid)
    {
        waitpid(getppid(), &status, 0); // 等待父进程结束
        execlp("madplay", "madplay","-q", name, (char*)0);
        return 0;
    }
    else
    {
        return pid;    
    }
}

int suspend(pid_t pid)
{
    kill(pid, SIGSTOP);
    return 0;
}

int continuePlay(pid_t pid)
{
    kill(pid, SIGCONT);
    return 0;
}

int end(pid_t pid)
{
    kill(pid, SIGINT);
    return 0;
}

歌曲列表

music_list * createMusicList()
{
    music_list *mList;
    mList = (music_list *)malloc(sizeof(music_list));
    if(NULL == mList)
    {
        perror("fail\n");
        exit(1);
    }
    mList->length = 0;
    mList->mHead = NULL;
  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值