实验六 媒体播放器实现

合集下载

多媒体应用实验

多媒体应用实验

多媒体应用实验实验目的:通过设计和开发一个多媒体应用程序,学习多媒体技术的应用和实现,提升对多媒体编程的理解和掌握程度。

实验内容:设计和开发一个音乐播放器应用程序,该应用程序能够实现音乐的播放、暂停、停止等基本功能,并具备简单的用户界面。

实验步骤:1. 确定开发平台和语言:根据实验要求和个人喜好,选择适合的开发平台和编程语言,如Android平台与Java语言。

2. 音乐文件准备:准备多个音乐文件,用于测试音乐播放器的功能。

可以选择mp3或者其他常见的音频格式。

3. 创建项目:在开发平台中创建一个新的项目,命名为"MusicPlayer"。

4. 设计用户界面:根据个人喜好和实验要求,设计一个简单的用户界面,包括播放、暂停、停止按钮等。

可以使用开发平台提供的图形界面设计工具来快速搭建界面。

5. 实现音乐播放器功能:根据实验目标,编写程序代码,实现音乐的播放、暂停、停止等基本功能。

可以使用平台提供的音乐播放器相关的API或者库来简化开发过程。

6. 测试并改进:在开发过程中,及时进行测试和调试,确保功能的正确实现。

根据测试结果和使用体验,进行必要的改进和优化。

7. 完善用户界面:根据实验要求和个人喜好,对用户界面进行美化和改进,提升用户体验。

8. 文档撰写:完成实验后,撰写实验报告,详细描述实验过程、实现功能、遇到的问题、解决方案以及实验结果等,展示完成的多媒体应用程序。

实验要点:1. 了解多媒体技术的基本原理和应用。

2. 熟悉开发平台的使用和开发环境的设置。

3. 学会使用开发平台提供的API或库,实现音乐播放等功能。

4. 注意代码的规范性和可读性,使用恰当的命名、注释等编写清晰易懂的代码。

5. 创新设计用户界面,提供友好的操作和良好的用户体验。

6. 注重测试和调试,保证应用程序的功能和性能。

7. 充分记录实验过程,思考和总结实验中所遇到的问题和解决方案,形成完整的实验报告。

实验总结:通过本次实验,我成功设计和开发了一个多媒体应用程序,实现了音乐的播放、暂停和停止等基本功能,并对多媒体技术的应用和实现有了更深入的理解。

数电实验报告-音乐播放器

数电实验报告-音乐播放器

实验课题:简易乐曲播放器学院:班级:姓名:学号:班内序号:一、设计课题要求 (2)二、设计思路和总体框图 (2)三、分块电路设计 (4)四、仿真波形 (6)五、源程序 (7)六、功能说明 (20)七、所用元器件情况 (20)八、故障及问题分析 (21)九、总结和结论 (22)十、参考文献 (22)一设计课题的任务要求设计制作一个简易乐曲播放器:1. 播放器内预存3 首乐曲;2. 播放模式:顺序播放、随机播放,并用数码管或LED 显示当前播放模式;顺序播放:按内部给定的顺序依次播放3 首乐曲;随机播放:随机产生一个顺序播放3 首乐曲;3. 用数码管显示当前播放乐曲的顺序号;4. 设置开始/暂停键,乐曲播放过程中按该键则暂停播放,再按则继续播放;5. 设置Next 和Previous 键,按Next 键可以听下一首,按Previous 键回到本首开始;6. 选做:用户可以自行设定播放顺序,设置完成后,播放器按该顺序依次播放乐曲;7. 选做:自拟其它功能。

二设计思路和总体框图设计思路:组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的2个基本要素。

乐曲的12平均律规定:每2个八度音之间的频率相差1倍。

在2个八度音之间,又可分为12个半音,每两个半音的频率比为2开12次方。

另外,音符A (简谱中的低音6)的频率为440Hz,音符B到C之间、E到F之间为半音,其余为全音。

由此可以计算出简谱中从低音1至高音1之间每个音符的频率,如下表所示。

产生各音符所需的频率可用分频器实现。

本次实验使用的是MAXⅡ实验板,时钟频率为50MHz,计算出各个音符对应的分频系数,进行50%占空比的分频,即可得到各音符对应的频率。

对于节拍,如果将一拍的长度定为1秒,则1/4拍的时间为1/4秒,为其提供一个4Hz的时钟频率即可产生出1/4拍的效果了。

若需要半拍,只需将该音符记录两次就可以了。

产生节拍时钟也用分频器实现,本次实验中时钟频率为5Hz。

大学生计算机基础实践教程实验13使用媒体播放器播放CD音乐

大学生计算机基础实践教程实验13使用媒体播放器播放CD音乐
3.并且学会了如何播放VCD或DVD光盘,以及如何选择要默认播放的媒体格式,收获颇丰。
五、分析与讨论
1.通过这两节课,我对Windows XP的多用途的多媒体播放软件进行操作有了许多了解。
2.如何打开及使用Windows XP的多媒体播放器及具体又有意义。
3.而且学会了如何播放VCD或DVD光盘,以及如何选择要默认播放的媒体格式,获益匪浅。
二、实验设备(环境)
计算机
三、实验内容与步骤
1.打开“开始”菜单,选择“所有程序”中的windows Media player程序即可打开多媒体播放器。
2.在媒体播放器的下边或左边有一排用于控制的按钮,用于选择所要播放的媒体种类,他们的使用和日常生活中的家用视屏音乐播放器如DVD碟记得按钮一样收听节目。
《大学计算机技术》实验报告
实验序号:2实验项目名称:使用媒体播放器播放CD音乐
学 号
13031106
姓 名
专业、班级
法律系1303
实验地点
计202
指导教师
时间
2013.10
一、实验目的
1.对WindowsXP的多用途的多媒体播放软件进行操作。
2.学会如何打开及使用WindowsXP的多媒体播放器
3.学认播放的媒体格式
6.在媒体播放器的“工具”菜单中“选择”命令,打开“选项”对话框,然后打开“文件类型”选项卡,出现如图画面,在这里可以选择要默认的播放每个格式。
四、实验结果与数据处理
1.通过这节生动有趣的课程,对Windows XP的多用途的多媒体播放软件进行操作。
2.我学会了如何打开及使用Windows XP的多媒体播放器
3。若果你不喜欢次播放器的外观,可以单击“外观选择器”按钮来改变媒体播放器的外观。

