#一.mplayer播放器
https://gitee.com/qianzhen1997/linux_learning/tree/master/mymplayer
##码云链接
##在Linux下,通过mplayer播放器,C语言编写。
#二.整体思路设计流程

#三.各模块设计理念
##1 在主菜单下,按1为进行歌单列表操作,按2为歌曲播放控制,按0退出。

##2歌单列表操作,按1之后进入歌单列表操作子菜单,再按1则增加歌曲,在输入歌曲ID和歌曲的路径,就添加完成。,思路是新建一个文本文档以只写方式打开,将输入的信息写入文件中,并且加了判断如果输入的路径不存在,则提示路径不存在,并需要再次输入。按4则显示歌曲列表,,思路是把文件中的信息以链表的形式组成,遍历链表,将其中的信息打印出来。按3则删除歌曲,按3之后再输入相应的歌曲ID,则可以删除歌曲,,删除的思路是,遍历链表,通过输入的信息找到相应的链表节点,删除它,上一节点的next指向删除节点的下一节点。按2添加指定文件夹下的所有歌曲,,mode是文件或者目录的属性,属于调试信息,,再次按4查看则发现全部添加,添加文件夹下的所有歌曲思路是首先打开这个目录,然后读取目录中的内容,判断是不是文件,如果是再判断是不是以。mp3为结尾,如果也是,则说明这是应该要添加的歌曲,则添加,如果要添加子目录中的歌曲,则要用递归的思想。
##3歌曲播放控制,首先按6播放歌曲,思路是创建父子进程,在父进程中getchar()阻塞一下,在子进程通过execl函数,参数输入相应的路径和命令,就可以播放歌曲。,控制歌曲的总体思路是,通过分别有名管道发送和接收命令,通过无名管道进行父子进程通讯,按5为暂停或者再次播放,思路是输入pause\n,则可以暂停或者再次播放,按7为控制播放音量,命令为volume x 1,x为播放的具体音量,需要输入修改,将其发送后则可以改变音量,按1和按2分别为快进和快退,命令分别改为seek 10和seek -10则可以快进或者快退10秒,将这个命令发送即可。,按4为播放下一首,思路是通过read_song()这个函数读取文件中的信息,并形成链表,返回头结点,遍历链表找到和正在播放的歌曲名相同时,跳出循环,指针指向下一节点,命令为loadfile 歌曲名\n,歌曲名需要绝对路径,因此通过strcat函数都将文件中的文件名前加入了路径。。当一首歌播放完时,自动跳到下一首歌,思路是通过无名管道进行父子进程通讯,一直发送get_percent_pos\n命令,获得播放歌曲的进度,当判断为100时则调用nextsong()函数,播放下一曲。采用多线程的方式,去执行这个fun()函数,自动跳转下一曲。
##4播放时显示歌词,父子进程中通过无名管道,子进程写父进程读,思路是再创建一个线程调用fun1()函数,命令是get_time_pos\n,一方面发送后接收ANS_TIME_POSITION=秒数,通过字符串数组操作获得相应的秒数,另一方面通过读取存放歌词的.lrc文件,用fgets()函数,一行一行的读取,再通过字符串操作,获得时间的字符串,再用atof函数将其转化为浮点型,再将2者时间进行比较,因为为浮点型所以不能直接判断等于,要相减两者误差小于1e-7则相等,若相等,则输出相应的时间和歌词。因为开启了2个线程,因此用信号量加了P()和V()原子操作,这样就不会使得只能有一个线程有效。
#5心得体会
##这个项目,使我加深了对创建父子进程,无名管道通讯,有名管道通讯,多线程多进程操作,信号量的PV操作,加深了对Linux系统编程的了解,加深了对通讯的了解,综合性较强。

