- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
太原理工大三下学期MP3实验报告
课程设计
课程名称: 物联网传输课程设计
设计名称: MP3音乐播放器
专业班级: 物联14 学号: 201400
学生姓名:
指导教师:
2017年 6月 12日
太原理工大学课程设计任务书
学生姓名 专业班级 物联 课程名称 物联网传输课程设计 设计名称 MP3音乐播放器 设计周数 2 设计
任务
主要
设计
参数 总体概述: 基于madplay库linux应用编程实现音乐播放器
将目录重定向到文件
读文件导入链表
循环进行功能选择
(上一首,下一首,播放,暂停,继续,退出)
退出函数 设计内容
设计要求
循环进行功能选择:
1.播放
2.暂停
3.继续
4.上一首
5.下一首
6.退出
主要参考
资 料 课程PPT, 用man命令查询API, CSDN博客, 百度百科 学生提交
归档文件 封面—任务书—说明书 注:
1.课程设计完成后,学生提交的归档文件应按照:封面—任务书—说明书—图纸的顺序进行装订上交(大张图纸不必装订)。
2.可根据实际内容需要续表,但应保持原格式不变。
指导教师签名: 日期:
设计说明书
1 功能说明:
本次设计是基于madplay库linux应用编程实现了一个音乐播放器。用户可以循环进行功能的选择。主要有6个功能可以选择。1.上一首,2.下一首,3.播放,4.暂停,5.继续,6.退出。
用户使用界面
2)用户操作界面
2.功能设计
步骤:
1.总体概述:基于madplay库linux应用编程实现音乐播放器,
2.准备工作:
2.1 、引言:
madplay是一个开源mp3解码库,其对mp3解码算法做了很多优化,性能较好,很多播放器如mplayer、xmms等都是使用这个开源库进行解码的;如果要设计mp3播放器而又不想研究mp3解码算法的话,madplay是个不错的选择。
2.2 、库的使用:
2.1.1、创建一个文件用于存放madplay依赖的库
mkdir mp3lib
2.1.2、将mp3.tar.gz压缩包移动到文件mp3lib下
mv mp3.tar.gz mp3lib
2.1.3、进入mp3lib目录
cd mp3lib
2.1.4、解压mp3.tar.gz压缩包
tar –zxvf mp3.tar.gz
mp3.tar.gz压缩包中包括libmad、libid3tag、libz等库
解决方法:
可设置环境变量 ,动态连接器就从这个指定的路径下搜索共享库
export LD_LIBRARY_PATH=../mp3lib
3.1.2、拷贝一个mp3文件
madply 1.mp3
可以播放表示成功 madplay可用
3.2、程序编写
3.2.1、搭写框架
1)将目录重定向到文件
2)读文件导入链表
3)循环进行功能选择
(上一首,下一首,播放,暂停,继续,退出)
4)退出函数
3.2.2、功能实现
3.2.2.0、目录到文件操作
1)创建一个目录song用于存放音乐
mkdir song
2)将目录重定向到文件中,以便之后对文件的读取
程序中调用system(“ls song songfile”);
3.2.2.1、文件到链表操作
struct node
{
char SongName[1024];
struct node *next;
struct node *prev;
};
定义结构体,为双向链表的结点信息,包含字段歌曲名,节点的前后指针域。
思路:
1)打开文件 读取文件数据,并拼接成歌曲的正确路径
2)将路径存入节点p,将p添加入链表。
细节实现 1:
open,fgets,sprintf去实现
细节实现2:
Node *p = malloc(sizeof(Node));
strcpy(p - SongName,songname);
p - next = *head;
p - prev = NULL;
if(*head)
(*head) - prev = p;
*head = p; //新的节点成为链表头
详解:
定义一个新的节点指针p,并手动分配空间。
将路径存入节点中路径字段
并将p的next指针 指向链表头
将p的prev指针 指向空
如果此条链表不为空 将头节点的prev指针指向p
最后 让p成为链表头
链表添加成功
3)关闭文件 close
文档评论(0)