mplayer

  • 1、mplayer的安装
  • 2、mplayer的键盘模式
    • 基本控制键:
  • 3、Slave模式:
    • 启动方法一:在终端下敲命令来启动mplayer
      • Mplayer 在slave模式下常用的命令:
    • 启动方法二:在进程中调用exec启动Mplayer程序。
    • 案例:父进程 控制 子进程的mplayer
    • 案例:获得mplayer的回应

1、mplayer的安装

sudo apt-get update
sudo apt-get install mplayer

2、mplayer的键盘模式

启动方法:
# mplayer   /home/britney_spears.avi (改为自己的路径)
全屏:
# mplayer  -vf scale=800:480  /home/britney_spears.avi

启动mplayer后可以通过键盘按键来控制mplayer播放

基本控制键:

left or right 向后/向前搜索10秒
up or down 向后/向前搜索1分钟
pageup or pagedown 向后/向前搜索10分钟
p or SPACE 暂停播放(按任意键继续)
q or ESC 停止播放并退出
0 or 9 音量控制(音量循环模式)

3、Slave模式:

可以通过给mplayer发送命令的方法来控制mplayer。

启动方法一:在终端下敲命令来启动mplayer

# mplayer  -idle  -slave  -quiet  /home/sad_or_happy.mp3
1:-ac  mad     这两个参数的意思是指定用mad解码器。
2:-idle 播放文件至文件末尾后mplayer不退出。
3:-slave 指定mplayer运行在slave模式下。
4:-quiet 指定mplayer不向屏幕上,打印乱码信息。
5:/home/britney_spears.avi 指定mplayer播放的第一首歌曲的路径。

使用这种方法运行mplayer时,mplayer默认从标准输入去获取命令。 可以在终端下敲命令控制mplayer。例如:pause //暂停mplayer播放

Mplayer 在slave模式下常用的命令:

loadfile  string    //播放string指定的歌曲。
//string为歌曲路径+文件名(例:“loadfile  ../easylove.mp3”)。
volume  x  1 //设置音量,x为音量的大小。
mute 1/0 //静音开关。1:静音;0:取消静音。
pause //暂停/取消暂停。
seek value   //快进或快递参数value指定的秒数
当value为正时,快进;当value为负时,快退。get_percent_pos //获得文件的播放进度(百分比:0--100)。
get_time_pos //获得文件的当前位置,以秒为单位,精确到小数位1位。
get_file_name //获得文件的文件名。
get_time_length //获得文件的长度,以秒为单位。get_meta_album //获得文件的 '专辑' 的元数据。
get_meta_artist //获得文件的 '艺术家' 的元数据。
get_meta_comment //获得文件的 '评论' 的元数据。
get_meta_genre //获得文件的 '流派' 的元数据。
get_meta_title //获得文件的 '标题' 的元数据。
get_meta_year //获得文件的 '年份' 的元数据。get_percent_pos ----->回应格式:ANS_PERCENT_POSITION=52
get_time_pos---->回应格式:ANS_TIME_POSITION=124.2
get_file_name --->回应格式:ANS_FILENAME='da.mp3'
get_time_length ---->回应格式:ANS_LENGTH=221.00
get_meta_album--->回应格式:ANS_META_ALBUM=''
get_meta_artist--->回应格式:ANS_META_ARTIST=''
get_meta_comment--->回应格式:ANS_META_COMMENT=''
get_meta_genre--->回应格式:ANS_META_GENRE=''
get_meta_title--->回应格式:ANS_META_TITLE=''
get_meta_year--->回应格式:ANS_META_YEAR=''

启动方法二:在进程中调用exec启动Mplayer程序。

例:ubuntu下(推荐)

execlp("mplayer",
"mplayer","-slave", "-quiet","-idle",
"-input", "file=./fifo_cmd",
"./media/sad_or_happy.mp3", NULL);

arm下:

