如何通过C#开发一个媒体播放器(中)

简介:
开发应用程序
  创建通过  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类,它执行许多媒体信息处理任务。这些任务包括:
     

       获得源信息(例如,获得媒体流

       分析(例如,在流上执行包读入、分离和格式化

       转换(例如,解码WMAMPEG-4音频和视频

       渲染(例如,在适当的时候产生音频PCM或者视频RGB/YUV输出,将数据传给DirectSound
    DirectDraw) 

      过滤器使用几种类型的接口,例如引脚、计数器、传送器和时钟接口,来执行它们的任务。过滤器实现和开放了许多接口。FGM可以使用这些接口创建、连接和控制树。过滤器经常实现包含下列方法的IBaseFilter接口:
     

       运行、停止和暂停过滤器状态。
     
       恢复过滤器和厂商信息。
     
       得到和设置参考时钟。
     
       恢复过滤器状态信息。
     
       枚举过滤器引线。
     
       重建过滤器树时定位引脚


      用户单击打开时,这段代码将显示一个对话框,供用户在计算机上浏览并选择要播放的 .wma  .wmv 文件。用户选择文件(并单击确定)时,代码将 Player  URL 属性设置为用户选择的文件。由于 Player  autoStart 属性在默认情况下设置为 True,所以 Player 立即打开并播放用户选择的数字媒体文件。



本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/202828,如需转载请自行联系原作者

目录
相关文章
|
1月前
|
物联网 数据处理 C#
C#实现上位机开发,串口通信,读写串口数据并处理16进制数据
C#实现上位机开发,串口通信,读写串口数据并处理16进制数据。在自动化、物联网以及工业控制行业中,上位机开发是一项重要的技能。本教程主要介绍使用C#进行上位机开发,重点在于串口通信和数据处理。
328 82
|
3月前
|
缓存 算法 安全
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
118 12
|
4月前
|
前端开发 JavaScript 安全
C#一分钟浅谈:Blazor WebAssembly 开发
Blazor WebAssembly 是一个客户端框架,允许开发者使用C#和Razor语法构建Web应用。本文介绍了Blazor WebAssembly的基本概念、常见问题及解决方案,包括路由配置、数据绑定、异步操作、状态管理和性能优化等方面的内容,并分享了一些易错点及如何避免的方法。希望这些内容能帮助你在Blazor WebAssembly开发中少走弯路,提高开发效率。
173 51
|
4月前
|
缓存 C# 开发者
C# 一分钟浅谈:Blazor Server 端开发
本文介绍了 Blazor Server,一种基于 .NET 的 Web 开发模型,允许使用 C# 和 Razor 语法构建交互式 Web 应用。文章从基础概念、创建应用、常见问题及解决方案、易错点及避免方法等方面详细讲解,帮助开发者快速上手并提高开发效率。
118 2
|
4月前
|
开发框架 缓存 .NET
C# 一分钟浅谈:Blazor Server 端开发
Blazor Server 是基于 ASP.NET Core 的框架,允许使用 C# 和 Razor 语法构建交互式 Web 应用。本文介绍 Blazor Server 的基本概念、快速入门、常见问题及解决方案,帮助开发者快速上手。涵盖创建应用、基本组件、数据绑定、状态管理、跨组件通信、错误处理和性能优化等内容。
239 1
|
4月前
|
测试技术 Go C#
C#一分钟浅谈:ReSharper 插件增强开发效率
【10月更文挑战第25天】ReSharper 是 JetBrains 开发的一款 Visual Studio 插件,旨在提高 .NET 开发者的生产力。它通过代码分析、重构、导航等功能,帮助开发者避免常见错误,提升代码质量和开发效率。本文将通过具体代码案例,详细介绍 ReSharper 的常见功能及其应用。
123 1
|
4月前
|
C# Python
使用wxpython开发跨平台桌面应用,对wxpython控件实现类似C#扩展函数处理的探究
【10月更文挑战第30天】使用 `wxPython` 开发跨平台桌面应用时,可以通过创建辅助类来模拟 C# 扩展函数的功能。具体步骤包括:1. 创建辅助类 `WxWidgetHelpers`;2. 在该类中定义静态方法,如 `set_button_color`;3. 在应用中调用这些方法。这种方法提高了代码的可读性和可维护性,无需修改 `wxPython` 库即可为控件添加自定义功能。但需要注意显式调用方法和避免命名冲突。
|
5月前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
70 1
|
5月前
|
开发框架 NoSQL MongoDB
C#/.NET/.NET Core开发实战教程集合
C#/.NET/.NET Core开发实战教程集合
110 1
|
5月前
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
289 0