通过对CWMPPlayer4、CWMPSettings和CWMPControls等几个类的使用可以实现Windows Media Player的大部分常规功能,如果需要做进一步的控制,可以在用下面这些函数返回相关类对象后调用相关成员函数来加以实现:
GetCurrentMedia() 返回CWMPMedia类对象
GetMediaCollection() 返回CWMPMediaCollection类对象
GetPlaylistCollection() 返回CWMPPlaylistCollection类对象
GetNetwork() 返回CWMPNetwork类对象
GetCurrentPlaylist() 返回CWMPPlaylist类对象
GetCdromCollection() 返回CWMPCdromCollection类对象
GetClosedCaption() 返回CWMPClosedCaption类对象
GetError() 返回CWMPError类对象
GetDvd() 返回CWMPDVD类对象
GetPlayerApplication() 返回CWMPPlayerApplication类对象
1、新建一个基于对话框的mfc应用程序。
2、在工具箱上点右键选择“选择项”,打开com组件,选择windows media player添加到工具箱上。
3、把media控件拖到窗体上.选中窗体。在菜单上选择 项目-〉添加类-〉MFC->activex控件中的mfc类-〉添加。
4、选择 windows media player<1.0>,添加IWMPControls类。
5、在xxxDlg.h中添加:
#include "CWMPControls.h"
。。。
public:
COcx1 mm;//Ocx1为media控件,mm为控件变量。
CWMPControls m_control;
6、在xxxDlg.cpp文件中OnInitDialog()函数中添加:
m_control = static_cast<CWMPControls>(mm.get_controls());
7、现在你可以用mm.put_URL去干你的事情了。
另外一种办法,直接用COM操作,
例如:
CAxWindow *m_pView;
CComObject<IWMPPlayer4> m_spPlayer;
RECT rcClient;
CComPtr<IObjectWithSite> spHostObject;
CComPtr<IAxWinHostWindow> spHost;
CComObject<CRemoteHost> *pRemoteHost = NULL;
//创建ActiveX控件容器
AtlAxWinInit();
m_pView = new CAxWindow();
if(!m_pView)
{
hr = E_OUTOFMEMORY;
}
if(SUCCEEDED(hr))
{
::GetWindowRect(GetDlgItem(IDC_RANGE), &rcClient);
ScreenToClient(&rcClient);
m_pView->Create(m_hWnd, rcClient, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN, WS_EX_CLIENTEDGE);
if(::IsWindow(m_pView->m_hWnd))
{
hr = m_pView->QueryHost(IID_IObjectWithSite, (void **)&spHostObject);
if(!spHostObject.p)
{
hr = E_POINTER;
}
}
}
//创建 IServiceProvider and IWMPRemoteMediaServices
if(SUCCEEDED(hr))
{
hr = CComObject<CRemoteHost>::CreateInstance(&pRemoteHost);
if(pRemoteHost)
{
pRemoteHost->AddRef();
}
else
{
hr = E_POINTER;
}
}
//Set site to the remote host
if(SUCCEEDED(hr))
{
hr = spHostObject->SetSite((IWMPRemoteMediaServices *)pRemoteHost);
}
if(SUCCEEDED(hr))
{
hr = m_pView->QueryHost(&spHost);
if(!spHost.p)
{
hr = E_NOINTERFACE;
}
}
//创建WindowsMediaPlayer的控件
if(SUCCEEDED(hr))
{
hr = spHost->CreateControl(CComBSTR(L"{6BF52A52-394A-11d3-B153-00C04F79FAA6}"), m_pView->m_hWnd, NULL);
}
if(SUCCEEDED(hr))
{
hr = m_pView->QueryControl(&m_spPlayer);
if(!m_spPlayer.p)
{
hr = E_NOINTERFACE;
}
}
// Set skin to be custom skin
if(SUCCEEDED(hr))
{
DispEventAdvise(m_spPlayer); // Hook the event listener
hr = m_spPlayer->put_uiMode(CComBSTR(_T("custom")));
}
......
m_spPlayer->put_URL(...);
CComPtr<IWMPControls> spControls;
m_spPlayer->get_controls(&spControls);
if(spControls.p)
{
spControls->play();
}
......
首先,创建一个对话框,然后在资源管理器中右击对话框,选择“插入Active控件”—〉选择windows media player—〉将控件拉到适合大小—〉右击player控件—〉选择添加变量(m_avPlayer)。此时添加的变量在VS2003中不在时IWMPPlay4 了,而是COcx。
<?XML:NAMESPACE PREFIX = O />
右击类视图/解决方案—〉添加类—〉选择“Active中的MFC类”—〉选择windows media player<1.0>à选择相应的接口(IWMPMedia IWMPSettings IWMPControls IWMPPlaylist等等)生成类。为图方便,我将所有接口都生成了相应的类。
为了说明方便,我在对话框中放了几个按钮,分别是:打开,播放,暂停,停止,添加。并在对话框右边添加了一个clistctrl又来显示播放列表。
然后在对话框头文件中添加了以下变量:
CWMPControls m_control;
CWMPSettings m_set;
CWMPPlaylist m_playlist;
CWMPMedia m_media;
COcx<?XML:NAMESPACE PREFIX = ST1 /><chmetcnv unitname="m" sourcevalue="1" hasspace="True" negative="False" numbertype="1" tcsc="0" w:st="on">1 m</chmetcnv>_avPlayer;
CListCtrl m_listCtrl;
media player 的主要功能有:播放控制,屏幕显示,播放列表,播放列表集,播放信息显示。
l 其中播放控制又有:打开,开始,暂停,停止,快速播放,倒退等等。
1. 打开:当选择一个文件打开是,可以直接使用m_avPlayer.put_URL(fileName);
为打开按钮添加消息响应函数,在函数中添加如下代码:
char szFileFilter[]=
"Mp3 File(*.mp3)|*.mp3|"
"MPEG File(*.mpeg)|*.mpeg|"
"Media File(*.asf)|*.asf|"
"Video File(*.dat)|*.dat|"
"MPGA File(*.mpga)|*.mpga|"
"Wave File(*.wav)|*.wav|"
"AVI File(*.avi)|*.avi|"
"Movie File(*.mov)|*.mov|"
"Mid File(*.mid;*,rmi)|*.mid;*.rmi|"
"Wma File(*.wma)|*.wma|"
"All File(*.*)|*.*||";
CFileDialog fileDialog( TRUE,NULL,NULL,NULL,szFileFilter,this);
if (fileDialog.DoModal() == IDOK)
{
CString fileName=fileDialog.GetPathName();
m_avPlayer.put_URL(fileName);
}
这样当选择一个播放文件后,media player就会自动播放该文件了。
2. 开始:为了实现播放控制,在OnInitDialog()中添加代码:
m_control = static_cast<CWMPControls>(m_avPlayer.get_controls());
然后为开始按钮添加消息响应函数,并在函数中添加代码:
m_control.play();
3. 暂停:m_control.pause();
4. 停止:m_control.stop();
5. 其他如倒退,快速播放,MSDN上有相应的函数,读者可依次自行解决。
到此,一个带有简单播放控制的播放器就完成。
l 下面来实现播放列表。为实现播放列表控制,首先在OnInitDialog()中添加代码:
//创建一个播放列表
m_playlist = static_cast<CWMPPlaylist>(m_avPlayer.get_currentPlaylist());
然后将打开按钮的消息响应函数改为:
char szFileFilter[]=
"Mp3 File(*.mp3)|*.mp3|"
"MPEG File(*.mpeg)|*.mpeg|"
"Media File(*.asf)|*.asf|"
"Video File(*.dat)|*.dat|"
"MPGA File(*.mpga)|*.mpga|"
"Wave File(*.wav)|*.wav|"
"AVI File(*.avi)|*.avi|"
"Movie File(*.mov)|*.mov|"
"Mid File(*.mid;*,rmi)|*.mid;*.rmi|"
"Wma File(*.wma)|*.wma|"
"All File(*.*)|*.*||";
CFileDialog fileDialog( TRUE,NULL,NULL,NULL,szFileFilter,this);
if (fileDialog.DoModal() == IDOK)
{
CString fileName=fileDialog.GetPathName();
//创建一个媒体
m_media = static_cast<CWMPMedia>(m_avPlayer.newMedia(fileName));
//将媒体添加到播放列表
m_playlist.appendItem(m_media);
//将列表添加到当前列表,以便实现自动播放
m_avPlayer.put_currentPlaylist(m_playlist);
m_set = (CWMPSettings)m_avPlayer.get_settings();
//参数true设置自动播放,false不设置自动播放
m_set.put_autoStart(true);
//将媒体的名字添加到列表控件
m_listCtrl.InsertItem(0, m_media.get_name());
}
l 接着是屏幕显示控制
m_avPlayer.put_fullScreen(true/false);
l 使用播放列表自动播放文件,第一步: 需要在播放列表中添加媒体;第二步:将列表设置为当前播放列表;第三步:将播放设置为自动播放。
函数如下:
//创建媒体
m_media = static_cast<CWMPMedia>(m_avPlayer.newMedia(fileName));
//将媒体追加到播放列表
m_playlist.appendItem(m_media);
//将类别设置为当前列表
m_avPlayer.put_currentPlaylist(m_playlist);
//设置自动播放
m_setting.put_autoStart(true);
l 播放信息的显示
可以通过CWMPMedia类获取相关的媒体信息。
获取播放文件名:media.get_name();
分享到:
相关推荐
C#调用LibVLCSharp包播放视频 1、句柄播放视频, media = new Media(libVLC, @textBox2.Text/*openDialog.FileName*/, FromType.FromPath); //赋值播放的句柄 mediaPlayer.Hwnd = this.panel1.Handle; ...
经过测试已经使用,可以实现播放、停止等功能,可以直接使用。 (在后期增加拖动等功能本代码没有,需要可以联系我)
用Visual Studio 2005制作的仿mediaPlayer的播放器!
<id>MediaPlayer</id> <filename>MediaPlayer</filename> <name>MediaPlayer</name> <version>v1</version> [This value will be overwritten by Flex Builder in the output app.xml]</content> ...
需要使用软件 yEd Graph Editor 打开,内容基于个人当时的知识理解分析。
自己写的android音乐播放器,利用了android原生的MediaPlayer实现。结合MediaPlayer文档看,很好理解!对初学者有很大的参考价值!有问题直接私信我!
使用VideoView播放视频简单、方便,但有些早期的开发者还是更喜欢使用MediaPlayer来播放视频,但由于MediaPlayer主要用于播放音频,因此它没有提供图像输出界面,此时就需要借助于SurfaceView来显示MediaPlayer播放...
Android下MediaPlayer播放MP3示例,详细参见博客:http://www.cnblogs.com/plokmju/p/android_MediaPlayer.html
利用Window Media Player 控件自己做一款小巧的mp3播放器来听音乐 ,是不是很享受呢?今天刚写出来的,听听mp3感觉还不错哦。
几种调用window media player方式.显示不一样。
本程序使用vc++编写的程序,可以实现视屏的播放功能,所有的格式全部支持,非常适合大家研究修改。
MediaPlayer 视频播放的实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER 文件传送,...
需要使用软件 draw.io 打开,内容基于个人当时的知识理解分析。
MediaPlayer使用命令行来操作微软的内置播放器,适合用于自动化操作。
5.29 Visual C++ 2010 MediaPlayer控件简介与开发 265 5.30 小结 266 第二部分 Visual C++ 2010下MFC开发 第6章 计算机测控系统概述 267 6.1 Visual C++ 2010 SDI开发简介 267 6.1.1 建立应用程序基本...
上次我们实现了把手机里的音频扫描到,然后放在list集合里面,...private MediaPlayer mediaPlayer;//播放音频的 2、实例化 //初始化 mediaPlayer = new MediaPlayer(); 然后我们就有一个MediaPlayer的对象可以使用了
摘要:C#源码,多媒体技术,MP3播放器 一个超简单的C#音乐播放器,不能...主要是使用C#调用Windows MediaPlayer插件制作完成的播放MP3音乐文件的小程序,功能有打开文件、播放、暂停控制、停止等功能。运行截图如上所示。
利用C++实现的一个基于MFC的多媒体播放器,调用Windows Media Player插件,编译通过。综合网上的一些关于Windows Media Player的资料实现的,支持视频播放和音频播放。
停止播放音频,调用该方法后MediaPlayer对象无法在播放音频 release() 释放掉与MediaPlayer对象相关的资源 isPlaying() 判断当前MediaPlayer是否正在播放音频 getDuration 获取载入的音频文件的时长 …… …… 创建...
Android 视频播放demo MediaPlayer+Surface实现 播放网络视频: MyMediaPlayer.getInstance().play("http://download.cntv.cn/docuchina/PSA/2017/08/28/3b69f457848e0b497b12e356376515df_mpeg28000000PCM.mp4"); ...