音樂播放器編程
A. 如何用 c# 寫一個精美的 音樂播放器
首先你需要用純代碼(or控制台)實現音樂的播放
並且利用面向對象的方法 形成自己的成型的播放器引擎模塊
其次 界面設計 這個有很多途徑 比如使用winform wpf dx
這三種方式分別對應不同的底層渲染技術
winform對應的是GDI+ 是軟體渲染
wpf和dx都是硬體渲染
一般你只做音樂播放器不是視頻播放器的話winform就足夠了...碰不到dx
基礎界面
學習並且運用GDI+ 自己繪制控制項 合理運用ulw這個API
是開發美觀的桌面程序很必要的一點... wrox有本專門講gdi的教材 如果沒學過的話試著讀那本書
基礎功能
如何雙擊音樂文件就自動打開你的播放器 記得那個static void main(string[] args)的args么
如何拖拽一個文件進你的播放器 自己學 winform自帶了一籮筐事件
當你學了就會發現拖拽其實是一個很有趣的操作~~
進階界面
一成不變的界面不會看煩么...開發自己的皮膚引擎....
想想如何自己設計一種約定 把界面上的背景圖 按鈕都變成可替換的
進階功能
只是播放文件成功了 如何設計一個播放列表呢 其實只要捕獲音樂播放結束的事件 然後切換到下一個文件就好了
如何顯示歌詞呢 你要做一個lyc文件分析器...然後用GDI按照播放時間軸把它畫出來...
桌面歌詞也是一樣...不同的是你要畫在ulw出來的窗體上 怎麼提高效率就要自己思考了
進階播放特效
這個東西應該和p1的那個引擎一起說
當你界面堆疊出來以後 你可能更多的關注功能 比如最簡單的均衡器
如果你的播放引擎可編程性比較強...或者這些功能已經自帶了orz(好高端...)...就在界面上把它實現了吧....否則的話你要學習很多聲音文件編解碼的故事....這已經是專業范疇了=x=
一步一步的走吧 什麼不會學什麼
當你能做出和千千靜聽一模一樣的播放器的時候 我想你的C#一定很厲害了>.<
順帶我推薦用bass library作為底層音樂播放引擎 它的編程性比較好
B. 用51單片機怎麼製作音樂播放器 求幫助
簡單點的可以用一個語音模塊,通過IO口控制語音模塊,編程即可實現
C. 誰會用c語言編一個「音樂播放器」。。。要涉及『編碼、數組、函數、文件』等知識。。。十萬火急,
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include <conio.h>
void main()
{
void set(int *set1,int *set2,char *f,char *n,int *t,int rate,int num);
void music(int *set1,int *set2,int num);
int flag=0;
FILE *f1;
int t;
int rate;
char in[3];
int i;
int n;
char *frequency;
char *note;
int *time;
int *set1;
int *set2;
int menu;
int FileName[30];
while(1)
{
f1=NULL;
flag=0;
frequency=NULL;
note=NULL;
time=NULL;
set1=NULL;
set2=NULL;
i=n=0;
printf("1 播放程序自帶的音樂music1\n");
printf("2 播放程序自帶的音樂music2\n");
printf("3 通過輸入文件名進行音樂的播放\n");
printf("4 退出\n");
while(1)
{
scanf("%d",&menu);
if(menu==1)
{
strcpy(FileName,"music1.txt");
break;
}
if(menu==2)
{
strcpy(FileName,"music2.txt");
break;
}
if(menu==3)
{
scanf("%s",FileName);
break;
}
if(menu==4)
exit(1);
}
printf("\n該文件的音樂編碼如下:\n");
/*-------------------------------------*/
if((f1=fopen(FileName,"r"))==NULL)
{
printf("不能打開文件!\n");
exit(1);
}
/*-------------------------------------*/
fscanf(f1,"%d",&rate);
frequency=(char *)malloc(sizeof(char));
note=(char *)malloc(sizeof(char));
time=(int *)malloc(sizeof(int));
while(!feof(f1)&&flag!=1)
{
fscanf(f1,"%s%d",in,&t);
if(t!=-1)
{
printf("%s %d ",in,t);
frequency[i]=in[0];
note[i]=in[1];
time[i]=t;
i++;
n++;
frequency=(char *)realloc(frequency,(i+1)*sizeof(char));
note=(char *)realloc(note,(i+1)*sizeof(char));
time=(int *)realloc(time,(i+1)*sizeof(int));
}
else
flag=1;
}
fclose(f1);
for(i=0;i<n;i++)
{
switch(frequency[i])
{
case 'h':
switch(note[i])
{
case '1':
note[i]=523;
time[i]=time[i]*rate;
break;
case '2':
note[i]=587;
time[i]=time[i]*rate;
break;
case '3':
note[i]=659;
time[i]=time[i]*rate;
break;
case '4':
note[i]=698;
time[i]=time[i]*rate;
break;
case '5':
note[i]=784;
time[i]=time[i]*rate;
break;
case '6':
note[i]=880;
time[i]=time[i]*rate;
break;
case '7':
note[i]=988;
time[i]=time[i]*rate;
break;
}
break;
case 'm':
switch(note[i])
{
case '1':
note[i]=262;
time[i]=time[i]*rate;
break;
case '2':
note[i]=296;
time[i]=time[i]*rate;
break;
case '3':
note[i]=330;
time[i]=time[i]*rate;
break;
case '4':
note[i]=349;
time[i]=time[i]*rate;
break;
case '5':
note[i]=392;
time[i]=time[i]*rate;
break;
case '6':
note[i]=440;
time[i]=time[i]*rate;
break;
case '7':
note[i]=494;
time[i]=time[i]*rate;
break;
}
break;
case 'l':
switch(note[i])
{
case '1':
note[i]=131;
time[i]=time[i]*rate;
break;
case '2':
note[i]=147;
time[i]=time[i]*rate;
break;
case '3':
note[i]=165;
time[i]=time[i]*rate;
break;
case '4':
note[i]=175;
time[i]=time[i]*rate;
break;
case '5':
note[i]=196;
time[i]=time[i]*rate;
break;
case '6':
note[i]=220;
time[i]=time[i]*rate;
break;
case '7':
note[i]=247;
time[i]=time[i]*rate;
break;
}
break;
}
for(i=0;i<n;i++)
{
sound(note[i]);
delay(time[i]);
nosound();
}
free(frequency);
free(note);
free(time);
free(set1);
free(set2);
putchar('\n');
}
}
}
D. 多媒體編程技術--------製作音樂播放器
最佳答案其實 網上有很多 關於類似的開發源代碼,我給你找一些資料吧。。在VB中使用MCI指令設計多媒體程序湖北趙軍 《VB多媒體程序設計》一文詳細的介紹了VB中多媒體控制項MCI.VBX的用法。用MCI.VBX控制項可以非常方便,快捷的製作出一個多媒體作品。其固然好,但MCI.VBX控制項的控制界面有些太"古老",能不能自己做一個精美的控制界面?另外,有時程序中只想放聲音而已,用MCI.VBX感覺有"殺雞用宰牛刀"的味道,有沒有"殺雞刀"可用?答案都是肯定的。那就是Windows為多媒體程序的設計提供的標准多媒體控制介面,即 MCI(Media Control Interface)。 MCI介面 MCI覆蓋了音頻、視頻、影片、激光視碟機、和錄像機的多媒體的主要產品,夠滿足大多數多媒體應用程序的需要。對於標准設備安裝相應的Mci Driver,Windows即可對此進行訪問操作,對於非標准設備如果它提供MCI Driver,可以直接從平台發出MCI命令對之進行操作。因此Windows對MCI標準的支持可使Windows能夠支持所有符合MCI標準的設備。其突出的優點及設備無關性,要更換設備是只要更換相應的MCI Driver,應用系統無需修改即可操作新的設備。MCI設備 應用系統通過指定一個MCI設備的類型區分設備,由於前幾期已有文章介紹了已定義的設備類型,這里就不再敘述了。Windows3.x API中MCI函數 MCI指令有兩種風格:命令-字元串介面(Command-String Interface)和命令-消息介面(Command-Message Interface)。Windows API中提供了三組MCI函數(全以mci詞首開始)。Command-String Interface MciSendString()Mciexecute()Command-Message Interface MciSendCommand()MciGetDeviceID()CSI And CMI Mix Interface MciGetErrorString()McisetYieldProc() (VB中不支持)MCI指令還有其相對固定的格式,即:Command Device_Name Arguments[Wait][notify]Command:要使用的MCI指令,如Play等。Device_Name:設備名稱或文件名,如cdAudio等。Argements:參數。例如:Play cdAudio Wait。VB MCI編程實例 播放聲音文件(wav,midi) 播放聲音文件最簡單的函數是(2)組中的mciExecute(),他只需傳遞一組字元串即可。在VB Moudel中聲明為:DECLARE FUNCTION MCIExecute Lib "MMSystem"(ByVal CommandString As String)As Integer好了!現在只需在你的程序里加入:Result%=MCIExecute("Play C:\windows\tata.wav")就可以聽到美妙的聲音了。但這個函數的功能似乎是太簡單了,例如不能返回字元串等。下一步我們來試一試MCISendString()這個函數來播放放聲音文件,MCISendString()函數在VB Moudel中聲明為:Declare Function mciSendString Lib "MMSystem"(ByVal lpstrCommand As String,lpstrString As Any,ByVal wRtnLenght As Integer,ByVal hcallback as Integer)AS Long (windows 3.X)Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long(windows 95)其中第一個參數是告訴MCI所做的事情;第二個參數為該函數返回的字元串信息:第三個參數是用於存放返回的字元串的緩沖區的大小:第四個參數用於建立一個調用返回參數,在VB中為"0"。接下來就可以用MCI指令做事情了,播放聲音文件的一些常用的MCI指令如下表:MCI指令 功能參數 打開聲音文件播放聲音文件暫停恢復搜索指定位置開始錄音保存當前文件停止關閉聲音文件 Alias 表示打開聲音文件的別名From start_time to end_time 通常以秒為單位 To position ,to start,to end開始錄音後必須保存文件 讀者只需按照上表的命令,在使用MCIsendString函數即可播放文件了,這里就不給例子了。播放CD音頻(Cdaudio) "雖然有一些強大的CD播放器,但我還是喜歡自己動手來做一個,哪怕是最簡單的",只是每一個初學編程的人都想做的事,現在讓我們來把夢想變成現實,來製作一個簡單的播放器。源程序如下:聲明部分:Option ExplicitDeclare Function mcisendstring Lib "MMSystem" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal wReturnLength As Integer, ByVal hCallback As Integer) As LongGlobal Result As IntegerGlobal ReturnString As String * 128程序部分:Sub Command1_Click ()result = mcisendstring("play CDAudio", returnstring, 1End subSub Command2_Click ()result = mcisendstring("pause CDAudio", returnstring, 127, 0)End SubSub Command3_Click ()result = mcisendstring("stop CDAudio", returnstring, 127, 0)result = mcisendstring("close CDAudio", returnstring, 127, 0)End SubSub Command4_Click ()result = mcisendstring("stop CDAudio", returnstring, 127, 0)result = mcisendstring("close CDAudio", returnstring, 127, 0)result = mcisendstring("set CDAudio door open", returnstring, 127, 0)End SubSub Form_Load ()result = mcisendstring("close CDAudio", returnstring, 127, 0)result = mcisendstring("open CDAudio shareable", returnstring, 127, 0) '以共享的方式打開If result <> 0 ThenMsgBox "不能打開CDAudio設備!", 16, "錯誤"EndElseresult = mcisendstring("status CDAudio number of tracks", returnstring, 127, 0)Label4.Caption = Left$(returnstring, InStr(returnstring, Chr$(0)) - 1)'清除多餘的字元result = mcisendstring("status CDAudio current track", returnstring, 127, 0)CurrentTrackNumber = Left$(returnstring, InStr(returnstring, Chr$(0)) - 1)'得到當前的歌曲號result = mcisendstring("status CDAudio length track " & CurrentTrackNumber, returnstring, 127, 0)label6.Caption = Left$(Left$(returnstring, InStr(returnstring, Chr$(0)) - 1), 5)'得到當前的歌曲時間End IfEnd Sub以上程序在Windows 3.x vb3.0中通過,在32位 Windows中只需改變MciSendstring()聲明即可。Video 視頻(AVI) 我每當看一張多媒體光碟時,都會被其中的一些數字電影所折倒。現在有了MCI我們也可以播放AVI動畫了,並且並不他們的差。其源程序如下:VERSION 5.00Begin VB.Form AVI Appearance = 0 'FlatBackColor = &H00FFFFFF&Caption = "AVI播放器 "ClientHeight = 2700ClientLeft = 3105ClientTop = 3405ClientWidth = 4710ForeColor = &H80000008&LinkTopic = "Form1"PaletteMode = 1 'UseZOrderScaleHeight = 180ScaleMode = 3 'PixelScaleWidth = 314WindowState = 2 'MaximizedEndAttribute VB_Name = "AVI"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = FalseOption ExplicitPrivate Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As LongPrivate Sub Form_Click()PlayVideo "f:\2.avi", AVI.hWndEndEnd SubPrivate Function Mcistring(commandstring As String) As StringDim returnstring As String * 256Dim mmy As Integermmy = mciSendString(commandstring, returnstring, 255, 0)Mcistring = returnstringEnd FunctionPrivate Sub PlayVideo(FileName As String, ByVal hWindow As Integer)Dim commandstring As StringDim pstring As String * 255'打開AVI設備commandstring = "Open " & FileName & " alias AVI"pstring = Mcistring(commandstring)'設置輸出窗口commandstring = "Window AVI handle " & Str$(hWindow)pstring = Mcistring(commandstring)'定義全屏commandstring = "Put AVI destination at 0 0 640 480"'讀者不妨試試改改字元串中0 0 648 480 幾個字元,你會大吃一驚的!但要注意字元之 間要有空格。(顯示模式為:640*480) pstring = Mcistring(commandstring)'播放AVIMousePointer = 11commandstring = "Play AVI wait "pstring = Mcistring(commandstring)MousePointer = 0'關閉AVI設備commandstring = "Close AVI"pstring = Mcistring(commandstring)End Sub以上程序也只是用到了MCI指令的一小部分,但是實現功能卻很強大,寫到這我們不能不感謝Microsoft的程序工程師們!(VB5.0 Windows 95中通過,在Windows 3.x中只需改變聲明即可,但必需按裝Video For Windows。)五、結束語 Windows強大的MCI為多媒體的程序設計開辟了廣闊的天地,如果我們靈活應用它,可以作出一個不錯的多媒體程序。由於篇幅有限,在加上本人能力有限,關於Windows API的MciSendCommand()函數本人尚未完全掌握,有興趣的讀者可參考有關書籍。
E. linux虛擬機下bash shell編程,製作一個音樂播放器,可以實現用代碼打開mp3文件嗎
可以,本質上也就是命令行調用。試試ffmpeg
F. android系統如何製作音樂播放器
簡單說:UI編程+Activity編程+Service編程+注冊文件中注冊兩個應用
音樂播放器是一個後台運行的APP,就是最小化以後也在後台默默運行,所以他是一個Service.
你需要製作一個界面,也就是layout文件
然後你需要寫一個Activity
你還需要再注冊文件中注冊這個Service 和 Activity。
如果你沒有基礎,你可能都不知道我說的是神馬?
G. 怎麼用java做音樂播放器
思路很簡單,就是用第三方的java mp3解碼器完成文件播放功能,然後用swing組件包裝一下就行。剛好業界有一個JMF java media framework,是大名鼎鼎的sun開發的。詳看這里的官方網頁:http://java.sun.com/procts/java-media/jmf/。網上也有很多JMF教程。
我曾經做過一個簡單的,支持文件列表。這是一個很好的編程訓練。