execl("./mplayer_arm",
" mplayer_arm ", "-ac", "mad",
"-slave", "-quiet","-idle",
"-input", "file=./fifo_cmd",
"./media/sad_or_happy.mp3", NULL);
参数:
1:"-ac", "mad"
指定使用mad解码器。
2:"-slave"
MPlayer 从标准输入读取以新行 (\n) 分隔开的命令行。
3:"-quiet"
使得控制台输出消息较少。
4:"-idle"
播放文件至文件末尾后mplayer不退出
5:"-intput", "file=./tmp/cmd_fifo"
Mplayer 通过命名管道”./tmp/cmd_fifo”获取命令。
6:song_path_name
歌曲的路径+文件名首地址。
7:NULLMplayer可以通过它来判断到底有多少个参数,这个必不可少

案例:父进程 控制 子进程的mplayer

#include<stdio.h>
#include<unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>int main()
{//创建一个命名管道mkfifo("fifo_cmd", 0666);pid_t pid = fork();if(pid == 0)//子进程{//启动mplayerexeclp("mplayer", "mplayer", "-slave","-quiet",\"-idle","-input", "file=./fifo_cmd", "da.mp3",NULL);}else if(pid > 0)//父进程{//以写的方式打开命名管道 fifo_cmdint fd = open("fifo_cmd", O_WRONLY);if(fd < 0){perror("open");}sleep(10);write(fd,"loadfile love.mp3\n", strlen("loadfile love.mp3\n"));close(fd);}return 0;
}

运行结果:
10秒切换另一首歌

案例:获得mplayer的回应

#include<stdio.h>
#include<unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <pthread.h>
void* send_cmd(void *arg)//arg =&fd
{int fd = *(int *)arg;while(1){write(fd,"get_time_pos\n", strlen("get_time_pos\n"));sleep(1);}}void* recv_msg(void *arg)
{int *fd = (int *)arg;while(1){char buf[128]="";read(fd[0], buf,sizeof(buf));if(strncmp(buf,"ANS_TIME_POSITION", strlen("ANS_TIME_POSITION")) == 0){int time = 0;sscanf(buf,"ANS_TIME_POSITION=%d", &time);printf("time=%d\n",time);}}
}
int main()
{//创建一个命名管道(给mplayer发送指令)mkfifo("fifo_cmd", 0666);//创建一个无名管道(接受mplayer应答)】int pipe_fd[2];pipe(pipe_fd);pid_t pid = fork();if(pid == 0)//子进程{//将标准输出设备1 重定向fd[1]dup2(pipe_fd[1], 1);//close(1), 重定向//启动mplayerexeclp("mplayer", "mplayer", "-slave","-quiet",\"-idle","-input", "file=./fifo_cmd", "da.mp3",NULL);}else if(pid > 0)//父进程{//以写的方式打开命名管道 fifo_cmdint fd = open("fifo_cmd", O_WRONLY);if(fd < 0){perror("open");}pthread_t tid1;pthread_create(&tid1,NULL, send_cmd, &fd);pthread_detach(tid1);pthread_t tid2;pthread_create(&tid2,NULL, recv_msg, pipe_fd);pthread_detach(tid2);while(1);close(fd);}return 0;
}

