音乐播放器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:NULL
 Mplayer可以通过它来判断到底有多少个参数,这个必不可少

案例:父进程 控制 子进程的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)//子进程
	{
		//启动mplayer
		execlp("mplayer", "mplayer", "-slave","-quiet",\
		"-idle","-input", "file=./fifo_cmd", "da.mp3",NULL);
	}
	else if(pid > 0)//父进程
	{
		//以写的方式打开命名管道 fifo_cmd
		int 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), 重定向
		
		//启动mplayer
		execlp("mplayer", "mplayer", "-slave","-quiet",\
		"-idle","-input", "file=./fifo_cmd", "da.mp3",NULL);
	}
	else if(pid > 0)//父进程
	{
		//以写的方式打开命名管道 fifo_cmd
		int 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;
}
  • 31
    点赞
  • 168
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MPlayer是一个流行的音频和视频播放器,而Qt是一种跨平台的应用程序框架。结合使用MPlayer和Qt,可以制作一个功能丰富的音乐播放器。首先,你需要安装Qt和MPlayer。 关于Qt的安装,你可以参考这个链接:。它提供了Qt的安装教程,你可以按照其中的步骤进行安装。 而对于MPlayer的安装,你可以在终端中使用以下命令进行安装:sudo apt-get install mplayer。这个命令会从软件仓库中下载并安装MPlayer。 一旦你完成了Qt和MPlayer的安装,你可以开始制作音乐播放器了。你可以参考这个链接:。它提供了使用树莓派3B、Qt和MPlayer制作音乐播放器的详细步骤。在这个链接中,你将找到关于播放、暂停、上一曲、下一曲和音量调节等功能的实现方法。 如果你需要下载MPlayer的最新源码,你可以访问这个链接:。在这个链接中,你将找到MPlayer的最新版本,并且提供了下载和编译的详细步骤。 总结起来,要制作一个mplayer qt音乐播放器,你需要先安装Qt和MPlayer,然后按照指引进行配置和开发。希望这些信息对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [树莓派3B qt+mplayer制作音乐播放器(10)](https://blog.csdn.net/qq_41102371/article/details/106305346)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Qt+MPlayer音乐播放器开发笔记(二):交叉编译MPlayer以及部署到开发板播放演示](https://blog.csdn.net/qq21497936/article/details/119991329)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值