mplayer播放器相关推荐

  1. linux mplayer_移植mplayer播放器到EK200开发板的步骤浅析

    mplayer是一款开源多媒体播放器,以gnu通用公共许可证发布 此款软件可在各主流操作系统使用,一方面它资源占用率低:另一方面,无论是音频还是视频方面,它支持的格式相当全面,能支持播放大部分的音频. ...

  2. linux mplayer_移植mplayer播放器到MY-IMX6-EK200开发板的步骤浅析

    mplayer是一款开源多媒体播放器,以gnu通用公共许可证发布. 此款软件可在各主流操作系统使用,一方面它资源占用率低:另一方面,无论是音频还是视频方面,它支持的格式相当全面,能支持播放大部分的音频 ...

  3. mplayer播放器,没有声音.

    昨晚,我试了一下CentOS下安装的mplayer播放器,能看到时间在走,就是没有声音. 在网上找到许多朋友也遇到类似的问题.他们的解决方法是: $ mknod /dev/dsp c 14 3 $ c ...

  4. linux mplayer 编译,linux下源码安装mplayer播放器

    最近学习了build源码安装软件,老师布置的习题,用所学过的知识安装mplayer播放器.通过上网我了解到在linux系统下,mplayer播放器十分强大好用.但是,在安装的过程中遇到了很多问题,比如 ...

  5. 安装MPlayer播放器(号称Linux中的万能播放器)

    来源: ChinaUnix博客 日期: 2008.09.18 18:48 (共有条评论) 我要评论                                                   ...

  6. CentOS7 下源码安装MPlayer播放器

    最近学习了build源码安装软件,老师布置的习题,用所学过的知识安装mplayer播放器.通过上网我了解到在linux系统下,mplayer播放器十分强大好用.但是,在安装的过程中遇到了很多问题,比如 ...

  7. 10016.Linux下安装mplayer播放器

    Red Hat 9:Linux下安装mplayer播放器(zz from http://blog.csdn.net/lastking/) mplayer是linux下播放速度最快(正确安装了显卡驱动) ...

  8. 安装 Linux -Mplayer 播放器

    买了2209,为老高清,逼我再次安装这个该死的播放器 官方([url]http://www.mplayerhq.hu/design7/dload.html[/url]) 网上的淫民不晓得浪个的,介绍方 ...

  9. CentOS上安装Mplayer播放器

    CentOS官方源里的电影播放器是根本就用不了的.所以这里我们要利用第三方源来安装. 加入RPMforge源: sudo rpm -Uhv http://rpmforge.sw.be/redhat/e ...

最新文章

  1. centos安装emqtt_benchmark
  2. java 字符串加密解密_Java加密解密字符串
  3. html post与get的区别,post 和get请求的区别(html)
  4. 基本排序算法比较与选择
  5. 人,人,还是人-对需求、沟通、辅导、会议、改变、学习的狂想
  6. 企业网管服务器架设资料(极品中的极品)
  7. ORB_SLAM2+ZED 2
  8. 基于Javaee的影视创作论坛的设计与实现(含源文件)
  9. LIS O(n*lgn)
  10. 苹果android系统版本,给Mac装上的Android系统?Remix OS PC版
  11. 大数据工具七剑下天山之Flume (一)
  12. MTK MT6771处理器,helio P60芯片参考资料
  13. java 与数据库连接失败_java链接不上数据库,怎么解决!
  14. win10共享计算机win7,win10共享文件夹给win7的方法是什么_win10给win7共享文件夹的方法...
  15. 2.STM32F429 学习emWin emWin文件和应用构架
  16. c语言作业 -教师评价系统
  17. 认识Fitnesse
  18. 如何判断时间是否在跨天的时间段之内
  19. [附源码]java毕业设计医院药房管理系统
  20. 【精华】非科班通往计算机之路的书籍天梯推荐

热门文章

  1. hexo博客优化之实现来必力评论功能
  2. mysql limit offset 原理分析与使用
  3. 一文带你看透身份证归属地
  4. 【4】Postman之Tests(断言)
  5. tomato/release/src/router/pppd/pppd/auth.c:972: undefined reference to `crypt'
  6. final, finally, finalize有什么区别?
  7. 易优cms(eyoucms)免登陆发布插件php
  8. Linux临时目录/tmp(mktemp命令、mktemp指令)(mktemp -d)临时目录清理服务systemd-tmpfiles-clean.service
  9. 平面图形计算机绘图原理,计算机绘图实验
  10. FOC中电流环调试的宝贵经验总结(有理有据+全盘拖出)