实验简单音频播放器程序实现

实验简单音频播放器程序实现
#endif
CMyDlg dlg。
m_pMainWnd = &dlg。
int nResponse = dlg.DoModal()。
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
void CMUSIC_PLAYER_100511217Dlg::OnCustomdrawSlider(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData(true)。
m_vol=m_slider.GetPos()/10。
SetVolumn(m_slider.GetPos())。
// The one and only CMyApp object
CMyApp theApp。
/////////////////////////////////////////////////////////////////////////////
// CMyApp initialization
BOOL CMyApp::InitInstance()
1、点击“打开”,添加播放资源
2、单击“播放”,开始播放
3、点击“暂停”,暂停播放;之后点击“恢复”,播放器继续播放
4、单击“终止”,音乐播放停止
5、滑动音量滑块调节音量大小
五、调试过程及实验结果
本次作业参考了优酷上的指导视频,然后仿照编写的。
在完成此次大作业的过程中遇到了很多问题,首先音量控制就是一个难点,最初完成的版本可以运行但音量无法控制,后来添加了一个函数解决问题:

实验六:流媒体组建与管理

实验六:流媒体组建与管理

计算机科学系实验报告
实验六:流媒体组建与管理
一、实验目的
1 了解Helix Server的工作原理
2 掌握流媒体的管理
二、实验仪器设备与实验环境条件
1 windows xp
2 Helix Server
三、实验内容
1 安装Helix Server并启动Helix Server服务
2 设置连接控制
3 配置加载点
4 对访问设置进行安全设置
5 设置完后要测试
四、实验结果
1、设置IP
2、IP绑定
3、配置加载点
4、访问控制
5、加载播放视频
6、加载播放MP3
五、实验心得
本实验比较简单,就是会有时加载不到视频,后来发现是视频的格式不对。

不过,这个
实验很重要的一点就是要细心,因为有些设置一定要立即重启服务器才生效。

实验简单音频播放器程序实现

实验简单音频播放器程序实现
实验2简单音频播放器程序实现
1.上机实验报告二
课程名称:多媒体技术
班级:数媒**班
实验日期:2014.3.31-4.11
小组成员:
指导教师:
02
实验序号:
实验成绩:
一、简单音频播放器程序实现
二、实验目的及要求
1、掌握使用DirectSound实现音频播放程序的方法;
2、掌握创建缓冲区的方法;
3、学会播放音频数据的方法;
{
AfxEnableControlContainer()。
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyApp construction
。Enable3dControlsStatic()
4 / 13
#endif
。CMyDlg dlg
。m_pMainWnd = &dlg
。int nResponse = dlg.DoModal()
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is

java媒体播放器实验报告

java媒体播放器实验报告

Java程序设计题目:媒体播放器姓名:学号:2014年5月10日目录实验报告一、实验目的二、实验原理三、实验环境四、功能需求五、实验总结系统方案书一、引言1、编写目的2、参考资料二、系统的结构(程序流程图)三、模块设计说明1、模块描述2、总体功能3、关于帮助媒体播放器使用说明书一、使用方法:1、打开媒体播放器2、打开文件3、播放,暂停,停止,快进,快退4、退出程序5、帮助(关于)二、分析摘要1、能力2、缺陷和限制技术报告一、实现的类二、部分功能的实现三、具体代码实验报告一、实验目的通过了解和运用Java编程工具编写制作视频媒体播放器,提高Swing和jmf技术结合的综合运用能力。

二、实验原理本实验要求在理解Java文件操作原理基础和GUI编写的基础上,实现视频文件的打开、播放、暂停、后退和前进等功能,实现媒体播放器基本功能。

三、实验环境软件环境Windows操作系统J2SDK1.6Eclipse等硬件环境计算机四、功能需求实现媒体播放器的功能如下:(1)可以打开视频文件夹;(2)双击文件或者选中后打开可播放该视频。

(3)播放时可以开始、暂停、停止、快进、快退进行控制;(4)可以退出和关闭播放器。

五、实验总结通过这次自主实验,让我了解到了编写一个Java应用程序的过程:一开始我先分析这个“媒体播放器”要实现的功能,并归纳出来,然后我开始确定相关的Java和JMF 的知识点,寻找相关的参考书和上网搜索知识点。

我分析出的知识包括:swing和JMF 及相关组件的使用,根据这些做出程序的界面、播放器组件的设置和使用文件的处理。

几个星期的学习使我们提高自己的编程能力。

系统方案书一、引言1、编写目的为了能够使在编写媒体播放器的过程能够高效的进行,少走弯路。

2、参考资料《Java程序设计教程》机械工业出版社《Java多媒体技术》清华大学出版社二、系统的结构(程序流程图)三、模块设计说明随着社会文明的发展,人们不再仅仅满足于物质享受,更加追求精神上的享受。

多媒体播放器的设计与实现

多媒体播放器的设计与实现

多媒体播放器的设计与实现设计和实现一个多媒体播放器涉及到以下几个方面的内容:1. 用户界面设计:包括主界面、播放界面、设置界面等。

主界面应包含歌曲列表、专辑封面等基本信息,并提供搜索、排序、添加歌曲等功能。

播放界面应提供播放、暂停、快进、快退、进度条等基本操作按钮。

设置界面应包含音效、循环模式、背景主题等设置选项。

2. 数据库设计:存储歌曲信息、播放列表等数据信息。

数据库应包括歌曲的标题、歌手、专辑、时长、路径等字段。

可以使用关系型数据库或者本地文件形式存储。

3. 音频解码与播放:支持常见音频格式(如mp3、wav等)的解码和播放。

可以使用开源的音频解码库(如FFmpeg)进行解码,并使用音频播放器(如OpenAL、SDL等)进行播放。

需要实现基本的音频控制功能,如播放、暂停、快进、快退等。

4. 集成音效和均衡器:可以加入均衡器、音效调整等功能,提升音频质量和用户体验。

可以使用开源的均衡器库(如EqualizerAPO)进行实现。

5. 添加播放列表功能:用户可以创建多个播放列表,并将歌曲添加到不同的播放列表中。

可以实现添加、删除、重命名播放列表等功能。

6. 实现歌曲搜索和排序功能:用户可以通过关键词搜索歌曲,也可以根据歌曲的标题、歌手、专辑等属性进行排序。

7. 支持在线音乐播放:可以通过集成第三方音乐API(如网易云音乐API)来实现在线音乐搜索和播放功能。

,设计与实现一个多媒体播放器需要综合考虑用户界面设计、数据库设计、音频解码与播放、音效与均衡器、播放列表管理、歌曲搜索与排序、在线音乐播放等多个方面的内容。

可以根据具体需求和技术背景选择相应的技术和开发工具进行实现。

播放器实验报告(3篇)

播放器实验报告(3篇)

第1篇一、实验目的1. 熟悉播放器的基本原理和功能模块。

2. 掌握音频、视频文件的解码与播放技术。

3. 提高编程能力和项目实践能力。

二、实验环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C++4. 常用库:FFmpeg三、实验内容1. 播放器界面设计2. 音频、视频文件解码3. 音频、视频同步播放4. 控制功能实现四、实验步骤1. 播放器界面设计(1)创建项目,添加所需控件(2)设置控件属性,包括大小、位置、颜色等(3)添加播放按钮、暂停按钮、停止按钮等控制按钮2. 音频、视频文件解码(1)引入FFmpeg库(2)加载音频、视频文件(3)解码音频、视频数据3. 音频、视频同步播放(1)创建音频、视频播放线程(2)实现音频、视频数据同步(3)调整播放进度4. 控制功能实现(1)添加播放按钮、暂停按钮、停止按钮等事件处理函数(2)实现播放、暂停、停止等功能五、实验结果与分析1. 播放器界面设计本实验成功实现了播放器界面设计,包括播放区域、控制按钮、进度条等。

界面简洁美观,用户操作方便。

2. 音频、视频文件解码通过引入FFmpeg库,成功实现了音频、视频文件的解码。

在解码过程中,我们提取了音频、视频的采样率、码率、帧率等关键信息,为后续同步播放提供了依据。

3. 音频、视频同步播放在实现音频、视频同步播放时,我们采用了线程同步技术。

通过创建音频、视频播放线程,分别处理音频、视频数据的播放,确保了音频、视频播放的同步性。

同时,我们还实现了播放进度调整功能,方便用户实时查看和调整播放进度。

4. 控制功能实现本实验成功实现了播放、暂停、停止等功能。

用户可以通过控制按钮,轻松实现播放器的控制操作。

六、实验总结通过本次实验,我们掌握了播放器的基本原理和功能模块,熟悉了音频、视频文件的解码与播放技术。

同时,我们还提高了编程能力和项目实践能力。

以下为实验过程中总结的一些心得体会:1. 熟练掌握FFmpeg库的使用,能够实现音频、视频文件的解码与播放。

利用VB实现多媒体播放器(PPT 50页)

利用VB实现多媒体播放器(PPT 50页)

利用VB实现多媒体播放器(PPT 50页)利用VB实现多媒体播放器实验计划学时:6学时实验性质:验证性一、实验目的1.通过实验学习多媒体技术有关知识,增进对多媒体技术的认识和体会。

2.掌握VB处理中经常用到的基本概念和名词。

3.学习使用VB编写多媒体播放器。

二、实验内容和要求1.掌握VB中需要经常接触的基本概念。

2.练习使用VB,尝试它的各项功能。

要求掌握基本处理功能,学会使用控件制作播放器。

三、实验环境(硬件环境和软件环境)1.带有声卡、麦克风、音箱或耳机的多媒体计算机。

2.Windows XP以上操作系统。

23.工具软件VB。

四、实验报告要求实验报告应包括实验名称、实验目的、实验内容、实验环境、操作方法和实验步骤、实验数据记录和处理、实验结果分析、体会质疑建议。

具体请参阅实验报告模板。

五、操作方法与实验步骤参阅下面实验指导进行实验,请学员各自写下操作方法与实验步骤。

(注意不要全抄下来,以各自理解的写,如何出现一样的报告,将给予0分处理)六、实验讲义实验1 API_ 音频播放器本节主要介绍了利用 API 函数制作 WAV 音频播放器,首先来介绍一下3PlaySound() 函数。

它的声明形式如下所示:Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA"( ByVal lpszName As String , ByVal hModule As Integer , ByVal dwFlags As Integer ) As Integer字符串 lpszName 为声音文件的全名。

长整型 hModule 为程序模块的句柄,通常设置为 0 。

长整型 dwFlags 标志设置,在使用文件名时设置为 &20000 。

•添加控件4新建一个项目,在项目里添加 windows 窗体“ form1 ”,把它的“ Text ”属性改为“ API_ 音频播放”。

一个简单的媒体播放器的设计与实现.

一个简单的媒体播放器的设计与实现.

一个简单的媒体播放器的设计与实现1.1 文件加载系统 1.1.1 打开打开系统是向播放列表加载一个或者多个多媒体文件,通过打开加载文件时,将会覆盖播放列表中已有的文件。

并且将自动播放。

其实现代码为: 1)打开文件: With Openfile .FileName ="" .Filter = "视频文件(*.rm;*.rmvb;*.dat;*.avi;*.mp3;*.asf;*.mpg)|*.rm;*.rmvb;*.dat;*.avi;* .mp3;*.asf;*.mpg|音频文件(*.mp3;*.wav;*.wma;*.mid)|*.mp3;*.wav;*.wma;mid|所有文件(*.*)|*.*" .Multiselect =True If .ShowDialog() = DialogResult.Cancel Then Exit Sub End With 2)清空播放列表: file = Openfile.FileNames.Length If file = 0 ThenExit Sub 播放列表.Items.Clear() filelist.Clear() 3)加载新文件: filename = Openfile.FileNames ReDim strfile(file) For i = 0 Tofile - 1 For j = 0 Tofilename(i).Length If Microsoft.VisualBasic.Right(filename(i), j + 1).Chars(0) = "\" Then strfile(i) =CType(Microsoft.VisualBasic.Right(filename(i), j), String) strfile(i) = CType(Microsoft.VisualBasic.Left(strfile(i), strfile(i).Length - 4), String) For i = 0 To file - 1 播放列表.Items.Add(i + 1 & ". " &strfile(i)) filelist.Add(filename(i)) 4)自动播放: WindowsMediaPlayer1.URL =filename(0) 播放列表.SetSelected(0,True) cmbAdd()。

