1. 程式人生 > >c語言MP3播放器

c語言MP3播放器

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <afx.h>//CString的標頭檔案
#include<time.h>//使用當前時鐘做種子
#include <windows.h>
#include<mmsystem.h>
#include <conio.h>
#pragma comment(lib,"WINMM.LIB")

void jiemian()
{
	printf("|-----------------------------------------------------|\n");
	printf("|1-->順序播放      **2-->隨機播放   **3-->單曲迴圈播放|\n");
	printf("|-----------------------------------------------------|\n");
	printf("|                                                     |\n");
	printf("|4-->切換指定歌曲  **5-->暫停       **6-->播放        |\n");
	printf("|-----------------------------------------------------|\n");
	printf("|                                                     |\n");
	printf("|7-->上一首        **8-->下一首     **9-->停止        |\n");
	printf("|-----------------------------------------------------|\n");
	printf("|                                                     |\n");
	printf("|10-->快進        **11-->後退                         |\n");
	printf("|-----------------------------------------------------|\n");

}

/*void play(int n)
{
	MCIERROR re;
    //FILE *fp;
	CString fe;
	char song[30];
	printf("請輸入歌名: ");
    fflush(stdin);
    gets(song);//輸入曲目名稱
    fe.Format("open %s alias beatit",song); 
    re=mciSendString(TEXT(fe.GetBuffer(fe.GetLength())),0,0,0);//TEXT是巨集變數,alias不能少
    printf("\n");
	mciSendString(TEXT("play beatit"),0,0,0);
	//mciSendString("play D:\\KwDownload\\song\\3.mp3",NULL,0,NULL);
	Sleep(10000000);
}*/

/*BOOL CMyDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	CFile file1("歌曲列表.lw",CFile::modeReadWrite|CFile::modeCreate);
	if(file1.m_hFile==NuLL)
	{
		CFile file1("歌曲列表。lw",CFile::modeReadWrite|CFile::modeNoTruncate);
	}
	else
	{
		while(mpd.title!=NULL)
		{
			file1.Read(&mpd,sizeof(mpd));
			int nRow=m_list.InsertItem(1,mpd,title);
			m_list.SetItemText(nRow,1,mpd,arti);
			if(mpd.head && "TAG")
			{
				CString str="MP3";
				m_list.SetItemText(nRow,2,str);
			}
		}
		file.Close;
	}
}*/

/*void pause(int n)
{
	mciSendString("pause movie",NULL,0,NULL);
}*/

int NUMBER()//獲取歌曲總數量
{
	int i=0;
	FILE *fp;//指標指向檔案;
	char SongName[1024];
	fp=fopen("列表.txt","r+");
	if(fp==NULL)
	{
		printf("open failed\n");
		exit(-1);
	}
	while(!feof(fp))
	{
		fgets(SongName,1024,fp);//將檔案內的歌名逐行輸入到SongName中儲存;
		i++;
	}
	return i;
}

void PlayList()//開啟播放列表
{
	FILE *fp;
	char SongName[1024];
	int i=0;
	fp=fopen("列表.txt","r+");
	if(fp==NULL)
	{
		printf("open failed\n");
		exit(-1);
	}
	while(!feof(fp))
	{
		fgets(SongName,1024,fp);
		i++;
		printf("%d--%s",i,SongName);
	}
	printf("\n");
}


