开发应用程序
创建通过 PIA 与 Framework 连接的 Player 控件实例之后,您可以向窗体中添加所需的其他元素,并编写完成实际操作的代码。
添加 Windows 窗体控件
1. 在 View(视图)菜单中,单击 Designer(设计器),或者单击 Solution Explorer(解决方案资源管理器)中的View Designer(视图设计器)按钮,切换到窗体设计器。
2. 在窗体上增加文件、播放、信息等菜单。
3. 在工具箱的 Windows Forms(Windows 窗体)面板中,为您的窗体添加一个工具栏、一个状态栏和图片imageList。
4. 在 Properties(属性)窗口中,将工具栏的名称更改为 toolBar1,将在Buttons上增加4个按钮。状态栏的名称更改为 statusBar1,并分别增加三个Panel。
5. 在工具箱的面板中,为您的窗体添加一个面版panel1。
6. 增加一个定时器timer1。
7. 调整控件在窗体中的排列方式,使之符合您的需要而且方便用户使用。下图为 Visual Studio Designer(设计器)中完成后的窗体布局。
创建通过 PIA 与 Framework 连接的 Player 控件实例之后,您可以向窗体中添加所需的其他元素,并编写完成实际操作的代码。
添加 Windows 窗体控件
1. 在 View(视图)菜单中,单击 Designer(设计器),或者单击 Solution Explorer(解决方案资源管理器)中的View Designer(视图设计器)按钮,切换到窗体设计器。
2. 在窗体上增加文件、播放、信息等菜单。
3. 在工具箱的 Windows Forms(Windows 窗体)面板中,为您的窗体添加一个工具栏、一个状态栏和图片imageList。
4. 在 Properties(属性)窗口中,将工具栏的名称更改为 toolBar1,将在Buttons上增加4个按钮。状态栏的名称更改为 statusBar1,并分别增加三个Panel。
5. 在工具箱的面板中,为您的窗体添加一个面版panel1。
6. 增加一个定时器timer1。
7. 调整控件在窗体中的排列方式,使之符合您的需要而且方便用户使用。下图为 Visual Studio Designer(设计器)中完成后的窗体布局。
图 3 |
编写代码
如何打开你想要媒体文件?
第一步是编写在 frmPlayMedia中打开 Windows Media 文件的代码。要自动切换到 Code(代码)视图并编辑打开菜单的 Click 事件处理程序 (menuItem2_Click) 的代码,请双击窗体上的“工具栏”按钮。将以下代码添加到事件处理程序中:
还记得吗"文件 -> 打开..." 是的几乎每个使用windows的人都会这样操作.如何实现?
很简单看看下面的代码:
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Media Files|*.mpg;*.avi;*.wma;*.mov;*.wav;*.mp2;*.mp3|All Files|*.*"; if (DialogResult.OK == openFileDialog.ShowDialog()) { …. } |
看吧很简单是吗?记得写一个函数把它放进去。当你点击OK按钮的时候,DirectShow接口就会得到你想要播放的文件。下图解释了它是如何工作的。
DirectShow为多媒体流回放提供最基本的服务,这些多媒体流可以是本地文件,还可以是服务器传输过来的。特别的,DirectShow可以支持视频回放,支持以不同的文件和流格式压缩视频内容,包括Windows Media、MPEG、AVI和WAV。
在DirectShow的核心处,服务是组件的模块化集合,称为过滤器,可以根据媒体类型排列成过滤器图。过滤器可以操作数据流,如读入、分析、解码、格式化或渲染。
-
过滤器以树型进行排列,这棵树称为过滤器树,通过过滤器树管理器(Filter Graph Manager,简称FGM)进行管理。使用FGM应用程序可以通过使用Microsoft Windows Media Player控件间接控制过滤器树,还可以通过调用COM接口方法直接控制。DirectShow过滤器树(参阅图1)由从源到目标渲染器的有向过滤器序列组成,所有这些通过输入和输出过滤器引脚连接。过滤器引脚协商它们将支持哪些媒体类型。FGM控制树过滤器之间的多媒体数据流。因为DirectShow有一个灵活的、可重配置的过滤器树体系结构,因此DirectShow可以使用同样的软件成分支持多种媒体类型的回放和分流。开发人员还可以通过编写自己的过滤器扩展DirectShow多媒体支持。
过滤器
过滤器是注册的DirectShow类,它执行许多媒体信息处理任务。这些任务包括:
获得源信息(例如,获得媒体流)
分析(例如,在流上执行包读入、分离和格式化)
转换(例如,解码WMA和MPEG-4音频和视频流)
渲染(例如,在适当的时候产生音频PCM或者视频RGB/YUV输出,将数据传给DirectSound和DirectDraw)
过滤器使用几种类型的接口,例如引脚、计数器、传送器和时钟接口,来执行它们的任务。过滤器实现和开放了许多接口。FGM可以使用这些接口创建、连接和控制树。过滤器经常实现包含下列方法的IBaseFilter接口:
运行、停止和暂停过滤器状态。
恢复过滤器和厂商信息。
得到和设置参考时钟。
恢复过滤器状态信息。
枚举过滤器引线。
重建过滤器树时定位引脚
用户单击“打开”时,这段代码将显示一个对话框,供用户在计算机上浏览并选择要播放的 .wma 或 .wmv 文件。用户选择文件(并单击“确定”)时,代码将 Player 的 URL 属性设置为用户选择的文件。由于 Player 的 autoStart 属性在默认情况下设置为 True,所以 Player 立即打开并播放用户选择的数字媒体文件。
本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/202828,如需转载请自行联系原作者