音乐播放学生实验报告

音乐播放学生实验报告

音乐播放学生实验报告实验目的本实验旨在通过设计一个音乐播放器的实现,加深学生对嵌入式系统的了解,并学习如何利用硬件和软件协同工作来完成一个综合性的项目。

实验器材和软件1. STM32F103C8T6开发板2. USB接口3. 3.5mm音频接口4. TFT彩屏5. 杜邦线、导线、音频线实验原理本音乐播放器实验基于STM32F103C8T6开发板,通过连接TFT彩屏显示音乐文件列表,通过调用库函数实现音乐播放与控制。

实验步骤步骤一: 准备工作1. 将开发板通过USB接口连接到电脑上,并安装开发环境和相关驱动程序。

2. 连接3.5mm音频接口和音频线。

步骤二: 硬件连接1. 将TFT彩屏与开发板通过杜邦线连接起来,确保连接稳固可靠。

步骤三: 创建音乐播放程序1. 在开发环境中新建一个工程,选择合适的开发板型号;2. 配置硬件参数,包括打开音频接口、TFT彩屏以及相应的引脚连接;3. 导入音乐文件,并将其添加到工程中;4. 编写代码实现音乐播放器的功能,包括音乐文件的读取、解码和输出控制;可以使用库函数来实现这些功能;5. 对代码进行调试和测试,确保音乐播放器的各项功能正常运行;6. 将编写完成的程序下载到开发板中。