void PlayNext(int count,int gn)//播放下一首
{
	MCIERROR def;//對函式進行宣告,通過API函式mciSendString傳遞給MCI
	CString str;//一種資料型別,能簡化MFC的很多操作 網上程式碼複製,看不懂;
	FILE *fp;
	long hour;
	void PlayPast(int count,int gn);//播放上一首
	void playsernumber();//指定序號播放
	void RandomPlay();//隨機播放
	int i=0,len,k,s;
	char song[1024]={0},sheet[1024];
	hour=clock();
	s=NUMBER();//將歌曲總數量賦值給s,方便下面使用;
	fp=fopen("列表.txt","r+");//以只讀的方式開啟文字文件
	if(fp==NULL)
	{
		printf("open failed!");
		exit(-1);
	}
	while(!feof(fp))
	{
		//j++;
		fgets(sheet,1024,fp);
		i++;
		if(i==count)
			break;
	}
	len=strlen(sheet);//將整首歌名的長度賦值給len,方便下面將歌名傳遞給陣列song[];
	fflush(stdin);//清除讀寫緩衝區,需要立即把輸出緩衝區的資料stdin進行物理寫入;
	if(i==s)//判斷是不是最後一首歌,最後一行歌名如果有回車,就把回車去掉;
	{
		for(k=0;k<len;k++)
		{
		song[k]=sheet[k];
		}
	}
	else if(i<s)
	{
		for(k=0;k<len-1;k++)
			song[k]=sheet[k];
	}
	str.Format("open %s alias Mysong",song);//將歌曲開啟
	def=mciSendString(TEXT(str.GetBuffer(str.GetLength())),0,0,0);//這個函式是為一個CString物件重新獲取其內部字元緩衝區的指標,
	//返回的LPTSTR為非const的,從而允許直接修改CString中的內容。
	mciSendString(TEXT("play Mysong"),0,0,0);//進行歌曲播放;這三句都是網上覆制的程式碼
	//Sleep(240000);
	while(scanf("%d",&gn)!=EOF)
	{
		if(gn==5)//歌曲暫停
		{
			mciSendString(TEXT("pause Mysong"),0,0,0);
			printf("successful\n");
		}
		else if(gn==6)//歌曲繼續播放
		{
			mciSendString(TEXT("resume Mysong"),0,0,0);
			printf("successful\n");
		}
		else if(gn==7)//播放上一首
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			count=count-1;
			if(count<1)
				count=s;
			printf("successful\n");
			PlayPast(count,gn);//播放上一首
		}
		else if(gn==8)//播放下一首
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);//先將正在播放的歌曲關閉
			count=count+1;
			if(count>s)
				count=1;
			printf("successful\n");
			PlayNext(count,gn);
		}
		else if(gn==9)//停止播放
		{
			mciSendString(TEXT("stop Mysong"), 0, 0, 0);
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			printf("successful\n");
		}
		else if(gn==4)//指定歌曲進行播放
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			printf("successful\n");
			playsernumber();
		}
		else if(gn==3)//單曲迴圈播放
		{
			mciSendString(TEXT("play Mysong repeat"), 0, 0, 0);
			printf("successful\n");
		}
		else if(gn==2)//隨機播放
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			RandomPlay();
		}
		else if(gn==10)//快進
		{
			hour=hour+5000;
			str.Format("seek Mysong to %ld",hour);
			mciSendString(TEXT(str.GetBuffer(str.GetLength())),0,0,0);
			mciSendString(TEXT("play Mysong"),0,0,0);
			printf("successful\n");
		}
		else if(gn==11)//快退
		{
			hour=hour-5000;
			if(hour<0)
				hour=0;
			str.Format("seek Mysong to %ld",hour);
			mciSendString(TEXT(str.GetBuffer(str.GetLength())),0,0,0);
			mciSendString(TEXT("play Mysong"),0,0,0);
			printf("successful\n");
		}
	}
	Sleep(300000);
}

