madplay命令使用(Linux音乐播放器)

本文详细介绍了madplay命令的使用方法,包括各种参数如-v、-q、-Q、-o等的功能,以及如何利用这些参数进行音乐播放时间获取、音量调整、播放模式设置等操作。此外,还提供了一个简单的程序示例,演示了如何通过系统调用madplay来实现音乐播放、暂停、恢复和停止等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

更多资料请点击:我的目录
本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。

madplay命令使用详细参数:
-v 获取音乐播放时间
-q 不存在任何打印,但现实警告
-Q 不存在任何打印
–downsample 只采用一半数据
-i 忽略CRC校验错误
-o PATH/xx.wav 可以用来转码,将mp3转为wav,也可以是其他格式。
-a 开启衰减音量 ,增加音量,衰减系统为-175~+18 (当然通过键盘±也可以调整音量)
-A 同-a
-1 -2 -m -S 分别指左声道,右声道,双声道,立体声
-s 用于seek播放 0:1:10:20 ,seek到1小时,10分钟,20秒时开始播放
-t 用于播放时间设置(定时停止) 0:1:10:20 ,播放到1小时,10分钟,20秒时就停止
-z 用于随机播放列表歌曲
-r, 用于循环播放列表歌曲
-r, --repeat[=MAX] 循环播放无限次或Max次

使用例子:

播放某首歌一次:
./madplay music/1.mp3

播放某首歌(单曲循环):
./madplay music/1.mp3 -r

播放某目录文件下的MP3歌曲一次:
./madplay music/*.mp3

播放某目录文件下的MP3歌曲(列表循环播放):
./madplay music/*.mp3 -r

播放某目录文件下的MP3歌曲(列表随机播放):
./madplay music/*.mp3 -z

程序控制madplay播放,暂停播放,恢复播放,停止播放,关闭播放器的操作

system("madplay music/*.mp3 &");						//利用system函数调用madplay播放器播放music目录下所有的.mp3音乐

system("madplay music/*.mp3 -r &");						//列表歌曲循环播放

system("killall -STOP madplay &");						//利用system函数调用killall命令暂停播放音乐

system("killall -CONT madplay &");						//利用system函数调用killall命令恢复播放音乐

system("killall -9 madplay");							//利用system函数调用killall命令将madplay终止关闭

注意: &为后台运行,如果不加&则为前台播放,将无法对其进行暂停、恢复播放操作

简单程序示例:

int music_play()
{
	printf("成功打开音乐播放器!\n");
	//system("madplay  music/*.mp3 -z &");  					//列表随机播放
	system("madplay  music/*.mp3 -r &");  						//列表循环播放
	
	//设置节点
	struct node
	{
		char *data;
		struct node *next;
		struct node *prev;
	};
	
	//初始化链表
	struct node *list_init(char *newdata)
	{
		struct node *head = malloc(sizeof(struct node));
		head->data = newdata;
		head->next = head;
		head->prev = head;
		return head;
	}
	
	//创建新节点
	struct node *newnode(char *newdata)
	{
		struct node *new = malloc(sizeof(struct node));
		new->data = newdata;
		new->next = NULL;
		new->prev = NULL;
	}
	
	//加入新节点
	int addnode(struct node *new,struct node *list)
	{
		struct node *p = list;
		while(p->next != list)
		{
			p = p->next;
		}
		new->prev = list->prev;
		new->next = list;
		list->prev = new;
		new->prev->next = new;
	}


	struct node *list = list_init("1.mp3");						//初始化双向循环链表
	char *path = "music";										//music为音乐目录文件名
	DIR *dp = opendir(path);
	struct dirent *p;
	
	while(p = readdir(dp))										//遍历目录文件
	{
		if(p->d_type == DT_REG)
		{
			if(strstr(p->d_name,".mp3")) 						//判断是否为.mp3文件
			{
				struct node *new = newnode(p->d_name); 			//创建新节点
				addnode(new,list);								//插入新节点
			}				
		}
	}
	
	char buf[20];												//用于存放拼接后的字符串
	struct node *head = list->next;
	
	int num = 0;
	for(;;)
	{
		scanf("%d",&num);
		
		if(n == 1)	//恢复播放
		{
			n = 0;
			system("killall -CONT madplay &"); 					
		}
		
		if(n == 2)	//暂停播放
		{
			n = 0;
			system("killall -STOP madplay &");					
		}
		
		
		if(n == 3)	//下一首
		{
			n = 0;
			system("killall -9 madplay");
			
			head = head->next;
			bzero(buf,20);
			sprintf(buf,"madplay %s/%s &",path,head->data);
			system(buf);
		}
		
		if(n == 4)	//上一首
		{
			n = 0;
			system("killall -9 madplay");
			
			head = head->prev;
			bzero(buf,20);
			sprintf(buf,"madplay %s/%s &",path,head->data);
			system(buf);
		}	
		
		if(n == 5)	//退出
		{
			system("killall -9 madplay");
			printf("成功退出音乐播放器!\n");
			break;
		}
	}
}
	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佳佳鸽

若文章帮到你,能不能请我喝杯茶

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值