步骤四: 运行实验1. 将音乐播放器开启,并选择所需播放的音乐文件;2. 通过TFT彩屏显示音乐文件列表,并提供相应的操作选项;3. 在选中音乐文件后,点击播放按钮,实现音乐的播放;4. 可以通过按钮或触摸屏实现音乐的暂停、停止、上一曲、下一曲等控制功能。

实验结果与分析通过本次实验,我成功地实现了一个音乐播放器,并验证了其正常工作。

音乐播放器具有可靠的功能,可以播放、暂停、停止音乐,并可以切换上一曲、下一曲。

通过TFT彩屏,可以显示当前播放的音乐文件列表,方便用户选择不同的音乐文件。

实验总结通过本次实验,我对嵌入式系统的原理和应用有了更深入的了解。

通过硬件和软件的协同工作,我成功地完成了一个音乐播放器的设计与实现。

实验1多媒体播放器的设计

实验1多媒体播放器的设计

实验基于的多媒体播放器的设计与实现
一、实验目的:
利用在或其它语言环境下设计一个多媒体播放器,进一步熟悉与掌握多媒体编程的基本技术与方法。

二、实验要求:
、制作一个如下图的多媒体播放器界面,并尽量实现全部或绝大部分功能。

图多媒体播放器功能要求
、用、等格式文件进行播放测试,并获取播放效果图。

、完成的版权信息,请认真真实填写本人信息,否则当缺做实验或抄袭别人程序处理。

图必须完成的版权个人信息
、完成并测试程序后将源程序文件夹压缩后上传网络课堂,请确保程序的正确性与可执行性,老师通过执行你的程序从而给你计算本次实验成绩。

、认真完成实验报告,必须包括实验目的,实验工具、设计框图、实验步骤、所完成的
主要设计内容与方法、实验分析与总结等内容。

请尽量笔写,其中源代码与效果图可以打印后粘贴到实验报告本上。

实验指导与基本步骤:
使用的、和其中的各种控件可以方便地建立各种应用程序。

但是想要实现更高级更复杂的功能,就要借助丰富的控件资源。

本实验计划使用自带的一个控件——,来设计多媒体播放器。

此多媒体具有一般的播放功能,能播放:*,*,*,*,*,*等文件,还有功能。

、注册控件:在“运行”里写入:单击确定。

、打开,在下选择 (),并取名,然后建立基于对话框的应用程序。

最后删除“确定”
按钮,保留“取消”按钮。


