C#实现制作视频播放器教程

取决于您在打开 ” 对话框中选择的文件类型)选择某个文件并单击 “ 确定 ” 之后,您可以单击 “ 打开 ” 查找 .wma 或 .wmv 文件(究竟选择何种文件。打开 ” 对话框关闭,开始播放数字媒体文件,传输控制按钮的状态也随之改变。这时您就可以利用传输控制按钮来暂停、重新开始或完全停止播放。如何开发一个媒体播放器。依照本文介绍的操作方法,摘要:解如何在 Microsoft Visual C# .NET 中使用 DirectShow 控件。您可以创建一个简单 Visual C# 应用顺序,用来播放数字音频和视频。 简介利用 Visual C# 最新版本 Visual C# .NET 您能够快速、有效地开发基于 Window 窗体的应用顺序, Microsoft Visual C# 世界上最流行的编程语言。还可以为嵌入了 Microsoft Window Media? Player 9 Seri ActiveX 控件的应用顺序添加新鲜、有趣而又非常实用的功能。提供了大量的功能。 DirectShow 控件提供的功能包括: DirectShow 控件是一个标准的 ActiveX 控件。数字媒体文件和流媒体的高级播放功能。使用播放列表的功能。播放 DVD 和 CD 功能。访问 Window Media Player 中的 Media Librari 媒体库)处置元数据的功能。支持字幕。支持多种语言的音频。控制网络连通性和访问相关统计信息的功能。确定了目标也就确定了代码量和程序的复杂水平。本文的媒体播放器要达到如下目标: 下面我来看看构造这个媒体播放器要达到什么样的目标。一个菜单驱动的简单 AWT 应用。文件菜单包括三个菜单项: 包括一个 “ 文件 ” 菜单。打开 ” 用来打开媒体文件。循环 ” 播放一次(默认)还是重复播放。退出 ” 退出顺序。可以在多种平台上运行。您将创建一个基于 Window 窗体的基本应用顺序,核心功能通过 JMF Java Media Framework API 实现。依照本文介绍的方法。并在其中嵌入 Player 控件。您创建的示例应用程序具有如下特点:创立 DirectShow 控件的一个实例。利用 Window Media Player 主互操作顺序集提供组件对象模型 COM 互操作性。尤其是文件扩展名为 .wma 或 .wmv 文件。 允许用户打开并播放 Window Media 文件。创建供用户播放、暂停和停止数字媒体内容的传输控制按钮。显示当前数字媒体文件的标题。包括使用属性、方法和事件的示例。 演示如何使用 Player 对象模型。这个顺序仅仅只是告诉大家如何用 DirectShow C# 中做一个播放机 .这个顺序中我经要解决的一些小问题 :1. 如何从你磁盘上打开媒体文件2. 如何让工具条上的按钮起用和禁用3. 如何设置状态栏的显示文字4. 如何控制时间 5. 如何使用时间控件的事件 6. 如何用 DirectShow 来播放媒体文件7. 如何确定播放状态等等 ...其中正在播放名为 “ Melow 数字音频文件,下图显示了您将要创建的应用顺序。同时出现了可视化效果。本文假设您已经具备一定的 Visual C# 和 Visual Studio.NET 集成开发环境知识。准备工作您需要安装必要的软件并注册主互操作程序集 QuartzTypeLib 开始创建应用顺序之前。这里简单介绍 DirectShow 接口:播放视屏和声音文件我要用到 DiectX 为我提供的 DirectShow 组件 . 使用这个接口可以让你方便的播放那些共用的影像和声音文件 . 要做的仅仅只是装置 DirectShow 接口和使用它功能函数和配置正确的接口参数而已 .不过在最终版敲定的那一天还没来 , 倒霉的 .NET 并不正式支持 DirectX. 也许你听说 DirectX9 支持是吗 ? . 都得不到最好的效果 . 但无论如何我还是要用的不是吗 ? 要不这篇文章得作废了 . , 也许你用过 VB, 对了 , 就是 , 正是要用到那个 .开始项目您就可以启动 Visual C# 开始为示例应用程序创建项目。下面我将给大家介绍这一过程的操作方法。 装置必要软件并注册 QuartzTypeLib 之后。创建项目按以下步骤创建一个空的项目:1. 启动 Visual Studio .NET 然后单击 New Project 新建项目)2. Visual C# Project Visual C# 项目)文件夹中单击 Window Applicat Window 应用顺序)键入新项目的名称(最好为 DirectShow 然后单击 OK 确定)所以请在 Properti 属性)窗口中将窗体名称更改为 frmPlayMedia 将窗体文本更改为 “ 媒体播放器 ” Visual C# 使用默认的 Window 窗体 “ Form1 创建一个新的项目。 3. 这个名称并没有特别的意义或用处。项目中添加对 DirectShow 引用依照以下方法在项目中添加一个对 DirectShow 引用:然后单击 Compon 组件)显示该面板。 1. 打开 Visual Studio 工具箱。然后单击 Custom Toolbox 自定义工具箱)显示对话框。 2. 右击面板。选中 Interop.QuartzTypeLib.dl 如果 Interop.QuartzTypeLib.dl 由于某种原因未列出, 3. COM Compon COM 组件)选项卡上。则单击 Brows [ 浏览 ] 并查找名为 QuartzTypeLib.dl 文件。4. 单击 OK 确定)关闭对话框。图 2以引用 DirectShow 命名空间。窗体代码窗口的顶部,要在代码中使用 DirectShow 您需要添加一行代码。将以下代码添加到所有声明语句之前:use QuartzTypeLib;并且在所有其他代码之前。添加该语句后。 us 语句必需在所有 Option 语句(本项目中并未使用)之后。开发应用顺序您可以向窗体中添加所需的其他元素,创建通过 PIA 与 Framework 连接的 Player 控件实例之后。并编写完成实际操作的代码。添加 Window 窗体控件单击 Design 设计器)或者单击 Solut Explorer 解决方案资源管理器)中的 View Design 视图设计器)按钮, 1. View 视图)菜单中。切换到窗体设计器。2. 窗体上增加文件、播放、信息等菜单。为您的窗体添加一个工具栏、一个状态栏和图片 imageList 3. 工具箱的 Window Form Window 窗体)面板中。将工具栏的名称更改为 toolBar1 将在 Button 上增加 4 个按钮。状态栏的名称更改为 statusBar1, 4. Properti 属性)窗口中。并分别增加三个 Panel为您的窗体添加一个面版 panel1 5. 工具箱的面板中。6. 增加一个定时器 timer1使之符合您的需要而且方便用户使用。下图为 Visual Studio Design 设计器)中完成后的窗体布局。编写代码 7. 调整控件在窗体中的排列方式。如何打开你想要媒体文件 ?请双击窗体上的工具栏 ” 按钮。将以下代码添加到事件处置顺序中: 第一步是编写在 frmPlayMedia 中打开 Window Media 文件的代码。要自动切换到 Code 代码)视图并编辑打开菜单的 Click 事件处置顺序 menuItem2_Click 代码。还记得吗 " 文件 -> 打开 ..." 几乎每个使用 window 人都会这样操作 . 如何实现 ?很简单看看下面的代码 :OpenFileDialog openFileDialog = new OpenFileDialog ;openFileDialog.Filt = "Media Files|*.mpg;*.avi;*.wma;*.mov;*.wav;*.mp2;*.mp3|A l Files|*.*";if DialogResult.OK == openFileDialog.ShowDialog{.}DirectShow 接口就会得到想要播放的文件。下图解释了如何工作的 看吧很简单是吗?记得写一个函数把它放进去。当你点击 OK 按钮的时候。这些多媒体流可以是外地文件, DirectShow 为多媒体流回放提供最基本的服务。还可以是服务器传输过来的特别的 DirectShow 可以支持视频回放,支持以不同的文件和流格式压缩视频内容,包括 Window Media MPEG AVI 和 WA V服务是组件的模块化集合, DirectShow 核心处。称为过滤器,可以根据媒体类型排列成过滤器图。过滤器可以操作数据流,如读入、分析、解码、格式化或渲染。这棵树称为过滤器树,过滤器以树型进行排列。通过过滤器树管理器( Filter Graph Manag 简称 FGM 进行管理。使用 FGM 应用顺序可以通过使用 Microsoft Window Media Player 控件间接控制过滤器树,还可以通过调用 COM 接口方法直接控制。 DirectShow 过滤器树(参阅图 1 由从源到目标渲染器的有向过滤器序列组成,所有这些通过输入和输出过滤器引脚连接。过滤器引脚协商它将支持哪些媒体类型。 FGM 控制树过滤器之间的多媒体数据流。因为 DirectShow 有一个灵活的可重配置的过滤器树体系结构,因此 DirectShow 可以使用同样的软件成分支持多种媒体类型的回放和分流。开发人员还可以通过编写自己的过滤器扩展 DirectShow 多媒体支持。过滤器执行许多媒体信息处理任务。这些任务包括: 过滤器是注册的 DirectShow 类。获得媒体流 ) 获得源信息 ( 例如。流上执行包读入、分离和格式化 ) 分析 ( 例如。解码 WMA 和 MPEG-4 音频和视频流 ) 转换 ( 例如。适当的时候发生音频 PCM 或者视频 RGB/YUV 输出,渲染 ( 例如。将数据传给 DirectSound 和 DirectDraw例如引脚、计数器、传送器和时钟接口,过滤器使用几种类型的接口。来执行它任务。过滤器实现和开放了许多接口。 FGM 可以使用这些接口创立、连接和控制树。过滤器经常实现包括下列方法的 IBaseFilt 接口:运行、停止和暂停过滤器状态。恢复过滤器和厂商信息。得到和设置参考时钟。恢复过滤器状态信息。枚举过滤器引线。重建过滤器树时定位引脚这段代码将显示一个对话框,用户单击 “ 打开 ” 时。供用户在计算机上浏览并选择要播放的 .wma 或 .wmv 文件。用户选择文件(并单击 “ 确定 ” 时,代码将 Player URL 属性设置为用户选择的文件。由于 Player autoStart 属性在默认情况下设置为 True 所以 Player 立即打开并播放用户选择的数字媒体文件。添加播放 / 暂停按钮的代码。代码窗口中,接下来。停止、暂停菜单中单击,然后,方法名称列表中单击 Click 将以下代码添加到 Visual C# 为您创建的 Click 事件处置顺序中:看看下面的代码是如何实现的CleanUp ;m_objFilterGraph = new FilgraphManag ;m_objFilterGraph.RenderFil openFileDialog.FileNam ;m_objBasicA udio = m_objFilterGraph as IBasicA udio;try{m_objVideoWindow = m_objFilterGraph as IVideoWindow;m_objVideoWindow.Own = int panel1.Handle;m_objVideoWindow.WindowStyl = WS_CHILD | WS_CLIPCHILDREN;m_objVideoWindow.SetWindowPosit panel1.ClientRectangle.Left.panel1.ClientRectangle.Top.panel1.ClientRectangle.Width.panel1.ClientRectangle.Height ;}catch Exception ex{m_objVideoWindow = null;}m_objMediaEv = m_objFilterGraph as IMediaEvent;m_objMediaEventEx = m_objFilterGraph as IMediaEventEx;WM_GRA PHNOTIFY,m_objMediaEventEx.SetNotifyWindow int this.Handle. 0 ;m_objMediaPosit = m_objFilterGraph as IMediaPosition;m_objMediaControl = m_objFilterGraph as IMediaControl;// 还有一个问题程序怎么能够知道它播放完了 ?这次我必需要改写它来捕获 EC_COMPLETE 消息。这个消息是 DirectShow 通知父窗体,这会有点麻烦了想想看有什么办法呢?对了 window 消息驱动的那找找看有什么消息。有的就 EC_COMPLETE 还记得 "WndProc" 吗?老朋友。播放结束了protect overrid void WndProc ref Messag m{if m.Msg == WM_GRA PHNOTIFY{int lEventCode;lParam2; int lParam1.while true{try{out lParam1, m_objMediaEventEx.GetEv out lEventCode.out lParam2,0 ;lParam1, m_objMediaEventEx.FreeEventParam lEventCode. lParam2 ;if lEventCod == EC_COMPLETE{m_objMediaControl.Stop ;m_objMediaPosition.CurrentPosit = 0;m_CurrentStatu = MediaStatus.Stopped;UpdateStatusBar ;UpdateToolBar ;}}catch Exception{break;}}}base.WndProc ref m ;上述代码就会运行。如果 Player 正在播放(用户打开文件时就处于播放状态,} 只要播放状态改变。因为 autoStart 设置为 True 代码将启用播放 / 暂停按钮和停止按钮,以便用户执行操作。之后,代码将播放 / 暂停按钮的文字更改为 “ 暂停 ” 这样用户就可以使用该按钮暂停播放过程。最后,代码检索当前数字媒体文件的标题,并更新标题标签的文字以显示标题。如果 Player 被暂停(用户单击了播放 / 暂停按钮)代码会将播放 / 暂停按钮的文字更改为 “ 播放 ” 以提示用户使用该按钮可以恢复播放。如果 Player 被停止(用户单击了停止按钮)代码将禁用停止按钮(因 Player 已经停止工作)并将播放 / 暂停按钮的文字恢复为默认值 “ 播放 ”现在要做的事就是做些来找一部影片来享受一下自己的效果了 . 一切都结束了 .您可以生成并运行解决方案。 编写完示例项目的代码之后。生成解决方案生成过程将顺利完成, Build 生成)菜单中单击 Build Solut 生成解决方案) Visual Studio 开始编译并生成项目。如果键入内容全部正确。不会出现任何错误。如果生成演讲错误,则请检查您的代码并纠正错误。使用示例应用程序请按键盘上的 F5 键。如果呈现 “ 检查生成的代码 ” 主题中介绍的未处理的异常,要在调试器中运行项目。则应该停止调试会话,删除或注释掉生成代码中的相应行,然后再按 F5 键。

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《C#实现制作视频播放器教程》
文章链接:https://www.skykkk.com/archives1952.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

相关推荐

  • 暂无文章