VC编写音频播放器
- 格式:ppt
- 大小:1.72 MB
- 文档页数:13
论文题目基于VC的MP3播放器设计与实现姓名学院学院专业计算机科学与技术指导教师讲师备注年月日基于VC的MP3播放器设计与实现作者姓名:指导教师:讲师单位名称:计算机科学与技术系专业名称:计算机科学与技术学校年月Design and Implementation of Mp3 PlayerBased on VCbySupervisor: Lecturer毕业设计(论文)任务书基于VC的MP3播放器设计与实现摘要本MP3播放器应用程序是一个基于Visual C++ 6.0 开发的一个多媒体软件,是建立在MCI(媒体控制接口)控制之上的软件。
该软件开发研究的目的主要是为了给人们娱乐和消遣用的;该软件实现的方法是通过调用MCI控制接口的相关函数,获取系统的控制信息,利用系统信息对MP3播放器的每一个动作进行控制。
现在为止,该软件到可以实现的功能是:该软件可以添加和播放多种音频文件格式,可以添加单个音频文件,也可以同时添加多个音频文件;对音频文件的操作有:播放音频文件、暂停、停止,可以选择播放下一首歌或前一首歌;可以对已经添加进入播放列表的音频文件进行删除或者添加新的音频文件;可以调节系统的音量的大小;该软件还可以显示当前播放的进度;可以隐藏或展开播放列表;本软件可以进行系统托管,隐藏主界面后,在任务栏创建托管图标;单击托管图标后可以重新弹出控制界面,并取消托管图标。
在系统托管或自动播放的情况下,该软件在播放完一首歌后可以自动跳转到下一首歌,并播放此音频文件。
关键词:媒体控制接口,多媒体,系统托管,控件,音频文件Design and Implementation of Mp3 PlayerBased on VCAbstractThe MP3 Player application programme is software that developed based on Visual C++ 6.0, and also is software that built on the control of MCI. The purpose of developing this software is for the entertainment and recreation of people. The way this software realized is transfer the correlation functions of MCI, and obtain the information of system control, using this information to control each movement of the MP3 Player.So far, the functions that software can realize are: The software can open and play different formats of audio-files,You can add the audio-file one by one or add many audio-files once; play the audio-files; pause; stop; play the following audio-file, and play the preceding audio-file. You can also delete the audio-files that the play list already have or add the new audio-file that the play-list does not exist. You can accommodate the volume of the system. The can show the progress that the current audio-file played. And can hide or outspread the play list. The software can trustee by the system, and will create a icon on the taskbar. When click the icon the interface will show again. While the current audio-file is playing over, it will jump to the next audio-file and play automatically.Key words: MCI,Media,System-Trustee,Controls,Audio-files目录毕业设计(论文)任务书 (I)摘要 (II)ABSTRACT......................................................................................... I II 第1章绪论 .. (1)1.1课题来源 (1)1.2课题描述 (1)1.3课题设计的思想 (1)1.4国内外的发展概况 (2)1.4.1 Winamp (2)1.4.2千千静听 (2)第2章用户需求分析 .................................... 错误!未定义书签。
课程设计说明书题目:音频播放器成绩:时间:年月日至年月日课程设计任务书题目音频播放器主要内容:音频播放器,是目前用户选择播放任意格式的音频文件的软件,如酷狗、QQ音乐等。
一般的音频播放器,都可以支持MP3、wave、AU、VOC等文件格式的播放。
在此次设计的音频播放其中,可以实现对音频文件的打开、播放、暂停、停止、上一曲/下一曲、歌词显示等操作。
对于播放器的界面,可以最小化,并显示到托盘。
处于最小化的状态下,依然可以对正在播放的文件进行上述操作。
在此播放器中,最具特点的是在各个操作按钮以及整个界面上添加了位图和能将窗口最小化。
播放器窗口的建立,也有区别与传统的有菜单显示的窗口。
最小化到托盘后,仍可以进行操作,也可以选择退出。
对于实现播放、停止、上一曲/下一曲、添加文件,都是利用CMidi这个类来存放实现这些功能的函数。
需要的时候调用就可以。
为了是界面更美观,让人看起来更舒服,加入了位图背景。
目前还没有实现用户根据自己的喜好来更改背景图案。
主要参考资料:[1]姬涛、周启生,《计算机程序设计基础(上册)》[Z],北京:中国传媒大学出版社,2010[2]谭浩强,《C程序设计教程》[Z],北京:清华大学出版社,2007[3]任哲,《MFC Windows应用程序设计(第二版)》[Z],北京:清华大学出版社,2007完成期限:指导教师签名:课程负责人签名:年月日摘要音频播放器,是目前用户选择播放任意格式的音频文件的软件,如酷狗、QQ音乐等。
一般的音频播放器,都可以支持MP3、wave、AU、VOC等文件格式的播放。
在此次设计的音频播放其中,可以实现对音频文件的打开、播放、暂停、停止、上一曲/下一曲、歌词显示等操作。
对于播放器的界面,可以最小化,并显示到托盘。
处于最小化的状态下,依然可以对正在播放的文件进行上述操作。
在此播放器中,最具特点的是在各个操作按钮以及整个界面上添加了位图和能将窗口最小化。
播放器窗口的建立,也有区别与传统的有菜单显示的窗口。
花了将近一周的时间,我的音乐播放器终于编的差不多了。
尽管仍旧存在着许多不足,但毕竟夹杂着自己太多的汗水和精力。
整整一周没日夜的查资料、和学友交流,让我明白了那些IT人士虽然表面辉煌,然而在他们的背后,是艰辛的付出和坚持,是对巅峰技术的追求和超越!或许,这就是那么多憧憬进入IT世界的人望而却步的主因吧,因为他们只看到了这个行业高得惊人的薪水,却无奈静不下心锻炼自身的技术!废话不多说,关于在VC下编写音乐播放器,我只想结合自己编写的精力和相关资料畅谈下自己的心得体会!1.WIN32 DiallogBased Application.VC支持WINDOWS底下应用编程,究其对话框工程应用,给广大的编程者提供了极大的便利。
这省去了编程者自己作图的繁琐过程,并且其中涉及的GDI技术之复杂,就不多说了。
2.windows API函数。
这个相信很多人都有听说过,但只有应用过那些函数的人才会体会到这些API功能的强大。
对于写播放器来说,就不得不说mciSendString()了,尽管windows API函数库中用于播放器编写的函数不乏少数,但当你能够用一个函数达到播、停(暂停)、继续以及将它应用在TimeProc()中所得到的便利是,你真的会由衷的感谢它!上面说的都是在VC下编写播放器的核心基础,当然还有许多基础得平凡到看到就不爽的在此掠去!下面说说我在编写音乐播放器过程中遇到的问题:1. 添加多个文件。
这个当时确实被卡了很久,当时觉得多个文件和一个的应该是差不多的,硬是将多个文件全部装到全局文件名szFile中,结果打开后可想而知。
后来查了很多资料,才发现用指针搜索的方式就变得相当方便了。
2.循环模式与时间的处理。
在写这个时,自己一开始就错了,总是把这两者分开着写,或者说一开始就没想到这两者是有联系的,并且在突然醒悟过来后,自己都觉得有多好笑,因为它们的联系太紧密了。
我后来是这样处理的:通过时间函数得到一首歌的总时间,通过回调函数得到一个歌的当前时间,当这两者相等时,也即一首歌结束,这个时候,才去判断循环模式!(这里补充一点:对于TimerProc()中的iSecond就算按照正常切正确的方式去写也同样会有错误,我就是在这个地方被卡了很久,明明程序没有错,却就是实现不了相应的功能,后来查SetTimer()是才发现,这个函数本身的精确度就不都,差不多有55s的误差,所以正常编写时,要实现放歌时间与总时间相等简直不可能,所以将iSecond+1即可。
在VC6.0下自制多媒体播放器作者:上海王凯明下载源代码在VC6.0下自制多媒体播放器作者:上海王凯明VC6.0可谓是微软的王牌产品,它以强大的功能而赢得了广大程序员的爱好。
而用VC的AppW izard、ClassW izard和其中的各种控件可以方便地建立应用程序。
本文就介绍用VC6.0自带的一个Activ eX控件----Activ eMov ieControl Object,来建立自己的多媒体播放器。
此多媒体具有一般的播放功能,能播放*.mp3,*.wma,*.mdi,*.wav,*.av i,*.dat等文件,还有Repeat功能。
具体步骤:1.打开VC6.0,在Projects下选择MFC AppW izard(ex e),并取名Med iaP lay er,然后建立基于对话框(Dialog Bas ed)的运用程序。
2.打开Resource View,选择其中的对话框,打开其中的主对话框,去掉对话框上的“确定”按钮,保留“取消”,将Caption改为“Ex it”。
然后再在上面加上九个按钮,ID和Caption分别为IDC_OPEN,Open;IDC_PLAY,Play;IDC_PAUSE,Pause;IDC_STOP,Stop;IDC_CLOSE,Close;IDC_LOWER,<<=;IDC_UPPER,=>>;IDC_FULLSCREEN,Full;IDC_REPEAT,Repeat;再加入两个静态文本控件,分别为IDC_STAT IC,Volume;IDC_STAT IC2,Status:Normal。
3.再打开Projects->Add to Project->Components and Controls->Reg istered Activ eX Controls对话框,选择其中的Activ eMov ieControl Object, Ins ert,OK之后,你会发现你的控件面板上多了一项Activ eMov ieControl Object,将它选中,直接放在你的对话框上就行了。
#include "FM_Main.h"#include"CTL.H"#include<stdio.h>#include<windows.h>#include<mmsystem.h>#include"GUI.h"#include"ERR_CheckEnter.h"#pragma comment(lib,"winmm.lib")#include "FM_CheckFile.c"#include"FM_Choose.c"#include"FM_List.c"#include "FM_Path.c"int Order=1; //初始时为第一首歌,随音乐切换而切换--nextsong() int NewOrder=0;int Amount = 0; //歌曲总量int begin; //自定义列表中开始序号int circulatemode=1; //循环模式int pp=0;int begintemp=0; //存储自定义列表边界int ww=-1; // 显示自定义列表当前播放信息int upordown=1; //判断切歌方向int firstup=0;int originvolume=500; //默认音量为500char v[40]="setaudio aa volume to 500"; //初始化音量void Init(){Order=1;NewOrder=0;Amount = 0;circulatemode=1;pp=0;begintemp=0;ww=-1;upordown=1;firstup=0;originvolume=500;}void ShowFileList(){if(begintemp==0)begintemp=begin;Amount = FM_CheckFile();begin = Amount;if(NewOrder==0){Show_GUI_EIGHT();FM_CheckFilePrint(0,Amount);}else{Show_GUI_EIGHT();FM_CheckFilePrint(Amount,begintemp);}};void ShowFileDetails(){int i=0;if(upordown==1){if(NewOrder!=0){Order=Amount+1+ww;ww++;}}if(upordown==2){if(firstup==0){if(NewOrder!=0){Order=Amount+1+ww;ww--;}firstup--;}else{if(NewOrder!=0){Order=Amount+1+ww;ww--;}}}firstup+=4;i=Order-1;printf(" 正在播放的音乐\n");printf("-------------------------------------------------------\n");printf(" 歌曲号歌曲名歌手名\n");printf("-------------------------------------------------------\n");printf(" %3d ",info[i].ID);printf(" %-20s ",info[i].song);printf(" %-10s\n",info[i].singer);printf("-------------------------------------------------------\n");}void Play(){if(NewOrder!=0)Order=Amount+1;char vol[10]="500";char v[40];char ch[200];sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);sprintf(v," setaudio aa volume to %s",vol);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa repeat",NULL,0,NULL);// getchar();}void Stop(){mciSendString ("pause aa",NULL,0,NULL);printf("歌曲播放已暂停,输入3继续播放,输入12退出\n\n");// getchar();}void Resume(){mciSendString ("resume aa",NULL,0,NULL);// getchar();}void FastForward(){int n=1;int m=0;int d=0;int minute;int second;char dd[60][20];char temp[20];do{printf("输入1快进:");scanf("%d",&n);mciSendString ("status aa position", dd[m], 20, 0); char ch[20];sprintf(ch,"%s",dd[m]);d=atoi(dd[m]);d+=5000;minute=(int)(((int)(d/1000))/60);second=(d/1000)-minute*60;itoa(d,dd[m],10);sprintf(temp,"seek aa to %s",dd[m]);mciSendString (temp,NULL,0,NULL);Play();m++;clrscr();ShowFileList();ShowFileDetails();Show_GUI_FOUR();printf("当前时间:%d:%02d \n",minute,second);}while(n==1);}void FastBack(){int n=1;int m=0;int d=0;int minute;int second;char dd[60][20];char temp[20];do{printf("输入1快退");scanf("%d",&n);mciSendString ("status aa position", dd[m], 20, 0); char ch[20];sprintf(ch,"%s",dd[m]);d=atoi(dd[m]);d-=5000;minute=(int)(((int)(d/1000))/60);second=(d/1000)-minute*60;itoa(d,dd[m],10);sprintf(temp,"seek aa to %s",dd[m]);mciSendString (temp,NULL,0,NULL);Play();m++;clrscr();ShowFileList();ShowFileDetails();Show_GUI_FOUR();printf("当前时间:%d:%02d \n",minute,second);}while(n==1);}void StopStop(){char temp[20];char ch[10];itoa(0,ch,10);sprintf(temp,"seek aa to %s",ch);mciSendString (temp,NULL,0,NULL);mciSendString ("pause aa",NULL,0,NULL);printf("点击1重新播放\n\n");}void VolumePlus(){int n=1;// int originvolume=500;char volume[10];char temp[40];while(n==1){printf("输入1增加音量,输入2退出音量增加模式 ");scanf("%d",&n);originvolume+=250;itoa(originvolume,volume,10);sprintf(temp," setaudio aa volume to %s",volume);mciSendString (temp,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);getchar();clrscr();ShowFileList();ShowFileDetails();Show_GUI_FOUR();printf("当前音量:%d\n",originvolume);}originvolume-=250;}void VolumeReduce(){int n=1;// int originvolume=500;char volume[10];char temp[40];while(n==1){printf("输入1降低音量,输入2退出音量降低模式 ");scanf("%d",&n);originvolume-=250;itoa(originvolume,volume,10);sprintf(temp,"setaudio aa volume to %s",volume);mciSendString (temp,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();clrscr();ShowFileList();ShowFileDetails();Show_GUI_FOUR();printf("当前音量:%d\n",originvolume);}originvolume+=250;}void PreSong(){if(NewOrder==0){if(circulatemode==1){if(Order<1){Order=1;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}if(circulatemode==2){if(Order<1){Order=Amount;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}}else{Order=Amount+pp;if(circulatemode==1){if(Order<Amount){Order=Amount;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}if(circulatemode==2){if(Order<Amount){Order=begin;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}pp--;}upordown=2;}void NextSong(){if(NewOrder==0){if(circulatemode==1){if(Order>Amount){Order=Amount;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}if(circulatemode==2){if(Order>Amount)//////////////////////////////////////////////{Order=1;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}}else{Order=Amount+pp;if(circulatemode==1){if(Order<Amount)/////////////////////有问题{Order=Amount;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order+1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order+1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}if(circulatemode==2){if(Order<Amount)//有问题{Order=begin;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order+1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order+1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}pp++;}upordown=1;}void SelectCirculMode(){int i=0;Show_GUI_SEVEN();scanf("%d",&i);if(i==1)circulatemode=1;if(i==2)circulatemode=2;}void SaveExit(){/*char dd[20];char log[50]={"testlog!!!"};mciSendString ("status aa position", dd, 20, 0);int d;d=atoi(dd);FILE *fp = NULL;fp = fopen("D:\\SaveLog.txt","a");fwrite(log,1,50,fp);*/}void PlayOperation(){int d;re: clrscr();ShowFileList();ShowFileDetails();Show_GUI_FOUR();printf("请选择要进行的操作:");epo:scanf("%d",&d);fflush(stdin);if(ERR_CheckEntero(d)){switch(d){case 1:Play();goto re;case 2:Stop();goto re;case 3:Resume();goto re;case 6:FastForward();goto re;case 8:FastBack();goto re;case 4:StopStop();goto re;case 9:VolumePlus();goto re;case 10:VolumeReduce();goto re;case 5:Order--;PreSong();goto re;case 7:Order++;NextSong();goto re;case 12:ChooseSong();goto re;case 11:SelectCirculMode();goto re;case 13:mciSendString("close aa", NULL, 0, NULL);return;case 14:SaveExit();// getchar();}}else{goto epo;}};void NewOperation(){ee: int i=0;printf("请选择要进行的操作:");scanf("%d",&i);fflush(stdin);switch(i){case 1:FM_CheckFilePrint(0,Amount);begin = FM_Choose(Amount,begin);break;case 2:begin = FM_Path(begin);break;case 3:break;default:printf("输入有误\n");goto ee;}};void ShowNewList(){FM_List(begin,Amount);NewOrder=Amount+1;PlayOperation();}void ChooseSong(){int id = 0;printf("请输入歌曲号:");scanf("%d",&id);if(id<1||id>Amount){printf("选择歌曲不存在!\n");}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[id-1].add);mciSendString(ch,NULL,0,NULL);mciSendString("play aa repeat",NULL,0,NULL);}}。
利用MCI在VC++环境下设计一个播放器一、实验目的通过动手制作基于Vc++的音乐播放器,了解播放器的原理。
并通过自己动手,在windows 播放器组件的基础上,用自己的算法,去实现自己的界面和自己的播放模式。
二、实验仪器或设备Pc机一台、 windows xp以上操作系统开发环境:Vc++6.0三、总体设计(设计原理、设计方案及流程等)1、设计原理:Microsoft Visual C++是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。
它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。
它以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。
比如,它允许用户进行远程调试,单步执行等。
还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。
其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。
这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。
visual C++ 6.0集成了MFC6.0,于1998发行。
发行至今一直被广泛地用于大大小小的项目开发。
但是,这个版本在WindowsXP下运行会出现问题,尤其是在调试模式的情况下(例如:静态变量的值并不会显示)。
这个调试问题可以通过打一个叫“Visual C++ 6.0Processor Pack”的补丁来解决。
奇怪的是,这个网页强调用户也必须运行Windows 98、Windows NT4.0、或Windows 2000。
2、设计方案:通过Vc++6.0的可视化程序设计界面,运用基本对话框和按钮以及时间条进行界面设计,而后对各个按钮空间,以及时间条空间进行时间编码,依据自己的算法,实现自己的播放器。
课程设计课程名称可视化编程(VC)学院计算机科学与技术学院专业软件工程班级1202姓名指导教师2013——2014学年第2学期目录1.设计题目及要求 (3)2.基本功能描述 (4)3.软件设计模块 (6)3.1文件的打开模块 (6)3.2文件的播放模块 (9)3.3文件的停止模块 (9)3.4全屏模块 (9)3.5快进、快退模块 (9)3.6换皮肤模块 (10)3.7音量调节模块 (12)3.8窗口隐藏模块 (12)3.9文件暂停模块 (12)4.运行结果 (13)5.设计过程中遇到的问题和感想 (15)6.参考文献 (16)一、设计题目及要求1.1设计题目基于MFC的多媒体播放器系统1.2题目要求1.制作一个具有自己设计风格的媒体播放器。
2.要求能随机选取要播放的文件,实现前进,回退,暂停,循环播放,音量大小调节等基本功能。
3.要求能播放多种格式(至少四种或四种以上)的音频视频格式文件。
4.可以实现其它附加功能(不在要求范围之内)5.界面良好,功能完善二、基本功能描述本次课程设计制作的多媒体播放器是利用Windows系统自带的Windows Media Player控件,可以分别通过按钮和菜单实现*.mp3、*.mid、*.avi、*wav等媒体文件的打开、播放、暂停、全屏、音量调节、快进、快退、关闭、循环播放等功能。
还通过更换位图的方式,实现了换皮肤功能。
1.打开文件:通过选择文件类型打开不同类型的文件,如果打开的格式不对,消息框会提醒打开正确的格式的文件。
再打开文件前,其他按键不能进行操作。
2.播放文件:开始播放文件。
3.停止播放:停止播放文件。
4.全屏:将播放器变为全屏。
5.快退、快进:实现快退、快进功能。
6.换皮肤:选择沙漠、可爱棒冰、灯塔、郁金香可以为播放器换不同的背景。
7.音量调节:可以实现调大,调小音量的功能。
三、软件设计模块3.1文件的打开模式在WavePlayDlg.h中设定一个int型的全局m_MediaType,通过选择不同的按钮来给m_MediaType赋不同的值,不同的值代表不同的文件格式。
基于VC的多媒体播放器的设计与开发在设计和开发基于VC的多媒体播放器时,有几个关键的方面需要考虑。
首先,我们需要确定播放器的功能和特性。
其次,我们需要设计用户界面,并开发与之相应的功能。
最后,我们需要确保播放器的性能和稳定性。
在功能和特性的确定方面,我们可以考虑以下几点:1. 支持多种多媒体文件格式:播放器应该能够支持常见的音频和视频文件格式,如MP3,MP4,AVI等。
2. 播放控制功能:播放器应该具备诸如播放,暂停,停止,快进,快退,循环播放,随机播放等基本的播放控制功能。
3. 音量调节功能:播放器应该提供音量增减的功能,使用户可以根据需要调整音量大小。
4. 播放列表功能:播放器应该允许用户创建和管理自己的播放列表,方便用户播放和组织自己的音频和视频文件。
在用户界面的设计方面,我们可以考虑以下几点:1. 主界面设计:主界面应该简洁明了,让用户能够直观地找到所需的功能按钮和控件。
2. 播放控制按钮:应该将常用的播放控制按钮(如播放,暂停,停止)放置在主界面上,方便用户随时进行操作。
3. 播放进度条:应该显示当前正在播放的媒体文件的播放进度,以便用户了解播放进度。
4. 音量控制按钮:应该提供对音量的调节按钮,让用户能够根据需要增加或减少音量大小。
在功能的开发方面,我们可以使用VC等开发工具来实现:1. 文件解码播放:使用合适的解码器来解码音频和视频文件,并通过音频驱动和显示驱动将其播放出来。
2. 播放控制:根据用户的操作,通过调用相关的API来实现播放,暂停,停止,快进,快退等操作。
3. 播放列表管理:通过读取用户的文件夹和文件,将其组织成播放列表,并实现相应的增加,删除和切换操作。
最后,在性能和稳定性方面,我们可以采取以下措施:1. 优化播放器的代码结构和算法,使其能够高效地解码和播放多媒体文件。
2. 对于文件解码过程中可能发生的异常和错误情况,进行适当的异常处理和错误提示,以确保播放器的稳定性和可靠性。
基于VC的多媒体播放器的设计与开发一、引言随着科技的不断进步和互联网的发展,计算机多媒体技术已经被广泛应用于日常生活中。
而多媒体播放器作为计算机多媒体技术的重要应用之一,早已成为人们生活娱乐的重要组成部分。
本文将介绍一种基于VC的多媒体播放器的设计与开发,主要包括系统的功能需求、体系结构设计、核心功能的实现等内容。
二、系统功能需求1. 基本的播放功能:支持常见的音视频文件格式,能够对音乐和视频进行播放、暂停、停止等操作。
2. 画面显示:提供清晰流畅的视频播放效果,支持全屏、窗口模式下的画面显示,能够根据用户需求进行画面大小的调整。
3. 音频输出:支持多种音频输出方式,如扬声器、耳机等,并能够根据用户需求进行音量的调整。
4. 播放控制:提供播放进度条、音量调节、快进快退等播放控制功能,方便用户对音视频进行控制和调节。
5. 播放列表管理:支持用户创建、导入和管理播放列表,方便用户组织和管理自己的音视频文件。
6. 其他功能:支持收藏、分类、搜索等附加功能,方便用户快速找到自己想要播放的音视频文件。
三、体系结构设计基于VC的多媒体播放器的体系结构设计如下:1. 前端界面设计:使用VC进行界面设计,根据用户需求设计简洁、直观的操作界面,使用户可以方便地进行各种操作。
2. 多媒体引擎:使用VC的多媒体编程接口进行音视频播放控制,实现音视频的解码、播放和控制功能。
3. 播放列表管理:设计数据库或文件系统来管理播放列表,实现播放文件的增删改查功能。
4. 用户交互功能:通过与用户的交互实现播放控制、搜索、收藏等功能,提升用户体验。
5. 后台管理功能:实现系统配置、播放规则设置等功能,方便管理员对系统进行管理和维护。
四、核心功能实现1. 多媒体文件格式支持:通过调用VC的多媒体编程接口,实现对常见音视频文件格式的解码和播放功能。
2. 视频播放效果优化:利用VC的图像处理功能实现视频的渲染,提供清晰、流畅的画面显示效果。