图。

实验实训报告音乐播放器

实验实训报告音乐播放器

一、实验目的1. 了解音乐播放器的基本原理和组成。

2. 掌握音乐播放器的电路设计方法。

3. 熟悉音乐播放器中常用元器件的性能和应用。

4. 提高动手能力和实际操作技能。

二、实验原理音乐播放器是一种将数字音频信号转换为模拟音频信号,并通过扬声器播放出来的设备。

其基本原理如下:1. 数字音频信号:音乐播放器接收的数字音频信号通常为MP3、WMA等格式,这些格式经过压缩处理后存储在存储介质上。

2. 数字信号解码:音乐播放器内部有一个数字信号解码器,将数字音频信号解码成模拟音频信号。

3. 模拟信号放大:解码后的模拟音频信号需要经过放大器放大,以便驱动扬声器发声。

4. 扬声器发声:放大后的模拟音频信号通过扬声器发声,实现音乐播放。

三、实验内容1. 音乐播放器电路设计2. 元器件选型与测试3. 音乐播放器组装与调试四、实验步骤1. 音乐播放器电路设计(1)确定音乐播放器功能:根据需求确定音乐播放器功能,如播放、暂停、切换曲目等。

(2)选择主控芯片:根据功能需求选择合适的主控芯片,如ESP8266、STM32等。

(3)设计电路原理图:根据主控芯片和功能需求,设计电路原理图,包括数字信号解码、模拟信号放大、按键、显示屏等模块。

(4)绘制PCB板图:根据电路原理图,绘制PCB板图,确定元器件布局和走线。

2. 元器件选型与测试(1)主控芯片:根据电路设计,选择合适的主控芯片,如ESP8266。

(2)数字信号解码芯片:根据电路设计,选择合适的数字信号解码芯片,如DAC芯片。

(3)模拟信号放大芯片:根据电路设计,选择合适的模拟信号放大芯片,如运算放大器。

(4)按键、显示屏等元器件:根据电路设计,选择合适的按键、显示屏等元器件。

(5)测试元器件:对所选元器件进行测试,确保其性能符合设计要求。

3. 音乐播放器组装与调试(1)焊接PCB板:根据PCB板图,焊接元器件,完成音乐播放器组装。

(2)调试电路:检查电路连接是否正确,调整电路参数,确保电路正常工作。

媒体播放器制作过程

媒体播放器制作过程
本章学习目标:
(1)理解Windows Media Player控件的常用属性。
(2)学会使用Windows Media Player、Button、Panel、ListBox等控件设计多媒体播放器程序。
(3)通过本章实例,进一步掌握VisualC#2005较小型的Windows应用程序开发的基本思想。
{
strFile += "";
}
strFile = ;
lstFileList.Items.Add(strFile);
}
foreach (DirectoryInfo d in dir.GetDirectories())
{
AddFiles(d.FullName, lstFileList);
}
}
//*******************************************************************************
//*******************************************************************************
//*******************************************************************************
停止播放的代码为:
//*******************************************************************************
接下来在代码的通用段定义以下公共数组和变量:
//*******************************************************************************

JAVA媒体播放器实验报告

JAVA媒体播放器实验报告
但尚为实际开始。
调用start方法将使Player转入Started状态。此时,Player的媒体时间被映射到time-base 时间,并且clock开始运行。此时播放器有可能会等待一个恰当的时间来呈现媒体数据。
当player从一个状态转入另一个状态时,会抛出 TransitionEvents(转换事件),我们可以通过 实现 ControllerListener接口来监听这些时间并作出恰当的响应。
当播放器开始Realizing和Prefetching的时候,我们可以使用事件报告机制对Player进 行管理,在调用Player方法之前,我们可以先检查Player状态,在作出恰当的操作。
3.1.5 Calling JMF Methods 调用JMF方法时的一些约定 JMF对于errors(错误)和exceptions(异常)作如下约定。 Java Media Errors 是当程序调用了一个当前状态下非法的方法时抛出的。Errors是在外部程 序有控制权的状态下执行了非法的请求而抛出的。举例来说,调用一个处于Started的Player的方法 时抛出的就是error。开发者有责任在调用方法前确认Player已被停止。JMF error是可以通过优化 代码来避免的,应用程序不应该捕获JMF errors, 好的应用程序不会碰到这些错误。 Java Media Exceptions是当程序调用了不能完成的方法或在当前状态下不适用的方法。 Exceptions是在外部程序没有控制权的状态下抛出的。例如当我们试图同步两个time-base不匹配的 Player时,就会抛出异常。之所以是异常而不是错误,是因为我们无从检测time-base是否匹配,是 无法预期的。
3.1.1数据源(Data Source) 一个DataSource 封装了媒体的地址、协议和分发的软件。一个JavaMediaPlayer包含一个 DataSource。一旦创建,这个DataSource不能被用于其他媒体的传输。 一个Player的数据源可以 用MediaLocator或URL来标示。 MdiaLocator(媒体定位器)是一个JMF类,用来描述Player播放的媒体。MediaLocator与URL 类似,并且可以从URL来创建。他们的区别在于,在Java中,URL只有其协议是已知协议时才能被创建, 而MediaLocator则没有这个限制。 Java 媒体播放器可以播放来自多种数据源的媒体数据,包括本地、网络文件和实时广播等。 JMF支持两种不同的数据源。 Pull Data-Source (数据源被动的被获取)-由客户端发起数据传输并控制数据流,已知的协 议包括HTTP(超文本传输协议)和本地文件。 Push Data-Source (数据源主动推送)-由服务器发起数据传输并控制推送数据流。此类数据 源包括广播媒体,多点传送的媒体和VOD(视频点播)。 客户端程序所能够控制的度量,取决于媒体源的类型。举个例子说,MPEG文件可以被重定位 (reposition),那么播放MPEG的客户端程序就可以允许用户重播或者跳进至一个新时间点;而由服 务器段控制的广播媒体则不能被重定位;另外VOD协议则支持有限的用户操作,比如一个VOD客户端程 序可以允许用户跳进至新位置,但不能快进和快倒。 3.1.2 Players 一个Java Media Player是一个对象。她基于时间来处理数据流,从DataSource读取数据并在 确切的时间点渲染媒体。一个Java Media Player必须实现Player interface. Clock定义了基本的计时和同步操作, 她被Player 用来控制媒体的呈现。 Controller继承Clock对外提供提供如下方法: 管理系统资源 预载数据 提供监听机制(Observable),对外发送媒体事件通知 Duration提供了检测媒体时长的途径。 Player支持标准的用户控制,并放宽了来自于Clock的一些操作限制。 多个Player共享一个公共的计时和同步模型。一个Player的媒体时间表示了媒体流的当前位置。