void PlayPast(int count,int gn)//播放上一首
{
	MCIERROR def;//對函式進行宣告,通過API函式mciSendString傳遞給MCI
	CString str;//一種資料型別,能簡化MFC的很多操作 網上程式碼複製,看不懂;
	FILE *fp;
	int i=0,len,k,s;
	long hour;
	char song[1024]={0},sheet[1024];
	void PlayNext(int count,int gn);//播放下一首
	void playsernumber();//指定序號播放
	void RandomPlay();//隨機播放
	hour=clock();//c++裡面的計時函式
	s=NUMBER();//將歌曲總數量賦值給s,方便下面使用;
	fp=fopen("列表.txt","r+");
	if(fp==NULL)
	{
		printf("open failed!");
		exit(-1);
	}
	while(!feof(fp))
	{
		//j++;
		fgets(sheet,1024,fp);
		i++;
		if(i==count)
			break;
	}
	len=strlen(sheet);//將整首歌名的長度賦值給len,方便下面將歌名傳遞給陣列song[];
	fflush(stdin);//清除讀寫緩衝區,需要立即把輸出緩衝區的資料stdin進行物理寫入
	if(i==s)
	{
		for(k=0;k<len;k++)
		{
		song[k]=sheet[k];
		}
	}
	else if(i<s)
	{
		for(k=0;k<len-1;k++)
			song[k]=sheet[k];
	}//printf("%s %s",song,sheet);
	//song[k+1]='\0';
	str.Format("open %s alias Mysong",song);//將歌曲開啟
	def=mciSendString(TEXT(str.GetBuffer(str.GetLength())),0,0,0);//這個函式是為一個CString物件重新獲取其內部字元緩衝區的指標,
	//返回的LPTSTR為非const的,從而允許直接修改CString中的內容。
	mciSendString(TEXT("play Mysong"),0,0,0);//歌曲播放
	//Sleep(240000);
	while(scanf("%d",&gn)!=EOF)
	{
		if(gn==5)//暫停
		{
			mciSendString(TEXT("pause Mysong"),0,0,0);
			printf("successful\n");
		}
		else if(gn==6)//暫停後播放
		{
			mciSendString(TEXT("resume Mysong"),0,0,0);
			printf("successful\n");
		}
		else if(gn==7)//播放上一首
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			count=count-1;
			if(count<1)
				count=s;
			printf("successful\n");
			PlayPast(count,gn);//播放上一首
		}
		else if(gn==8)//播放下一首
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			count=count+1;
			if(count>s)
				count=1;
			printf("successful\n");
			PlayNext(count,gn);
		}
		else if(gn==9)//停止播放
		{
			mciSendString(TEXT("stop Mysong"), 0, 0, 0);
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			printf("successful\n");
		}
		else if(gn==4)//隨機播放
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			printf("successful\n");
			playsernumber();
		}
		else if(gn==3)//單曲迴圈
		{
			mciSendString(TEXT("play Mysong repeat"), 0, 0, 0);
			printf("successful\n");
		}
		else if(gn==2)//隨機播放
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			RandomPlay();
		}
		else if(gn==10)//快進
		{
			hour=hour+5000;
			str.Format("seek Mysong to %ld",hour);
			mciSendString(TEXT(str.GetBuffer(str.GetLength())),0,0,0);
			mciSendString(TEXT("play Mysong"),0,0,0);
			printf("successful\n");
		}
		else if(gn==11)//快退
		{
			hour=hour-5000;
			if(hour<0)
				hour=0;
			str.Format("seek Mysong to %ld",hour);
			mciSendString(TEXT(str.GetBuffer(str.GetLength())),0,0,0);
			mciSendString(TEXT("play Mysong"),0,0,0);
			printf("successful\n");
		}
	}
	Sleep(300000);
}


void playsernumber()    //指定序號播放
{
	MCIERROR def;
	FILE *fp;
	long hour;
	char song[1024]={0};
	char sheet[1024];   //歌單;
	CString str;
	int j=0,k=0,count=0,num,len,gn,n;
	void RandomPlay();//隨機播放
	hour=clock();
	n=NUMBER();
	//printf("%d\n",n);
	fp=fopen("列表.txt","r+");
	printf("請輸入歌前面指定數字進行播放\n");
	scanf("%d",&num);
	if(fp==NULL)
	{
		printf("open failed!");
		exit(-1);
	}
	while(!feof(fp))
	{
		//j++;
		fgets(sheet,1024,fp);
		count++;
		if(count==num)
			break;
	}
	len=strlen(sheet);
	fflush(stdin);
	if(count==n)
	{
		for(k=0;k<len;k++)
		{
		song[k]=sheet[k];
		}
	}
	else if(count<n)
	{
		for(k=0;k<len-1;k++)
			song[k]=sheet[k];
	}
	str.Format("open %s alias Mysong",song);
	def=mciSendString(TEXT(str.GetBuffer(str.GetLength())),0,0,0);
	mciSendString(TEXT("play Mysong"),0,0,0);
	while(scanf("%d",&gn)!=EOF)
	{
		if(gn==5)
		{
			mciSendString(TEXT("pause Mysong"),0,0,0);
			printf("successful\n");
		}
		else if(gn==6)
		{
			mciSendString(TEXT("resume Mysong"),0,0,0);
			printf("successful\n");
		}
		else if(gn==7)
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			count=count-1;
			if(count<1)
				count=n;
			printf("successful\n");
			PlayPast(count,gn);//播放上一首
		}
		else if(gn==8)
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			count=count+1;
			if(count>n)
				count=1;
			printf("successful\n");
			PlayNext(count,gn);
		}
		else if(gn==9)
		{
			mciSendString(TEXT("stop Mysong"), 0, 0, 0);
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			printf("successful\n");
		}
		else if(gn==4)
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			printf("successful\n");
			playsernumber();
		}
		else if(gn==3)
		{
			mciSendString(TEXT("play Mysong repeat"), 0, 0, 0);
			printf("successful\n");
		}
		else if(gn==2)
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			RandomPlay();
		}
		else if(gn==10)//快進
		{
			hour=hour+5000;
			str.Format("seek Mysong to %ld",hour);
			mciSendString(TEXT(str.GetBuffer(str.GetLength())),0,0,0);
			mciSendString(TEXT("play Mysong"),0,0,0);
			printf("successful\n");
		}
		else if(gn==11)//快退
		{
			hour=hour-5000;
			if(hour<0)
				hour=0;
			str.Format("seek Mysong to %ld",hour);
			mciSendString(TEXT(str.GetBuffer(str.GetLength())),0,0,0);
			mciSendString(TEXT("play Mysong"),0,0,0);
			printf("successful\n");
		}
	}
	Sleep(300000);
}


void RandomPlay()    //隨機播放
{
	MCIERROR def;
	FILE *fp;
	long hour;
	char song[1024]={0};
	char sheet[1024];   //歌單;
	CString str;
	int j=0,k=0,count=0,num,len,gn,n;
	hour=clock();
	n=NUMBER();
	//printf("%d\n",n);
	fp=fopen("列表.txt","r+");
	srand( (unsigned)time( NULL ) );  
          num=rand()%n+1;
	if(fp==NULL)
	{
		printf("open failed!");
		exit(-1);
	}
	while(!feof(fp))
	{
		//j++;
		fgets(sheet,1024,fp);
		count++;
		if(count==num)
			break;
	}
	len=strlen(sheet);
	fflush(stdin);
	if(count==n)
	{
		for(k=0;k<len;k++)
		{
		song[k]=sheet[k];
		}
	}
	else if(count<n)
	{
		for(k=0;k<len-1;k++)
			song[k]=sheet[k];
	}
	str.Format("open %s alias Mysong",song);
	def=mciSendString(TEXT(str.GetBuffer(str.GetLength())),0,0,0);
	mciSendString(TEXT("play Mysong"),0,0,0);
	while(scanf("%d",&gn)!=EOF)
	{
		if(gn==5)
		{
			mciSendString(TEXT("pause Mysong"),0,0,0);
			printf("successful\n");
		}
		else if(gn==6)
		{
			mciSendString(TEXT("resume Mysong"),0,0,0);
			printf("successful\n");
		}
		else if(gn==7)
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			count=count-1;
			if(count<1)
				count=n;
			printf("successful\n");
			PlayPast(count,gn);//播放上一首
		}
		else if(gn==8)
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			count=count+1;
			if(count>n)
				count=1;
			printf("successful\n");
			PlayNext(count,gn);
		}
		else if(gn==9)
		{
			mciSendString(TEXT("stop Mysong"), 0, 0, 0);
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			printf("successful\n");
		}
		else if(gn==4)
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			printf("successful\n");
			playsernumber();
		}
		else if(gn==3)
		{
			mciSendString(TEXT("play Mysong repeat"), 0, 0, 0);
			printf("successful\n");
		}
		else if(gn==2)
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			RandomPlay();
		}
		else if(gn==10)//快進
		{
			hour=hour+5000;
			str.Format("seek Mysong to %ld",hour);
			mciSendString(TEXT(str.GetBuffer(str.GetLength())),0,0,0);
			mciSendString(TEXT("play Mysong"),0,0,0);
			printf("successful\n");
		}
		else if(gn==11)//快退
		{
			hour=hour-5000;
			if(hour<0)
				hour=0;
			str.Format("seek Mysong to %ld",hour);
			mciSendString(TEXT(str.GetBuffer(str.GetLength())),0,0,0);
			mciSendString(TEXT("play Mysong"),0,0,0);
			printf("successful\n");
		}

	}
	Sleep(300000);
}