音乐播放器mplayer的简单使用相关推荐

  1. android做一个音乐播放器,制作一个简单的Android版的音乐播放器

    音乐播放器是一个非常常见的应用,这篇博客就是介绍如何制作一个简单的音乐播放器,这款音乐播放器具有以下的功能:播放歌曲.暂停播放歌曲..显示歌曲的总时长.显示歌曲的当前播放时长.调节滑块可以将歌曲调节到 ...

  2. java简单的音乐播放器编程_简单实现java音乐播放器

    学习过java语言的你,或多或少,在某天突发奇想,想着用swing做一个音乐播放器.但是,发现很难找到,相关的java代码,或者你下载的代码有问题,或者你代码里面引入的类包找不到.为了解决自如此类的问 ...

  3. debian Squeeze 安装Rhythmbox音乐播放器,mplayer,smplayer视频播放器.

    1.安装rhythmbox #apt-get install rhythmbox 2.安装python-mutagen 解决播放器歌曲的中文乱码问题 #apt-get install python-m ...

  4. android音乐播放器扫描本地,简单实现Android本地音乐播放器

    搜索热词 音乐播放需要调用service,在此,只是简单梳理播放流程. public class PlayMusicService extends Service { //绑定服务 调用服务的方法. ...

  5. mplayer音乐软件_MPlayer音乐播放器项目讲解

    MPlayer音乐播放器项目讲解 一.简要介绍MPlyer音乐播放器 MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布.此款软件可在各主流操作系统使用,例如Linux和其他类Unix系 ...

  6. javascript实现一个自制网页音乐播放器

    序 接触简书也有一段日子了,这中间的时光还是比较轻松加愉快的,那种可以和他人分享知识的欣喜和愉悦的确是非常棒.我一向都是觉得专心写自己的文就可以了,不会总是纠结有多少人在看,有多少点击等等.用心写好自 ...

  7. Android音乐播放器word文档,Android音乐播放器

    Android音乐播放器 一个很简单很简单的音乐播放器 需要在res目录下新建raw文件夹,音乐文件放在里面,格式为后缀为.mp3格式的音乐 这里我们定义的音乐文件名称为big.mp3 layout布 ...

  8. android 小型音乐播放器(实现播放、下一首、上一首、自动播放、随机播放按钮、当前播放歌曲界面)

    该文章主要针对 android 的音乐播放器软件进行简单的功能添加:播放.断点播放.停止.上一曲.下一曲.随机播放.显示当前播放歌曲(后续会为当前显示的播放添加动画): 软件开发流程: 1.先向内存卡 ...

  9. 将音乐播放器添加到WordPress网站

    考虑向您的网站添加大量音频? 还是只是一首歌曲的剪辑? 使用WordPress时,有数十种不同的方法可将音乐或音频播放器添加到您的网站. 选择最适合您的选择可能很困难. 在本文中,我们将讨论一些解决方 ...

  10. 树莓派3B qt+mplayer制作音乐播放器(10)

    内容 树莓派3B qt+mplayer制作音乐播放器:播放.暂停.上一曲.下一曲,音量调节. 平台:树莓派+qt+mplayer 1.配置 qt安装见此: https://blog.csdn.net/ ...

最新文章

  1. 快来试试 Spring Boot 应用可视化监控,一目了然!
  2. R可视化ggplot2绘制重叠密度图(Overlay Density Plots)
  3. android 弹出编辑框,Android编程实现的EditText弹出打开和关闭工具类
  4. XML文件读取工具类
  5. c语言每条代码的含义,为我解释一下,代码的意思。谢谢了。
  6. 默写测试晋级流程 1126
  7. docker从容器里面拷文件到宿主机或从宿主机拷文件到docker容器里面
  8. mongodb客户端操作常用命令
  9. TensorFlow tf.keras.layers.Lambda
  10. phpmyadmin安装配置以及相关问题
  11. 重磅!!Redis 6.0.0 已发布,有史以来改变最大的版本
  12. 十大抢手的网站压力测试工具
  13. 硬盘虚拟分区精灵 v2.3 bt
  14. 2022年8月Python小屋编程比赛获奖名单(送5本书)
  15. html css js php是否区分大小写 总结
  16. redis-trib.rb 下载
  17. 基于CNN+tensorflow对搜狐新闻进行分类并对函数进行封装
  18. 十个步骤带你了解TAPD——TAPD教程
  19. C++ --取出网址中域名和协议名
  20. 鸿蒙之境法有三乘,神都夜行录法有三乘副本组队通关攻略-神都夜行录法有三乘副本组队怎么过_牛游戏网...

热门文章

  1. 十、网络编程(高琪java300集+java从入门到精通笔记)
  2. 蓝桥杯十大常见天阶功法——炎之呼吸.叁之型.动态规划--(上篇)
  3. 树莓派的img文件怎样在vmware虚拟机里面打开
  4. 基于P5.js的动态绘板
  5. 2022年R1快开门式压力容器操作最新解析及R1快开门式压力容器操作新版试题
  6. openssl的微缩图计算
  7. html页面清空标签里的内容
  8. 汇率兑换Python
  9. Windows漏洞修复报告
  10. 2020 EBC徒步功课做好 好好工作心态,Android并发原理解析