EDA实验 乐曲播放器设

EDA实验 乐曲播放器设

实验六乐曲播放器设一、实验目的(1)进一步熟练EDA设计流程、系统仿真及硬件测试分析。

(2)学习多层次的设计方法,掌握基本的VHDL语言的设计方法。

(3)学习利用LPM(Library of Parameterized Modules 参数可设置模块库)进行设计。

(4)通过设计乐曲播放增加学生对EDA技术的了解。

二、实验内容与要求使用层次化设计方法,实现乐曲播放器功能,乐曲选取《梁祝》中化蝶部分。

可通过LPM_ROM存储节拍音符数,装载多首乐曲播放器供选择。

三、设计思路/原理图组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的2个基本要素,发音频率值可以查阅相关资料,产生各音符所需的频率可通过分频器实现。

所选乐曲为《梁祝》中化蝶部分及欢乐颂部分,其数字简谱可在相关资料查得。

由于各音符对应的频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。

若分频器时钟频率过低,则由于分频系数过小,四舍五入取整后的误差较大;若时钟频率过高,虽然误差变小,但会增加分频器的分频级数。

实际的设计应综合考虑两方面的因素,在尽量减小频率误差的前提下取合适的时钟频率。

本文设计的乐曲发生器选取6mhz的基准频率。

所选乐曲最小节拍为1/4拍,将1拍的时间长度定为1s,则只需要再提供一个4Hz 的时钟频率即可产生1/4拍的时长。

演奏的时间控制通过记录来完成,对于占用时间较长的节拍(一定是1/4拍的整数倍),如2/4拍,只需将该音符连续记录2次即可。

设计采用层次化设计方法,其关键是如何获取发音频率值和其持续时间及通过硬件的手段实现乐曲演奏效果,因此要求程序主要有三个模块:1、speakera 模块音符频率产生模块,即数控分频器。

由于直接从数控分频器中出来的输出信号时脉宽极窄的脉冲式信号,为有效的驱动扬声器,需重新加个D触发器以均衡其占空比,但是频率变为1/2。

其分频比由11位的预置数决定,分频预置值由tonetaba模块提供。

《程序设计实训I》媒体播放器设计和实现综合设计报告 软件工程专业

《程序设计实训I》媒体播放器设计和实现综合设计报告  软件工程专业

媒体播放器一.引言现在人们娱乐的方式多种多样,已经有了很明显的变化,以前的户外运动现在已经在锐减,换而之的是网络游戏与网上聊天,而在同时听听音乐看看电影也成为了巨大的需求,所以很多多媒体播放软件出现了,形形色色各种都有,而我也赶下时髦,体验一下编写的过程,现在才发现这并不难,重要的是插件的插入,而其他的功能实现只需调用相应函数就行了!二.系统设计的基本概念与原理1. 基本概念与知识(1). MFCMFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。

其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

(2)MFC编程特点微软基础类(Microsoft Foundation Classes),是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++是WinDOS下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包。

MFC是Win API与C++的结合,API,即微软提供的Windows下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方的编程语言来进行对Windows下应用程序的开发,使这些被开发出来的应用程序能在Windows下运行,因此用它们开发出来的应用程序都能工作在Windows的消息机制和绘图里,遵守Windows作为一个操作系统的内部实现, MFC是微软对API函数的专用C++封装,这种结合一方面让用户使用微软的专业C++ SDK来进行Windows下应用程序的开发变得容易,因为MFC是对API的封装,微软做了大量的工作,隐藏了好多程序开发人员在Windows下用C++ & MFC编制软件时的大量内节,如应用程序实现消息的处理,设备环境绘图等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六媒体播放器实现1. 上机实验报告六课程名称:多媒体技术班级:数媒**班实验日期:2014.5.25-6.2 小组成员:指导教师:实验序号:06 实验成绩:一、简单媒体播放器实现二、实验目的及要求目的:使用VC++2005进行编程,基于控制台应用程序,使用DirectShow SDK 实现流媒体播放器。

要求:1、掌握使用DirectSound 中常用接口完成音视频媒体回放、显示及控制等动作的方法;2、利用接口中的控制函数完成控制操作;3、学会面向对象的设计方法;3、开发一个简单的基于控制台应用程序的媒体播放程序。

三、实验环境本次上机实践所使用的平台和相关软件VS2012MFC\win7四、实验内容1.平台搭建DirectX是一个多媒体API,提供了与显卡、声卡、输入设备等进行交互的标准接口。

如果没有这个标准API,则将必须为每个显卡和声卡组合以及每种类型的键盘、鼠标和手柄编写不同的代码。

而DirectShow是微软为简化或降低音频/视频开发的难度而为音视频应用开发人员定制的一套API函数。

是DirectX的一个组件,提供对多媒体数据流的高质量捕获和回放。

不必关注视频硬件如显卡、视频捕捉设备、视频编码算法、解码算法,音/视频数据同步等复杂细节。

此次在VS下媒体播放器的实现即需要DirectShow的有关静态库的配置和开发环境的配置。

由于VS2012无需配置DirectX,用户可直接编译DirectShow里的baseclasses,选择成批编译,生成四个版本的静态库Debug、Debug_Unicode、Release、Release_Unicode。

为了能让VS c++自动搜索到SDK库和头文件,需对媒体播放工程进行环境配置。

(1)在include路径下添加DirectShow中的BaseClasses\、include、Common。

(2)在lib路基下添加DirectShow中的Debug 、Debug_Unicode、Release、Release_Unicode。

2.实现的基本功能:打开/关闭媒体文件播放/暂停/停止媒体全屏显示音量控制抓图静音控制播放时总位于顶层增加的功能:屏幕缩放比例退出播放时长的显示未来扩展功能:希望实现前一个、下一个视频的播放3.功能介绍:1、点击“打开”,添加播放资源*.mpg;*.mpeg;*.avi;*.rmvb;*.rm; *.mp3;*.mid;*.wav;*.mov;*.qt;*.wmv;*.wma;*.asf2、单击“播放”,开始播放或重新播放3、点击“暂停”,暂停播放视频(只在视频播放时才可以生效);4、单击“终止”,视频播放停止(只在视频播放时才可以生效);5、滑动音量滑块调节音量大小(有左声道和右声道)6、可以选择menu的各个功能,如抓图,缩放,全屏,退出,帮助里的关于等。

五、调试过程及实验结果实验效果图:六、总结通过这次实验,体会到了DirectShow的强大功能,为用户开发节省了很多时间。

例如DirectShow的视频窗口接口有专门的方法支持全屏显示功能,因此我们只需bool CDXGraph::SetFullScreen(BOOL inEnabled){if (pVideoWindow){HRESULT hr = pVideoWindow->put_FullScreenMode(inEnabled ? OATRUE : OAFALSE);return SUCCEEDED(hr);}return false;}即可实现全屏显示的功能。

但是不足的是我未能使用GraphEdit管理滤波器的插入、连接和运行,快速构建一个使用DitectShow的滤波器链表。

在链接滤波器引脚时,无法链接。

主要原因是对GraphEdit不是很熟悉,时间来不及。

