音乐播放器编程
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教程。
我曾经做过一个简单的,支持文件列表。这是一个很好的编程训练。