VC调用windows media player控件实现视频播放

一 新建MFC项目工程  
打开Microsoft Visual C++ 6.0(以下简称VC6.0),选择菜单File->New命令,弹出New窗口,在New窗口中单击Projects标签,弹出选项卡,如图1所示,在下面选择工程类型MFC AppWizard(exe),然后在右边的编辑框Project name:中输入要新建MFC工程名称OpenVideo。再点击下面的OK键,在弹出的对话框中选择Dialog based选项,点击下面的Finish,在弹出的窗口中单击OK。这样我们就新建了一个MFC项目工程,其界面如图2所示。  
图1 New对话框  
图2 MFC工程界面  
二 添加Windows Media Player控件  
上面我们已经新建了一个MFC工程,这里先对Windows Media Player控件做一简单介绍,在介绍在VC6.0中如何添加Windows Media Player控件。  
Windows Media Player控件的添加  
选择菜单Project->Add to Project中的Components and Controls命令,弹出如图3所示的Components and Controls Gallery对话框。然后双击Choose a component to insert into your project:中的Registered ActiveX Controls,在该文件夹中选择Windows Media Player,如图4所示,单击Insert,在Insert this component?中选择“确定”,将弹出Confirm Classes窗口,在列表框中有CWMPPlayer4等各种类,单击OK将返回到Components and Controls Gallery界面。最后单击“Close”返回VC++开发界面。自此,Windows Media Player的类都已加载到MFC的OpenVideo工程中。图5显示了OpenVideo工程中Source Files中的不同类,可以看出Windows Media Player控件中的类已添加到OpenVideo工程中。接下来的就是界面的设计。  
图3 Components and Controls Gallery对话框  
图4 Windows Media Player选择窗口  
图5 OpenVideo工程的Source Files  
三 界面设计  
通过上面的工作,我们已经把Windows Media Player控件添加到OpenVideo工程中了,这里主要讲述改成小界面的设计。  
图6 Dialog选项  
在VC++6.0项目工作区中的ResourceView资源视图,展开资源视图文件夹下的对话框选项Dialog,双击Dialog文件下的IDD_OPENVIDEO_DIALOG,如图6所示,将在VC++6.0编辑区中弹出OpenVideo对话框编辑窗口。首先删除对话框中的几个原始命令按钮,然后在右边的Controls工具栏中分别选择3个Button按钮和1个Windows Media Player按钮置于OpenVideo对话框中。如图7所示,单击右键并选择Properties,打开的Dialog Properties窗口中,将General->Caption设置为“视频播放器”;在按钮命令上单击右键并打开Properties选项,在弹出的窗口中设置3个按钮的General->Caption分别为“打开”、“播放”、“关闭”;打开类向导窗口MFC ClassWizard,在Member Variables下给Windows Media Player按钮设置关联变量 m_Ctrplay,类型为CWMPPlayer4,如图8所示,单击“OK”即可。  
图7 视频播放器界面示意图  
图8 MFC ClassWizard窗口  
下面为“打开”、“播放”、“关闭” 分别添加消息响应函数OnButtonOpen()、OnButtonPlay()和OnButtonClose(),这3个函数的代码分别如下:  
1、OnButtonOpen()打开视频文件  
void COpenVideoDlg::OnButtonOpen()  
{  
// TODO: Add your control notification handler code here  
CfileDialog dlg(TRUE,_T("avi"),_T("*.avi"),  
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,  
_T("(*.rmvb)|*.rmvb|(*.mpg)|*.mpg|(*.avi)|*.avi|(* .*)|*.*|"));  
if (dlg.DoModal())  
{  
m_strFilePathName=dlg.GetPathName();  
}  
}  
2、OnButtonPlay()播放视频文件  
void COpenVideoDlg::OnButtonPlay()  
{  
// TODO: Add your control notification handler code here  
if (m_strFilePathName!="")  
{  
m_Ctrplay.SetUrl(m_strFilePathName);  
}  
}  
3、OnButtonClose()关闭视频文件  
void COpenVideoDlg::OnButtonClose()  
{  
// TODO: Add your control notification handler code here  
m_Ctrplay.close();  
}  
其中,变量m_strFilePathName在头文件nbsp;OpenVideoDlg.h >中的class COpenVideoDlg : public Cdialog中定义为Cstring型变量。  
图9 视频播放器窗口  
四 结论  
通过以上的讨论,我们已经设计好了视频播放器,然后运行程序,通过“打开”按钮打开一个视频文件,再按“播放”按钮,则其播放效果如图9所示,若按“关闭”按钮,则将视频文件关闭之。可以看出,基于VC++的Windows Media Player的视频播放器能够有效地各种播放视频文件。  
 
 
 所支持的类型可参考微软网站:http://support.microsoft.com/kb/316992/zh-cn

支持的文件格式

Windows Media 格式(.asf、.wma、.wmv、 .wm)

Windows Media 元文件(.asx、.wax、.wvx、.wpl)

Microsoft 数字视频记录 (.dvr-ms)

Windows Media 下载程序包 (.wmd)

影音交叉存取 (.avi)

运动图像专家组(.mpg、.mpeg、.m1v、.mp2、 .mp3、.mpa、.mpe、.mpv2、.m3u)

乐器数字接口(.mid、.midi、 .rmi)

音频交换文件格式(.aif、.aifc、.aiff)

Sun Microsystems 和 NeXT(.au、.snd)

Audio for Windows (.wav)

CD 音频曲目 (.cda)

Indeo 视频技术 (.ivf)

Windows Media Player 皮肤(.wmz、.wms)

QuickTime 内容(.mov、.qt)

不受支持的文件格式

RealNetworks 内容(.ra、.rm、.ram)

QuickTime 内容(.mov、.qt)

MPEG-4 (.mp4)

免费无损音频编解码器 (.flac)

FLAC 是一种类似于 MP3 的音频格式,它代表“Free Lossless Audio Codec(免费无损音频编解码器)”,允许对数字音频进行无损压缩,同时在不丢失任何信息的情况下减小文件大小。通过 FLAC 的算法压缩的数字音频通常可减少至原始大小的 50–60%,并可解压缩为完全相同的原始音频数据副本

你可能感兴趣的:(多媒体编程)