七、附录核心代码:void CDSPlayerDlg::OnFileOpenQuick(){CString strFilter;strFilter = "媒体文件(所有类型)|*.mpg;*.mpeg;*.avi;*.rmvb;*.rm;*.mp3;*.mid;*.wav;*.mov;*.qt;*.wmv;*.wma;*.asf|";strFilter += "All Files(*.*)|*.*|";CFileDialog dlgOpen(TRUE, NULL, NULL, OFN_PATHMUSTEXIST | OFN_HIDEREADONLY, strFilter, this);if (IDOK == dlgOpen.DoModal()){PlayFile(dlgOpen.m_ofn.lpstrFile);}}void CDSPlayerDlg::OnSize(UINT nType, int cx, int cy){ CDialog::OnSize(nType, cx, cy);CRect rc;GetClientRect(&rc);rc.top = rc.bottom - m_Bar.GetHeight();m_Bar.MoveWindow(&rc);GetClientRect(&rc);rc.bottom -= m_Bar.GetHeight();m_videowindow.MoveWindow(&rc);if(m_pGraph){ CRect rc;GetClientRect(&rc);rc.bottom -= m_Bar.GetHeight();m_videowindow.MoveWindow(&rc);m_pGraph->SetWindowPos(&rc);}DrawLogo();}void CDSPlayerDlg::OnFileClose(){ DestroyGraph();m_Bar.EnableToolButton(false);m_Bar.EnableSlider(false);SetTimer(TIMER_DRAWLOGO, 10, NULL);m_Bar.DrawStatusBar();SetWindowText("Media Player Classic");}void CDSPlayerDlg::OnFileShot(){ CTime t = CTime::GetCurrentTime();CString s = t.Format("D:\\%y_%m_%d_%H_%M_%S.BMP");if(m_pGraph->SnapshotBitmap(s))MessageBox(CString("截图成功,保存为")+s);}void CDSPlayerDlg::OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu){ CDialog::OnMenuSelect(nItemID, nFlags, hSysMenu);CCmdUI cmdUI;CMenu* pMainMenu = GetMenu();CMenu* pSubMenu = pMainMenu-> GetSubMenu(nItemID);if(IsMenu(pSubMenu->GetSafeHmenu())){ cmdUI.m_nIndexMax = pSubMenu->GetMenuItemCount();for (UINT i = 0; i < cmdUI.m_nIndexMax; ++i){ cmdUI.m_nIndex = i;cmdUI.m_nID = pSubMenu->GetMenuItemID(i);cmdUI.m_pMenu = pSubMenu;cmdUI.DoUpdate(this, FALSE);}}}void CDSPlayerDlg::OnClose(){ DestroyGraph();CDialog::OnClose();}void CDSPlayerDlg::OnPlay(){ if(m_pGraph){m_pGraph->Play();SetTimer(TIMER_POSITION, 100, NULL);m_Bar.m_ToolBar.GetToolBarCtrl().SetState(ID_PLAY, TBSTATE_CHECKED| TBSTATE_ENABLED);m_Bar.m_ToolBar.GetToolBarCtrl().SetState(ID_PAUSE, TBSTATE_ENABLED);m_Bar.m_ToolBar.GetToolBarCtrl().SetState(ID_STOP, TBSTATE_ENABLED);m_Bar.EnableSlider(true);SetVolumeAndBalance();m_Bar.DrawStatusBar();}}void CDSPlayerDlg::OnPause(){ if(m_pGraph){m_pGraph->Pause();m_Bar.m_ToolBar.GetToolBarCtrl().SetState(ID_PLAY, TBSTATE_ENABLED);m_Bar.m_ToolBar.GetToolBarCtrl().SetState(ID_PAUSE, TBSTATE_CHECKED|TBSTATE_ENABLED);m_Bar.m_ToolBar.GetToolBarCtrl().SetState(ID_STOP, TBSTATE_ENABLED);m_Bar.DrawStatusBar();}}void CDSPlayerDlg::OnStop(){ if(m_pGraph){ KillTimer(TIMER_POSITION);m_pGraph->SetPosition(0);m_pGraph->Stop();m_Bar.SetSliderPos(0);m_Bar.m_ToolBar.GetToolBarCtrl().SetState(ID_PLAY, TBSTATE_ENABLED);m_Bar.m_ToolBar.GetToolBarCtrl().SetState(ID_PAUSE, TBSTATE_ENABLED);m_Bar.m_ToolBar.GetToolBarCtrl().SetState(ID_STOP, TBSTATE_CHECKED| TBSTATE_ENABLED);m_Bar.EnableSlider(false);m_Bar.DrawStatusBar(); }}void CDSPlayerDlg::OnTimer(UINT nIDEvent){ switch(nIDEvent){ case TIMER_POSITION:{if(m_pGraph){ __int64 pos = m_pGraph->GetPosition();__int64 len = m_pGraph->GetLength();m_Bar.SetSliderPos(int(pos * 10000 / len));m_Bar.DrawStatusBar(); }break; }case TIMER_DRAWLOGO:{DrawLogo();KillTimer(TIMER_DRAWLOGO);break; } }CDialog::OnTimer(nIDEvent);}void CDSPlayerDlg::OnPlayFullScreen(){ if(m_pGraph){ m_videowindow.m_bDrawCursor = m_pGraph->GetFullScreen();m_pGraph->SetFullScreen(!m_pGraph->GetFullScreen()); }}void CDSPlayerDlg::OnUpdateFileShot(CCmdUI* pCmdUI){ if(m_pGraph)pCmdUI->Enable(m_pGraph->IsHaveVideo());elsepCmdUI->Enable(false);}void CDSPlayerDlg::OnUpdateFileClose(CCmdUI* pCmdUI){if(m_pGraph)pCmdUI->Enable(m_pGraph->IsPaused() || m_pGraph->IsRunning() || m_pGraph->IsStopped());elsepCmdUI->Enable(false);}void CDSPlayerDlg::OnUpdateFileFullScreen(CCmdUI* pCmdUI){ if(m_pGraph)pCmdUI->Enable(m_pGraph->IsHaveVideo());elsepCmdUI->Enable(false);}void CDSPlayerDlg::OnUpdatePause(CCmdUI* pCmdUI){if(m_pGraph == NULL){ pCmdUI->Enable(false);return; }pCmdUI->Enable();pCmdUI->SetCheck(m_pGraph->IsPaused());}void CDSPlayerDlg::OnUpdatePlay(CCmdUI* pCmdUI){if(m_pGraph == NULL){pCmdUI->Enable(false);return;}pCmdUI->Enable();pCmdUI->SetCheck(m_pGraph->IsRunning());}void CDSPlayerDlg::OnUpdateStop(CCmdUI* pCmdUI){if(m_pGraph == NULL){ pCmdUI->Enable(false);return; }pCmdUI->Enable();pCmdUI->SetCheck(m_pGraph->IsStopped());}void CDSPlayerDlg::OnHelpAbout(){ CAboutDlg dlg;dlg.DoModal();}void CDSPlayerDlg::SetVolumeAndBalance(){ if(m_pGraph){m_pGraph->SetAudioBalance(m_Bar.GetBalanceValue());m_pGraph->SetAudioVolume(m_Bar.GetVolumeValue()); }}void CDSPlayerDlg::DrawLogo(){ CRect rc;m_videowindow.GetClientRect(&rc);CDC memDC;CClientDC ClientDlgDC(m_videowindow.FromHandle(m_videowindow.m_hWnd));CBrush brush;brush.CreateSolidBrush(RGB(0,0,0));ClientDlgDC.FillRect(&rc,&brush);CBitmap Bitmap, *oldBitmap;BITMAP bmpInfo;int nWidth, nHeight;memDC.CreateCompatibleDC(&ClientDlgDC);Bitmap.LoadBitmap(IDB_LOGO);Bitmap.GetBitmap(&bmpInfo);nWidth = bmpInfo.bmWidth;nHeight = bmpInfo.bmHeight;oldBitmap = memDC.SelectObject(&Bitmap);ClientDlgDC.BitBlt((rc.right-nWidth)/2, (rc.bottom-nHeight)/2, nWidth, nHeight,&memDC, 0, 0, SRCCOPY);memDC.SelectObject(oldBitmap);}void CDSPlayerDlg::ChangeVideoSize(int rate){int CaptionHeight = GetSystemMetrics(SM_CYCAPTION);int MenuHeight = GetSystemMetrics(SM_CYMENU);m_videowindow.MoveWindow(0, 0, m_pGraph->GetSourceWidth(), m_pGraph->GetSourceHeight());int width;int height;width = m_pGraph->GetSourceWidth() * rate / 100;height = m_pGraph->GetSourceHeight() * rate/ 100 + CaptionHeight + MenuHeight + m_Bar.GetHeight();CRect rc;GetWindowRect(&rc);MoveWindow(rc.left, rc.top, width, height);CenterWindow();}。

相关文档
最新文档