void SequentialPlay()    //順序播放
{
	MCIERROR re;
	FILE *fp;
	long here;
	char song[1024]={0};
	char sheet[1024],slen[30]={0};   //歌單;
	long int llen;
	CString fe;
	int j=0,k=0,count=0,num,len,n;
	void RandomPlay();//隨機播放
	void playsernumber();  //指定序號播放
	here=clock();
	n=NUMBER();
	//printf("%d\n",n);
	fp=fopen("列表.txt","r+");
	//printf("請輸入歌前面指定數字進行播放\n");
	num=1;
	if(fp==NULL)
	{
		printf("open failed!");
		exit(-1);
	}
	while(!feof(fp))
	{
		//j++;
		fgets(sheet,1024,fp);
		count++;
		if(count==num)
			break;
	}
	len=strlen(sheet);
	fflush(stdin);
	if(count==n)
	{
		for(k=0;k<len;k++)
		{
		song[k]=sheet[k];
		}
	}
	else if(count<n)
	{
		for(k=0;k<len-1;k++)
			song[k]=sheet[k];
	}
	fe.Format("open %s alias Mysong",song);
	re=mciSendString(TEXT(fe.GetBuffer(fe.GetLength())),0,0,0);
	mciSendString(TEXT("play Mysong"),0,0,0);
	mciSendString(TEXT("status Mysong length"),slen,255,0);//網上參考
    llen=strtol(slen,0,0);
	Sleep(llen);
    mciSendString (TEXT("close Mysong"), 0, 0, 0);
	while(n--)
	{
		 num++;
	if(fp==NULL)
	{
		printf("open failed!");
		exit(-1);
	}
	while(!feof(fp))
	{
		//j++;
		fgets(sheet,1024,fp);
		count++;
		if(count==num)
			break;
	}
	len=strlen(sheet);
	fflush(stdin);
	if(count==n)
	{
		for(k=0;k<len;k++)
		{
		song[k]=sheet[k];
		}
	}
	else if(count<n)
	{
		for(k=0;k<len-1;k++)
			song[k]=sheet[k];
	}
	fe.Format("open %s alias Mysong",song);
	re=mciSendString(TEXT(fe.GetBuffer(fe.GetLength())),0,0,0);
	mciSendString(TEXT("play Mysong"),0,0,0);
	mciSendString(TEXT("status Mysong length"),slen,255,0);//網上參考
    llen=strtol(slen,0,0);
	Sleep(llen);
    mciSendString (TEXT("close Mysong"), 0, 0, 0);
	}

	/*while(scanf("%d",&gn)!=EOF)
	{
		if(gn==5)
		{
			mciSendString(TEXT("pause Mysong"),0,0,0);
			printf("successful\n");
		}
		else if(gn==6)
		{
			mciSendString(TEXT("resume Mysong"),0,0,0);
			printf("successful\n");
		}
		else if(gn==7)
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			count=count-1;
			if(count<1)
				count=n;
			printf("successful\n");
			PlayPast(count,gn);//播放上一首
		}
		else if(gn==8)
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			count=count+1;
			if(count>n)
				count=1;
			printf("successful\n");
			PlayNext(count,gn);
		}
		else if(gn==9)
		{
			mciSendString(TEXT("stop Mysong"), 0, 0, 0);
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			printf("successful\n");
		}
		else if(gn==4)
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			printf("successful\n");
			playsernumber();
		}
		else if(gn==3)
		{
			mciSendString(TEXT("play Mysong repeat"), 0, 0, 0);
			printf("successful\n");
		}
		else if(gn==2)
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			RandomPlay();
		}
		else if(gn==10)//快進
		{
			here=here+50000;
			fe.Format("seek Mysong to %ld",here);
			mciSendString(TEXT(fe.GetBuffer(fe.GetLength())),0,0,0);
			mciSendString(TEXT("play Mysong"),0,0,0);
			printf("successful\n");
		}
		else if(gn==11)//快退
		{
			here=here-50000;
			if(here<0)
				here=0;
			fe.Format("seek Mysong to %ld",here);
			mciSendString(TEXT(fe.GetBuffer(fe.GetLength())),0,0,0);
			mciSendString(TEXT("play Mysong"),0,0,0);
			printf("successful\n");
		}
	}
	Sleep(300000);*/
}

