基于linux的mp3播放实现代码

这是一个基于Linux的MP3播放器实现,通过扫描指定目录下的.mp3文件,将其组织成链表并进行播放控制。包括播放、暂停、下一曲、上一曲、循环播放、单曲循环和随机播放等功能。程序使用madplay进行音频播放,并通过内存映射进行进程间通信。

//mp3.c

#include <stdio.h>
#include "mp3.h"


struct music *current_music;//存储当前播放的是哪一首歌曲
int insert_count = 0;//存放歌曲数


//创建一个头节点
struct music * music_list_creat(void)
{
 struct music *mhead = (struct music *)malloc(sizeof(struct music));
 if(mhead == NULL)
 {
  printf("malloc fail\n");
  return NULL;
 }
 //mhead->next = NULL;
 //mhead->last = NULL;
 //mhead->mname = {0};
 memset(mhead,0,sizeof(struct music));
 return mhead;
}
//插入一首歌,return the new music address
struct music * music_insert(char *mname,struct music *mlast,struct music *mhead)
{
 struct music *newmusic =
 (struct music *)malloc(sizeof(struct music));
 if( newmusic == NULL )
 {
  printf("mallo newmusic fail!!\n");
  return NULL;
 }
 insert_count++;
 if( insert_count == 1 )
 {
  mhead->next = newmusic;
  
  strcpy(newmusic->mname,mname);
  newmusic->last = mhead;
  newmusic->next = mhead;
  newmusic->mid = insert_count;
 }
 else
 {
  mlast->next = newmusic;
  
  strcpy(newmusic->mname,mname);
  newmusic->last = mlast;
  newmusic->next = mhead;
  newmusic->mid = insert_count;
 }
 return newmusic;
}
//显示歌单及有几首歌
void show_music_list(struct music *mhead)
{
 int i;
 struct music *show = mhead;
 for(i = 0;i < insert_count;i++)
 {
  show = show->next;
  printf("%d.%s\n",show->mid,show->mname);
 }
 printf("歌单中有%d首歌\n",insert_count);
}
//遍历给定目录下的.mp3文件,并将它们插入到链表
void scanfc(char *path,struct music *mhead)
{
 DIR *dir=NULL;

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值