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

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;
		}
	}
}
	
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:22 天前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