c语言播放视频文件,c++怎么播放视频
Yyds干货库存
@[目录]
font=latitude size=5 face=Lishu无为,而天下有余;有前途的东西,全世界都用,但还不够。
1.https://docs . Microsoft . com/en-us/windows/Win32/WMP/about-the-windows-media-player-SDK简介
Microsoft media player软件开发工具包(SDK)为自定义Windows Media Player和Windows Media Player Mobile以及使用Windows Media Player ActiveX控件和Windows Media Player Mobile ActiveX控件提供了信息和工具。
1.1 WMP控制功能
多种技术支持嵌入Windows Media Player控件,包括:
网页浏览器中的HTML。支持Microsoft Internet Explorer、Firefox和Netscape Navigator版浏览器。
使用Microsoft Visual C开发系统创建的程序。
用Microsoft Visual Basic 6.0创建的程序。
使用。NET框架,包括那些用Visual Basic和C#编程语言编写的。
微软办公软件。
1.2 WMP开发接口
Windows media player控件是使用Microsoft组件对象模型(com)技术的标准ActiveX控件。Windows Media Player的功能被细化为一组遵循标准COM准则的编程接口。您可以将播放器控件对象模型与Microsoft JScript或Microsoft visual basic scripting edition(VBScript)一起使用,在标准HTML网页上对这些界面进行编程。您还可以使用Microsoft JScript在皮肤中对它们进行编程。如果您想创建一个带有嵌入式控件的自定义程序,可以使用多种语言中的一种,包括Visual Basic、C和C#。
脚本的玩家对象模型:
使用ActiveX对象的概念来包含编程功能。Windows Media Player使用多个对象来划分控件提供的功能。根对象是Player对象,其他对象通过特定的属性附加在Player对象上。
下图显示了如何将Windows Media Player 11 ActiveX控件对象模型用于脚本语言。
在C语言中,有时在。NET语言中,对象由COM接口表示。在Windows Media Player对象模型中,COM接口的名称与对象名称相同,但带有前缀“IWMP”。例如,网络对象通过IWMPNetwork接口公开。
1.3 WMP发展模式
(1)导入ActiveX控件,拖放ActiveX控件。
将ActiveX控件添加到工具箱,菜单工具-选择工具箱项
选择“COM组件”并勾选您想要选择的控件。
工具箱底部有更多对应的ActiveX控件。
拖到界面上使用。
(ActiveX控件的动态创建
向导,快捷方式Ctrl Shitf X
右边的“添加类”和“ActiveX中的MFC控件类”生成ActiveX控件类。
在框架或对话框的初始函数中调用类的Create函数。
(3)COM调用模式
向导,快捷方式Ctrl Shitf X
右侧的“添加类”和“类型库中的MFC类”生成继承COleDispatchDriver的类。
在框架或对话框的初始函数中,调用该类的CreateDispatch函数。
1.4 WMP支持的格式
本文列出了Microsoft Windows Media Player 12支持的多媒体文件类型。如果在Windows中安装了新的编解码器,可能会支持其他文件格式。
Windows Media Player支持文件类型:
Windows Media格式(。asf,wma,wmv,wm)
Windows图元文件(。asx,蜡,wvx,wmx,wpl)
Microsoft数字视频录制(。dvr-ms)
Windows Media下载包(。大规模杀伤性武器)
视听交错(。avi)
运动图像专家组(。mpg,mpeg, m1v, mp2, mp3,mpa,mpe, m3u)
音乐数字接口。mid,迷笛,rmi)
音频交换文件格式(。aif,aifc,aiff)
太阳微系统公司和NeXT公司。au,snd)
Windows音频(。wav)
CD上的音轨(。cda)
O Indeo视频技术(。试管婴儿)
Windows Media Player外观(。wmz,wms)
QuickTime影片(。mov)
MP4音频文件(. m4a)
mp4视频文件(. MP4、 m4v、 mp4v、 3g2、3gpp 2、 3gp、3gpp)
Windows音频文件(。aac,adt,adts)
MPEG-2 TS视频文件(m2ts)
无损音频编解码器(。flac)
2.官方网站代码示例
https://docs . Microsoft . com/en-us/previous-versions/windows/desktop/API/wmp/nn-wmp-iwmp player 4
2.1在控制台应用程序中使用Windows媒体播放器控件
#include atlbase.h
#包含" atlwin.h "
#包含" wmp.h "
int _tmain(int argc,_TCHAR* argv[])
共初始化(空);
HRESULT hr=S _ OK
CComBSTR bstrVersionInfo//包含版本字符串。
CComPtr IWMPPlayer spPlayer//指向IWMPPlayer接口的智能指针。
hr=spPlayer .cocreate instance(_ _ uuidof(windows media player),0,cls CTX _ in proc _ SERVER);
如果(成功(小时))
HR=sp player-get _ version info(bstr版本信息);
如果(成功(小时))
//在消息框中显示版本。
COLE2T pStr(bstr版本信息);
MessageBox( NULL,(LPCSTR)pStr,_T(Windows Media Player版本),MB _ OK);
//清理。
spPlayer .发布();
coun initialize();
返回0;
}
2.2在Windows操作系统应用程序中承载Windows媒体播放器控件
#包含" wmp.h "
#包含atlbase.h
#包含atlcom.h
#包含atlhost.h
#包含atlctl.h
CAxWindow m _ wndView//ActiveX宿主窗口类。
CComPtr iwmp播放器m _ spWMPPlayer//指向IWMPPlayer接口的智能指针。
AtlAxWinInit();
CComPtr IAxWinHostWindow spHost
函数执行返回值
GetClientRect(RC客户端);
m_wndView .Create(m_hWnd,rcClient,NULL,WS _ CHILD WS _ VISIBLE WS _ clip children,WS _ EX _ client edge);
hr=m_wndView .查询主机(sp主机);
HR=sp host-create control(CComBSTR(_ T( { 6 BF 52 a 52-394 a-11 D3-B153-00 c 04 f 79 FAA 6 } )),m_wndView,0);
hr=m_wndView .查询控件(m _ spWMPPlayer);
这些说明总结如下:
1.增加
#包含" wmp.h "
#包含atlbase.h
#包含atlcom.h
#包含atlhost.h
#包含atlctl.h
添加到视图头文件。
2.声明成员变量,如下所示
CAxWindow m _ wndView
CComPtr iwmp播放器m _ spWMPPlayer
3.添加AtlAxWinInit();到App InitInstance().
4.添加局部变量:CComPtr IAxWinHostWindow spHost
函数执行返回值
注意,我还必须为局部变量添加RECT rcClient,
但是在说明书中没有具体说明。
5.添加以下代码:
m_wndView .Create(m_hWnd,rcClient,NULL,WS _ CHILD WS _ VISIBLE WS _ clip children,WS _ EX _ client edge);
hr=m_wndView .查询主机(sp主机);
HR=sp host-create control(CComBSTR(_ T( { 6 BF 52 a 52-394 a-11 D3-B153-00 c 04 f 79 FAA 6 } )),m_wndView,0);
hr=m_wndView .查询控件(m _ spWMPPlayer);
你可以把它放在重绘的视图中,或者你可以
照我做的做,创建一个显示Mov子程序,我调用它
来自翁德罗。参见我的原始帖子中的代码。现在,设置一个
在"查询主机"行设置断点,然后编译并运行。
的自动变量中会看到hr=E_Fail
调试窗口。
若要在基于Windows操作系统的程序中使用Windows媒体播放器ActiveX控件(包括用户界面),必须提供微软倡导的ActiveX网络化多媒体对象技术控件容器100 . ATL提供CAxWindow类来提供微软倡导的ActiveX网络化多媒体对象技术宿主窗口功能。
CWMPHost.h:
//CWM主机。h:CWM主机的声明
//版权所有(三)微软公司。保留所有权利。
#include resource.h //主符号
#包含oledlg.h
#包含" wmp.h "
# include CWMPEventDispatch.h
/////////////////////////////////////////////////////////////////////////////
//CWM主机
类CWM host:public cwindowwinpl CWM host,CWindow,cwin tais WS _ overlapped window WS _ VISIBLE WS _ clip children WS _ clip siblings,WS _ EX _ app window WS _ EX _ window edge
公共:
DECLARE_WND_CLASS_EX(NULL,0,0)
开始_消息_地图
消息处理程序(WM_CREATE,OnCreate)
消息处理程序(WM_DESTROY,OnDestroy)
MESSAGE_HANDLER(WM_SIZE,OnSize)
消息处理程序(WM_ERASEBKGND,OnErase)
MESSAGE_HANDLER(WM_CONTEXTMENU,FowardMsgToWMP)
COMMAND _ ID _ HANDLER(ID _ FILE _ OPEN,OnFileOpen)
命令身份处理程序(ID应用程序出口,OnFileExit出口)
COMMAND _ ID _ HANDLER(ID _ wmp core _ CLOSE,OnWMPCoreClose)
COMMAND _ ID _ HANDLER(ID _ wmp核心URL,OnWMPCoreURL)
COMMAND _ ID _ HANDLER(ID _ wmp core _ OPENSTATE,OnWMPCoreOpenState)
COMMAND _ ID _ HANDLER(ID _ wmp core _ PLAYSTATE,OnWMPCorePlayState)
COMMAND _ ID _ HANDLER(ID _ wmp core _ version info,OnWMPCoreVersionInfo)
COMMAND _ ID _ HANDLER(ID _ wmp core _ laun churl,OnWMPCoreLaunchURL)
COMMAND _ ID _ HANDLER(ID _ wmp core _ ISONLINE,OnWMPCoreIsOnline)
command _ id _ handler(id _ wmp core _ status,onwmpcorestatus)
command _ id _ handler(id _ wmp core _ controls,onwmpcoreinterface)
command _ id _ handler(id _ wmp co _ settings,onwmpco重试)
command _ id _ handler(id _ wmp core _ current media,onwmpconse)
command _ id _ handler(wmp core _ media集合id,onwmpcornasece)
command _ id _ handler(id _ wmp core _ playlist集合,onwmpconse)
command _ id _ handler(wmp co _ network id,onwmpco重试)
command _ id _ handler(id _ wmp core _ current playlist,onwmpcornasece)
command _ id _ handler(id _ wmp core _ cdrom collection,onwmpcoreinterface)
command _ id _ handler(id _ wmp core _ closed caption,onwmpconse)
command _ id _ handler(wmp core _ error id,onwmpcoreinterface)
command _ id _ handler(wmp core _ id 2 _ DVD,onwmpconse)
command _ id _ handler(id _ wmppllayer _ enabled,onwmpplayerenabled)
command _ id _ handler(id _ wmppllayer _ full screen、onwmppllayerfull)
command _ id _ handler(id _ wmppllayer _ enable上下文菜单、onwmpplayerenablecontextmenu)
command _ id _ handler(id _ wmppllayer _ ui mode、onwmpplayeruimode)
command _ id _ handler(id _ wmppllayer 2 _ stretch fit、onwmpplayer 2 stretchtofit)
END_MSG_MAP()
见不信任(hwnd/* hwnd *;
lrsult ondstroy(uint/* um */wparam/* wparam */LPAR am */bool bhandled);
lrsult oncreate(uint/* um */wparam/* wparam */LPAR am */bool/* bhandled */);
lresult onerase(uint/* um */wparam/* wparam */LPAR am */bool/* bhandd */中文本);
lrsult on size(uint/* oseg */wparam/* wparam */LPAR am */bool/* bhandd *);
lrsult conf ile open(word/* wnotifycode */word/* wid */hwnd/* hwndctl */bool/* bhandled */中文本);
lrsult conf文件退出(word/* wnotifycode */word/* wid */hwnd/* hwndctl */bool/* bhandled */中文本);
lrsult onwmpcorecloss(word/* wnotifycode */word/* wid */hwnd/* hwnd CTL */bool/* bhandled */中文本);
lrsult onwmpcoreurl(word/* wnotifycode */word/* wid */hwnd/* hwnd CTL */bool/* bhandled */中文本);
lrsult onwmpcoreopensates(word/* wnotifycode */word/* wid */hwnd/* hwndctl */bool/* bhandled */中文本);
lrsult onwmpcoretate(word/* wnotifycode */word/* wid */hwnd/* hwnd CTL */bool/* bhandled */中文本);
lrsult onwmpcoreversinfo(word/* wnotifycode */word/* wid */hwnd/* hwnd CTL */bool/* bhandled */中文本);
lrsult onwmpcornunchur(word/* wnotifycode */word/* wid */hwnd/* hwnd CTL */bool/* bhandled */中文本);
lresult onwmpcoreisonline在线版(word/* wnotifycode */word/* wid */hwnd/* hwnd CTL */bool/* bhandled */中文本);
lrsult onwmpcorest状态(word/* wnotifycode */word/* wid */hwnd/* hwndctl */bool/* bhandled */中文本);
lrsult onwmpcocesse(word/* wnotifycode */word wid,hwnd/* hwndctl */bool/* bhandled */中文本);
lrsult onwmppllayerenabled(word/* wnotifycode */word/* wid */hwnd/* hwnd CTL */bool/* bhandled */中文本);
lrsult onwmppllayerfull(word/* wnotifycode */word/* wid */hwnd/* hwnd CTL */bool/* bhandled */中文本);
lrsult onwmppllayerenablecontextmenu(word/* wnotifycode */word/* wid */hwnd/* hwndctl */bool/* bhandled */中文本);
lrsult onwmppllayerimode(word/* wnotifycode */word/* wid */hwnd/* hwnd CTL */bool/* bhandled */中文本);
lrsult onwmppllayer 2拉伸合身(word/* wnotifycode */word/* wid */hwnd/* hwndctl */bool/* bhandled */中文本);
lrsult fowardmsgtowmp(uint rsg、WPARAM wParam、LPARAM、bool bhandled);
caxwindow m _ wndview
ccomptr iwmplayer m _ spwmppllayer;
ccomp iconconnectpoint m _ sp连接点;
S7-1200可编程控制器:
CWMPHost.cpp:
//CWM host。CPP:cwmhost的实施
//版权所有微软公司.保留所有权利。
#包括stdafx.h
#包括CWMPHost.h
#包括对话h。
我的天啊!我的天啊!我的天啊!我的天啊!我的天啊!我的天啊!我的天啊!我的天啊!我的天啊!我的天啊!我的天啊!我的天啊!我的天啊!我的天啊!我的天啊!我的天啊!我的天啊!我的天啊
//CWM host
请参阅CWM host:conf消息(hwnd/* hwnd *)
* post quiet message(0);
lrsult CWM host:oncreate(uint/* um */wparam/* wparam */LPAR am/* LPAR am */bool/* bhandd *)
atlaxwininit();
CComPtr IAxWinHostWindow spHost
CComPtr IConnectionPointContainer spConnectionContainer;
ccommpeventdispatch * peventlister=NULL;
CComPtr IWMPEvents speventlister;
函数执行返回值
RECT RC客户;
m _ dwAdviseCookie=0;
//创建窗口
GetClientRect(RC客户端);
m_wndView .Create(m_hWnd,rcClient,NULL,WS _ CHILD WS _ VISIBLE WS _ clip children,WS _ EX _ client edge);
if (NULL==m_wndView.m_hWnd)
转到失败;
//在窗口中加载定制控件
hr=m_wndView .查询主机(sp主机);
if (FAILMSG(hr))
转到失败;
HR=sp host-create control(CComBSTR(L { 6 BF 52 a 52-394 a-11 D3-B153-00 c 04 f 79 FAA 6 } ),m_wndView,0);
if (FAILMSG(hr))
转到失败;
hr=m_wndView .查询控件(m _ spWMPPlayer);
if (FAILMSG(hr))
转到失败;
//开始监听事件
HR=ccommpeventdispatch:创建实例(peventlister);
sp event listener=PE vent listener;
if (FAILMSG(hr))
转到失败;
HR=m _ spWMPPlayer-查询接口(spConnectionContainer);
if (FAILMSG(hr))
转到失败;
//查看定制控件是否支持IWMPEvents接口
HR=spConnectionContainer-FindConnectionPoint(_ _ uuidof(IWMPEvents),m _ sp连接点);
如果(失败(小时))
//如果没有,请尝试_WMPOCXEvents接口,该接口将使用自动化接口
HR=spConnectionContainer-FindConnectionPoint(_ _ uuidof(_ WMPOCXEvents),m _ spConnectionPoint);
if (FAILMSG(hr))
转到失败;
HR=m _ sp连接点-Advise(spevent监听器,m _ dw Advise cookie);
if (FAILMSG(hr))
转到失败;
返回0;
失败:
PostQuitMessage(0);
返回0;
LRESULT CWM host:on destroy(UINT/* uMsg */,WPARAM /* wParam */,LPARAM /* lParam */,BOOL bHandled)
//停止侦听事件
if (m_spConnectionPoint)
如果(0!=m_dwAdviseCookie)
m _ sp连接点-un advise(m _ d advise cookie);
m _连接点.发布();
//关闭定制控件
if (m_spWMPPlayer)
m _ spWMPPlayer-close();
m_spWMPPlayer .发布();
bHandled=FALSE
返回0;
3、C测试代码
在基于对话框的MS-VisualC++的类库(微软基础班的缩写)应用程序中嵌入了Windows操作系统媒体播放器窗口媒体播放器微软倡导的微软倡导的ActiveX网络化多媒体对象技术网络化多媒体对象技术控件。
新建一个基于MS-VisualC++的类库(微软基础班的缩写)对话框工程添加微软倡导的微软倡导的ActiveX网络化多媒体对象技术网络化多媒体对象技术控件
鼠标右键弹出菜单,选择"插入微软倡导的微软倡导的ActiveX网络化多媒体对象技术网络化多媒体对象技术控件"
显示ActvieX控件列表窗口如下:
控件被添加到MS-VisualC++的类库(微软基础班的缩写)窗口上。
鼠标右键,添加控件变量。自动生成类文件COCX.h,COCX.cpp。
鼠标右键,选择"类向导",添加理财产品的核心播放类。
从wmp.dll来生成类代码文件。
自动生成类文件CWM播放器4。h,CWM玩家4。CPP。
将COCX m _ player改成CWM播放器4m _ player
然后换一种方式,通过"类型库种的MS-VisualC++的类库(微软基础班的缩写)类",添加其他的理财产品封装类。比如控制、设置、播放列表等。
这里添加其他5个理财产品辅助封装类,如下:
最后,VS代码工程的文件组织结构如下:
(1)定义变量
CFileDialog fileDialog( TRUE,NULL,NULL,NULL,szFileFilter,this);
if(文件对话框.DoModal()==IDOK)
CString fileName=fileDialog .get pathname();
m_player.put_URL(文件名);
}
//创建一个播放列表
m _ playlist=static _ cast CWM播放列表(m _ player。get _ current playlist());
m _ player.put _全屏(tru);
char szFileFilter[]=
Mp3文件(*.mp3)*.mp3
活动图像专家组国际标准文件(*。mpeg)* .mpeg
媒体文件(*。asf)* .asf
视频文件(*。dat)* .dat
中期提升型文件(*。mpga)* .mpga
波浪文件(*。wav)* .wav
影片格式文件(*。avi)* .avi
电影文件(*。mov)* .mov
中间文件(*。mid*,rmi)* .中期*。rmi
潜力无限的文件(*。wma)* .wma
所有文件(*。*)*.*;
CFileDialog fileDialog( TRUE,NULL,NULL,NULL,szFileFilter,this);
if(文件对话框.DoModal()==IDOK)
CString fileName=fileDialog .get pathname();
//创建一个媒体
m _ media=static _ cast CWM媒体(m _ player。新媒体(文件名));
//将媒体添加到播放列表
m _播放列表。追加项目(m _ media);
//将列表添加到当前列表,以便实现自动播放
m _ player。put _ current playlist(m _ playlist);
m _ set=(cwmp设置)m _ player。get _ settings();
//参数真实的设置自动播放,假的不设置自动播放
m _ set。put _ auto start(真);
//将媒体的名字添加到列表控件
m_listCtrl .InsertItem(0,m _ media。get _ name());
}
m _ control=static _ cast cwmp控件(m _ player。get _ controls());
m _ control。play();
m _ control。pause();
m _ control。stop();
上面的步骤操作不正确的话,会出现如下的提示框。
4、IE测试代码
!-版权所有(三)微软公司。保留所有权利。-
!- Windows Media Player SDK嵌入式播放器示例-
超文本标记语言
头
标题嵌入式播放器控件示例/标题
/头
BODY onLoad= Init();
嵌入Windows媒体播放器
氘包括自定义错误处理/H2
OBJECT id=Player classid=CLSID:6 BF 52 a 52-394 a-11 D3-B153-00 c 04 f 79 fa a6 height= 200 width= 200
PARAM NAME= auto start VALUE= true
/对象
巴西
INPUT type=button value= Play Audio name=btnPlayAudio layAudio()
输入类型=按钮值=播放视频名称=btnPlayVideo layVideo()
INPUT type=button value= Pause name=BTN Pause me()
输入类型=按钮值=Stop name=btnStop topMe()
INPUT type=button value= Generate Error name=btnMakeError akeError()
巴西
DIV id=divName size=50媒体名称:/DIV BR BR
DIV id=DIV state size=50 Playstate:/DIV BR BR
DIV id=divStatus size=50状态:/DIV BR BR
脚本语言=JScript
var g _ bPaused=false//跟踪暂停按钮状态;
//检查脚本语言错误。
onerror=ShowError
//显示脚本语言错误。
函数显示错误(消息,网址,行号)
警报(第行"行号"处的消息);
//初始化的状态。
函数初始化()
Player.uiMode= none
btnPause.disabled=true
btnStop.disabled=true
//请求媒体库访问权限,如果不存在的话。
如果(玩家。设置。mediaaccessrights== none )
//请求访问权限。
玩家。设置。requestmediaaccessrights(“read”);
//播放媒体库中的已知音频文件。
函数播放音频()
//播放媒体库中的已知视频文件。
函数播放视频()
玩家URL= d:\ \ test。MP4’;
//尝试播放一个不存在的文件。
函数MakeError()
阻止我();
玩家URL= d:\ \ test。MP4’;//这是假设您没有这个名称的文件!
//暂停播放器。
函数鲍塞姆
if( g_bPaused==true)
玩家。控制。play();
g _ bPaused=false
btnPause.value= Pause
其他
玩家。控制。pause();
g _ bPaused=true
btnPause.value= Resume
//停止播放器。
函数StopMe()
玩家。控制。stop();
/脚本
=Player EVENT=PlayStateChange(新状态)的脚本语言=JScript
//测试当前状态。
//如果播放,显示当前媒体的名称。
开关(新状态){
案例1:
分区状态。innerhtml= Playstate:Stopped ;
//切换按钮状态。
btnPause.disabled=true
btnPause.value= Pause
btnStop.disabled=true
打破;
案例二:
分区状态。innerhtml= Playstate:Paused ;
打破;
案例三:
分区状态。innerhtml= Playstate:Playing ;
分区名称。innerhtml= Media name: player。当前媒体。姓名;
//切换按钮状态。
btnPause.disabled=false
btnStop.disabled=false
打破;
案例6:
分区状态。innerhtml= Playstate:Buffering ;
打破;
案例7:
分区状态。innerhtml= Playstate:Waiting ;
打破;
案例8:
分区状态。innerhtml= Playstate:媒体已结束;
打破;
案例9:
分区状态。innerhtml= Playstate:Transitioning ;
打破;
案例10:
分区状态。innerhtml= Playstate:Ready ;
打破;
//其他情况到此为止。
默认值:
分区状态。innerhtml= Playstate:Other ;
/脚本
=Player EVENT=StatusChange()的脚本语言=JScript
分区状态。innerhtml= Status: player。地位;
/脚本
=播放器事件=错误()的脚本语言=JScript
var strError=
//存储队列中的错误数。
var max=Player.error.errorCount
//循环错误列表。
for(var I=0;最大工作电流我)
//显示每一项的错误说明。
strError= Error: player。错误。项目(一).错误描述”\ n”;
alert(strError);//显示错误警告。
//清除错误队列,为下一组错误做准备。
玩家。错误。clearerrorqueue();
/脚本
/BODY
/HTML
5、C#测试代码
"工具箱"中单击右键,选择"选择项"菜单,打开"选择工具箱项"窗口,选择"通讯器组件"标签,在列表中找到并勾选" Windows Media Player "组件,单击"确定"按钮。将该组件添加到指定的工具箱选项卡中。
添加理财产品的com控件引用
窗口上添加控件
添加逻辑代码
///摘要
///从库中打开新音频。
////摘要
私有void btnOpen_Click(对象发送方,系统e)
Library libForm=new Library();
libForm .WMPlayer=播放器
libForm .ShowDialog();
if (libForm .DialogResult==DialogResult .好的)
theMedia=libForm .媒体;
如果(theMedia!=null) //测试用户是否选择了媒体项目。
lblSongName .Text=theMedia.name
lblSourceURL .Text=theMedia.sourceURL
//设置当前媒体。它会自动播放。
玩家。当前媒体=媒体;
catch(COMException comExc)
int hr=comExc .错误代码;
字符串消息=字符串。格式(有错误\ nHRESULT={ 1 } \ n { 2 } ,hr.ToString(),comExc .消息);
消息框.显示(消息, COM异常);
///摘要
///播放/暂停传输控制按钮处理程序。
////摘要
私有void btnPlayPause_Click(对象发送方,系统e)
如果(玩家。playstate==wmpplaystate。wmp播放)
玩家CTL控件。pause();
其他
玩家CTL控件。play();
catch(COMException comExc)
int hr=comExc .错误代码;
字符串消息=字符串。格式(有错误\ nHRESULT={ 1 } \ n { 2 } ,hr.ToString(),comExc .消息);
消息框.显示(消息,“通讯器异常");
}
///摘要
///集中用户界面状态控制。
////摘要
///param name=newState 播放机的状态/param
私有void SetUIState(WMPPlayState新状态)
bool canFF,canRew,canPlay,canPause,canSeek,canStop
双重fDuration
canFF=玩家CTL控件。get _可用(快进);
canRew=播放器CTL控件。get _可用(快反);
canPlay=播放器CTL控件。get _可用( Play );
canPause=Player .CTL控件。get _可用(“暂停”);
canSeek=Player .CTL控件。get _可用(“当前位置”);
canStop=Player .CTL控件。get _可用( Stop );
fdration=player。当前媒体。持续时间;
catch(COMException comExc)
int hr=comExc .错误代码;
字符串消息=字符串。格式(有错误\ nHRESULT={ 1 } \ n { 2 } ,hr.ToString(),comExc .消息);
消息框.显示(消息
sage, "COM Exception");
return;
}
// 播放rmvb/rm等非官方格式文件要先双击文件再点播放按钮,而不能直接播放的问题,并弹出警告消息框。
// 方法:先设置属性:wmp.settings.enableErrorDialogs = false;事实上这个属性默认就是false。不用设置。
private void wmp_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
//如果已播放完毕就播放下一个文件
if ((WMPLib.WMPPlayState)e.newState == WMPLib.WMPPlayState.wmppsReady)
Player.Ctlcontrols.play();
}
Player.currentMedia.sourceURL; //获取正在播放的媒体文件的路径
Player.currentMedia.name; //获取正在播放的媒体文件的名称
Player.currentMedia.setItemInfo(string); //通过属性名设置媒体信息
Player.currentMedia.name:string; //同 currentMedia.getItemInfo("Title")
Player.currentMedia.duration:double; 媒体总长度
Player.currentMedia.durationString:string; 媒体总长度,字符串格式。如“03:24”
Player.currentMedia.getItemInfo(const string);
获取当前媒体信息:"Title"=媒体标题,"Author"=艺术家,"Copyright"=版权信息,"Description"=媒体内容描述, "Duration"=持续时间(秒),"FileSize"=文件大小,"FileType"=文件类型,"sourceURL"=原始地址
//在视频播放之后,可以通过如下方式读取源视频的宽度和高度,然后设置其还原为原始的大小
int intWidth = Player.currentMedia.imageSourceWidth;
int intHeight = Player.currentMedia.imageSourceHeight;
Player.Width = intWidth + 2;
Player.Height = intHeight + 2;
//播放器基本设置
Player.settings.volume:integer; 音量,0-100
Player.settings.autoStart:Boolean; 是否自动播放
Player.settings.mute:Boolean; 是否静音
Player.settings.playCount:integer; 播放次数
//顺序播放
Player.settings.setMode("shuffle", False)
//随机播放
Player.settings.setMode("shuffle", True)
//循环播放
Player.settings.setMode("loop", True)
//当前播放列表属性
Player.currentPlaylist.count:integer; 当前播放列表所包含媒体数
Player.currentPlaylist.Item[integer]; 获取或设置指定项目媒体信息,其子属性同wmp.currentMedia
Player.AllowChangeDisplaySize //是否允许自由设置播放图象大小
Player.DisplaySize //设置播放图象大小
1-MpDefaultSize //原始大小
2-MpHalfSize //原始大小的一半
3-MpDoubleSize //原始大小的两倍
4-MpFullScreen //全屏
5-MpOneSixteenthScreen //屏幕大小的1/16
6-MpOneFourthScreen //屏幕大小的1/4
7-MpOneHalfScreen //屏幕大小的1/2
Player.ClickToPlay //是否允许单击播放窗口启动Media Player
//播放器基本控制
Player.Ctlcontrols.Play 播放
Player.Ctlcontrols.Stop 停止
Player.Ctlcontrols.Pause 暂停
Player.Ctlcontrols.PlayCount 文件播放次数
Player.Ctlcontrols.AutoRewind 是否循环播放
Player.Ctlcontrols.Balance 声道
Player.Ctlcontrols.Volume 音量
Player.Ctlcontrols.Mute 静音
Player.Ctlcontrols.EnableContextMenu 是否允许在控件上点击鼠标右键时弹出快捷菜单
Player.Ctlcontrols.AnimationAtStart 是否在播放前先播放动画
Player.Ctlcontrols.ShowControls 是否显示控件工具栏
Player.Ctlcontrols.ShowAudioControls 是否显示声音控制按钮
Player.Ctlcontrols.ShowDisplay 是否显示数据文件的相关信息
Player.Ctlcontrols.ShowGotoBar 是否显示Goto栏
Player.Ctlcontrols.ShowPositionControls 是否显示位置调节按钮
Player.Ctlcontrols.ShowStatusBar 是否显示状态栏
Player.Ctlcontrols.ShowTracker 是否显示进度条
Player.Ctlcontrols.FastForward 快进
Player.Ctlcontrols.FastReverse 快退
Player.Ctlcontrols.Rate 快进/快退速率
Player.Ctlcontrols.currentPosition:double; 当前进度
Player.Ctlcontrols.currentPositionString:string; 当前进度,字符串格式。如“00:23”
Player.Ctlcontrols.next; 下一曲
Player.Ctlcontrols.previous; 上一曲
测试如下: hr/
center font color=purple size=7 face=隶书 最后祝小伙伴们中秋快乐!
br
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。