欢迎来到天天文库
浏览记录
ID:33021416
大小:68.31 KB
页数:17页
时间:2019-02-19
《如何使用c制作播放器技术方法及代码》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、如何使用C#制作播放器技术方法及代码要使C#代码引用COM对象和接口,需要在C#内部版本屮包含COM接口的.NET框架定义。完成此操作的最简单方法是使用Tlblmp.exe(类型库导入程序),它是一个包括在.NET框架SDK中的命令行工具。Tlblmp将COM类型库转换为.NET框架元数据,从而有效地创建一个可以从任何托管语言调用的托管包装。用Tlblmp创建的.NET框架元数据可以通过/R编译器选项包括在C#内部版本中。如果使用VisualStudio开发环境,则只需添加对COM类型库的引用,将为您自动完成此转换
2、。例如,我们要播放当前冃录下的demo.avi文件,需要用到包含在位于Windows系统目录中的Quart乙dll中的媒体播放机。(c:winntsystem32quartz.dll)<>可在命令行中运行Tlblmp文件(C:P「og「amFilesMicrosoftVisualStudio8SDKv2.0BinTlbimp.exe)tlbimpc:windowssystem32quart乙dll/out:QuartzTypeLib.dll得到的新程序集放到目录C:ProgramFiles
3、MicrosoftVisualStudio8SDKv2.0Bin下面请注意,得到的DLL需要命名为QuartzTypeLib,以便.NET框架对以在运行时正确加载包含类型。生成程序吋使用C#编译器选项/R以包含QuartzTypeLib.dll文件;如果使用VisualStudio开发环境,直接添加引用即可(usingQuartzTypeLib)。然后就可以使用此程序显示影片了。具体编写代码时,用到了RenderFile和Run方法。例:privatevoidmenultemOpen_Click(objec
4、tsender,System.EventArgse){FilgraphManagerm_FilGraphManager=null;IBasicAudiom_BasicAudio=null;IVideoWindowm_VideoWindow=null;IMediaEventm_MediaEvent=null;IMediaEventExm_MediaEventEx=null;IMediaPositionm_MediaPosition=null;IMediaControlm_MediaControl=null;OpenF
5、ileDialogOpenDialog=newOpenFileDialogO;OpenDialog.Filter="MediaFiles
6、*.mpg;*.avi;*.wma;*.mov;*.wav;*.mp2;*.mp3
7、AllFiles
8、*.*H;〃本例用对话框读入要显示的影片文件名if(DialogResultOK==OpenDialog.ShowDialogO){m_FilGraphManager=newFilgraphManager();m_FilGraphManager.RenderFile(OpenDi
9、alog.FileName);m_BasicAudio=m_FilGraphManagerasIBasicAudio;try{m_VideoWindow=m_FilGraphManagerasIVideoWindow;m_VideoWindow.Owner=(int)panel1.Handle;m_VideoWindow.WindowStyle=WS.CHILD
10、WS.CLIPCHILDREN;//此设置可以不显示播放器的title,使播放器像嵌在窗体中。//可设置privateconstintWS.CHILD=0
11、x40000000;//privateconstintWS_CLIPCHILDREN=0x2000000;m_VideoWindow.SetWindowPosition(panel1.ClientRectangle.Left,panel1・ClientRectangle.Top,panel1.ClientRectangle.Width,panel1・ClientRectangle.Height);//在panel1屮显示,要求影片可随panel1大小而变化。}catch(Exception){m_VideoWind
12、ow=null;}m_MediaEvent=m_FilGraphManagerasIMediaEvent;m_MediaEventEx=m_FilGraphManagerasIMediaEventEx;m_MediaEventEx.SetNotifyWindow((int)this.Handle,WM_GRAPHNOTIFY,0);m_MediaPositi
此文档下载收益归作者所有