c语言播放视频文件,c++怎么播放视频

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: