音乐播放器mplayer的简单使用
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的简单使用相关推荐
- android做一个音乐播放器,制作一个简单的Android版的音乐播放器
音乐播放器是一个非常常见的应用,这篇博客就是介绍如何制作一个简单的音乐播放器,这款音乐播放器具有以下的功能:播放歌曲.暂停播放歌曲..显示歌曲的总时长.显示歌曲的当前播放时长.调节滑块可以将歌曲调节到 ...
- java简单的音乐播放器编程_简单实现java音乐播放器
学习过java语言的你,或多或少,在某天突发奇想,想着用swing做一个音乐播放器.但是,发现很难找到,相关的java代码,或者你下载的代码有问题,或者你代码里面引入的类包找不到.为了解决自如此类的问 ...
- debian Squeeze 安装Rhythmbox音乐播放器,mplayer,smplayer视频播放器.
1.安装rhythmbox #apt-get install rhythmbox 2.安装python-mutagen 解决播放器歌曲的中文乱码问题 #apt-get install python-m ...
- android音乐播放器扫描本地,简单实现Android本地音乐播放器
搜索热词 音乐播放需要调用service,在此,只是简单梳理播放流程. public class PlayMusicService extends Service { //绑定服务 调用服务的方法. ...
- mplayer音乐软件_MPlayer音乐播放器项目讲解
MPlayer音乐播放器项目讲解 一.简要介绍MPlyer音乐播放器 MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布.此款软件可在各主流操作系统使用,例如Linux和其他类Unix系 ...
- javascript实现一个自制网页音乐播放器
序 接触简书也有一段日子了,这中间的时光还是比较轻松加愉快的,那种可以和他人分享知识的欣喜和愉悦的确是非常棒.我一向都是觉得专心写自己的文就可以了,不会总是纠结有多少人在看,有多少点击等等.用心写好自 ...
- Android音乐播放器word文档,Android音乐播放器
Android音乐播放器 一个很简单很简单的音乐播放器 需要在res目录下新建raw文件夹,音乐文件放在里面,格式为后缀为.mp3格式的音乐 这里我们定义的音乐文件名称为big.mp3 layout布 ...
- android 小型音乐播放器(实现播放、下一首、上一首、自动播放、随机播放按钮、当前播放歌曲界面)
该文章主要针对 android 的音乐播放器软件进行简单的功能添加:播放.断点播放.停止.上一曲.下一曲.随机播放.显示当前播放歌曲(后续会为当前显示的播放添加动画): 软件开发流程: 1.先向内存卡 ...
- 将音乐播放器添加到WordPress网站
考虑向您的网站添加大量音频? 还是只是一首歌曲的剪辑? 使用WordPress时,有数十种不同的方法可将音乐或音频播放器添加到您的网站. 选择最适合您的选择可能很困难. 在本文中,我们将讨论一些解决方 ...
- 树莓派3B qt+mplayer制作音乐播放器(10)
内容 树莓派3B qt+mplayer制作音乐播放器:播放.暂停.上一曲.下一曲,音量调节. 平台:树莓派+qt+mplayer 1.配置 qt安装见此: https://blog.csdn.net/ ...
最新文章
- 快来试试 Spring Boot 应用可视化监控,一目了然!
- R可视化ggplot2绘制重叠密度图(Overlay Density Plots)
- android 弹出编辑框,Android编程实现的EditText弹出打开和关闭工具类
- XML文件读取工具类
- c语言每条代码的含义,为我解释一下,代码的意思。谢谢了。
- 默写测试晋级流程 1126
- docker从容器里面拷文件到宿主机或从宿主机拷文件到docker容器里面
- mongodb客户端操作常用命令
- TensorFlow tf.keras.layers.Lambda
- phpmyadmin安装配置以及相关问题
- 重磅!!Redis 6.0.0 已发布,有史以来改变最大的版本
- 十大抢手的网站压力测试工具
- 硬盘虚拟分区精灵 v2.3 bt
- 2022年8月Python小屋编程比赛获奖名单(送5本书)
- html css js php是否区分大小写 总结
- redis-trib.rb 下载
- 基于CNN+tensorflow对搜狐新闻进行分类并对函数进行封装
- 十个步骤带你了解TAPD——TAPD教程
- C++ --取出网址中域名和协议名
- 鸿蒙之境法有三乘,神都夜行录法有三乘副本组队通关攻略-神都夜行录法有三乘副本组队怎么过_牛游戏网...