int main()
{
	int n;
	int num;
	jiemian();
	printf("\n");
	NUMBER();
	PlayList();
	num=NUMBER();
	while(scanf("%d",&n)!=EOF)
	{
		if(n==4)
		{
			jiemian();
			playsernumber();
		}
		else if(n==2)
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			RandomPlay();
		}
		else if(n==1)
		{
			jiemian();
			SequentialPlay();
		}
		/*else if(n==1)
		{
			mciSendString (TEXT("close Mysong"), 0, 0, 0);
			SequentialPlay();
		}*/
	}
	return 0;
}





/*#include<stdio.h>
#include <windows.h>
#include <conio.h>
 
int main()
{
    printf("如果你三秒鐘之內什麼也不輸入,我就輸出-1。\n");
    Sleep(3000);
    if(!_kbhit())
        printf("-1\n");
    else
        printf("輸入了%c", getchar());
    return 0;
}*/


/*#include <stdlib.h>
#include <stdio.h>
#include <time.h> 
void main( )
{int i;
srand( (unsigned)time( NULL ) );  
       for( i = 0; i < 10;i++ )
            printf( "%d\n", rand()%100+1);
}*/

歌曲必須與程式語言放在同一個資料夾內   歌曲名需要自己手動輸入到文字文件中

相關推薦

c語言MP3播放

#include<stdio.h> #include<string.h> #include<stdlib.h> #include <afx.h>//CString的標頭檔案 #include<time.h>//使用

Console MP3播放 for C++

C++控制檯版Mp3 實現Mp3基本功能:播放 、選擇、 切換歌曲 啟動掃描播放列表檔案 掃描磁碟檔案(1、新增歌曲。2、重新掃描)存入播放列表檔案, 實現配置引數儲存 . . . .

安卓MP3播放開發實例(3)之進度條和歌詞更新的實現

tac run detail datetime style mem poll() arc call 上一次談了音樂播放的實現,這次說下最復雜的進度條和歌詞更新。因為須要在播放的Activity和播放的Service間進行交互,所以就涉及了Activi

工業串口觸摸屏開發制作mp3播放,單片機或PLC通過串口控制播放MP3音頻方法

百分比 通訊 觸摸 參與 blog 設備 並行 周期 運行 工業串口觸摸屏開發制作mp3播放器,單片機或PLC通過串口控制播放MP3音頻方法 在工業控制系統中將音樂或語音MP3的美和工控結合在一起,給人以賞心悅目的感受。隨著工業控制的發展,對工業控制的控制要求也越來越高,使

用arm-linux-gnueabihf移植MP3播放libmad-0.15.1b的時候出現錯誤提示

移植 else /dev/null -- b- line .com ibm fail diff --git a/package/libmad/libmad-0.15.1b-thumb2-fixed-arm.patch b/package/libmad/libmad-0.15

拋開flash,自己開發實現C++ RTMP直播播放

  眾所周知,RTMP是以flash為客戶端播放器的直播協議,主要應用在B/S形式的場景中。本人研究並用C++開發實現了RTMP直播流協議的播放器(延遲極低,內網可以做到百毫秒,目前已經實現PC端和Android端),結合之前做的RTMP直播採集端,可以將RTMP協議完全擴充套件到C/S形式

基於C語言的編碼(光耦)程式設計之C程式碼解析(二)

程式碼需要一個.c文件和一個.h文件。 .h文件主要配置編碼器相關引數 #define OptoKnobNumber 2 /* 旋鈕個數配置 */ #define _01_SH

c語言文字編輯

#include<stdio.h> #include<conio.h> #include<string.h> #include<stdint.h> #include<ctype.h> # define LEN sizeof(struct Lnode)

Android練習專案 Mp3播放實現 歌詞同步播放(四)

其實到後面就需要我們如何顯示歌詞,對於歌詞的同步顯示還是比較好實現的,主要通過判斷當前播放的時間和每個結點的歌詞的時間的大小,來同步對應到結點的資料,現在就是如何來實現這個問題。 其實,這個時候就需要自定義控制元件來實現。 第一步需要自定義View的屬性。

[C語言]宣告解析cdecl修改版

  一、寫在前面     K&R曾經在書中承認,"C語言宣告的語法有時會帶來嚴重的問題。"。由於歷史原因(BCPL語言只有唯一一個型別——二進位制字),C語言宣告的語法在各種合理的組合下會變得晦澀難懂。不過在15級的優先順序規則加持下,C語言的宣告

遠端WEB控制MP3播放設計(基於mini2440)

網上有很多 基於mini2440的MP3播放器設計的資料,多是按鍵控制,這裡博主做了些輕微改動,利用遠端WEB來控制MP3播放,具體怎麼實現,下面會給出,大家先看看效果: WEB介面: 後臺執行: 因為不是什麼課程設計報告,博主就不闡述的那麼詳細,這個設計主要有三部分組

從零開始學習PYTHON3講義(十四)寫一個mp3播放

《從零開始PYTHON3》第十四講 通常來說,Python解釋執行,執行速度慢,並不適合完整的開發遊戲。隨著電腦速度的快速提高,這種情況有所好轉,但開發遊戲仍然不是Python的重點工作。 大多應用是利用Python開發效率高的特點,進行遊戲原型驗證,或者在大的遊戲系統中,使用Python進行地圖、場

ESP32 開發筆記(八)ESP32 MP3 播放

ESP32 MP3 播放器 ESP32 MP3 播放器 開發環境 環境搭建 編譯執行 執行結果 ESP32 MP3 播放器 原始碼地址:GitHub 開發環境 開發框架:ESP-IDF、E

從零開始學習python,寫一個mp3播放

從零開始學習python,寫一個mp3播放器! 《從零開始PYTHON3》第十四講 通常來說,Python解釋執行,執行速度慢,並不適合完整的開發遊戲。隨著電腦速度的快速提高,這種情況有所好轉,但開發遊戲仍然不是Python的重點工作。 從零開始學習python,寫一個mp3播放器

Android練習專案 Mp3播放實現(一)

對於Android的學習,需要掌握的東西有點多,需要我們認真,小心,不斷的進取。前天突然有個想法,覺得Mp3播放器是一個可以練習的專案,於是在網上搜了下,發現有人已經寫了部落格,看了他們的部落格後,我覺得他們說的一點很對,Mp3播放器基本用到了Android裡面

windows下 利用CoreAudio,Libmad,和3D環繞音效原理實現的MP3播放

      (博主qq,1204802552,歡迎交流) 之前公司的專案用到了CoreAudio API,這是windows下一套全新的用於開發音訊應用程式的API,之前我也寫過相關的部落格      後來有一段時間,我迷上了3D環繞音效的音樂,也就是大家熟知的Echo回聲

x寶23大洋包郵的老式MP3播放簡單評測

不知道 mp3 四川 不錯 除了 屏幕 mp3播放器 普通 分享圖片 (純興趣測評,非廣告) 最近逛X寶,看到了這個古董級MP3播放器居然還在售,於是腦抽+情懷泛濫買了一個。 然後呢,從遙遠的深圳跨越好幾千公裏郵過來了這個玩意: 那節南孚5號電池是我自己的,是為了對比一

android版ape,flac,wav,mp3播放

該播放器是根據網上一位大神的java swing版本的多音訊格式播放器修改的,這是他的播放器的下載地址,java swing版本:https://github.com/tulskiy/musique.git 這只是移植的一個demo,完成的功能如下:(沒相到java swing版本移植過來是這麼麻煩的) 目

Linux c實現音樂播放(madplay)

/*      專案需求:             1.實現音樂基本功能:播放,暫停及繼續,下一首,上一首,退出。             2.自動生成歌曲列表檔案。(重定向)             3. 實現單曲迴圈。      思路:            

Objective-c語言_設定和訪問

設定器和訪問器 我們知道。一個鏈尾idea例項變數如果是被@protected 或者 @private所修飾,那麼我們將不能對該成員變數 進行復制,滿足了我們希望的封裝和安全。但是為了交換資訊,我們希望使用@public型別。似乎者兩者的矛盾 不可調節,這個時候我們就可以使