开发应用程序

  创建通过 PIA 与 Framework 连接的 Player 控件实例之后,您可以向窗体中添加所需的其他元素,并编写完成实际操作的代码。
添加 Windows 窗体控件

  1. 在 View(视图)菜单中,单击 Designer(设计器),或者单击 Solution Explorer(解决方案资源管理器)中的 View Designer(视图设计器)按钮,切换到窗体设计器。

  2. 在窗体上增加文件、播放、信息等菜单。

  3. 在工具箱的 Windows Forms(Windows 窗体)面板中,为您的窗体添加一个工具栏、一个状态栏和图片p_w_picpathList。

  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 立即打开并播放用户选择的数字媒体文件。

转载于:https://blog.51cto.com/zhangleiy/388635

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

  1. 基于React开发一个音乐播放器

    同时支持 Mac 与 Windows 系统. 下载地址 掘金链接 项目使用 electron 作为外壳,webpack 作为打包工具,核心技术包括 React + Redux + React-rout ...

  2. html5开发一个音乐播放器,HTML5开发学习(1):使用aduio标签打造音乐播放器

    关于html5的炒作已经有一段时间了,小弟亦是个跟风之人,对该新鲜事物也充满好奇和期待.本文为该系列(html5尝鲜)第一节,先以一个简单的demo开胃,希望能勾起各位同学对html5的兴趣和关注. ...

  3. C#使用APlayer开发自制媒体播放器

    首先简单来了解下什么是APlayer.下面的内容你都可以通过http://aplayer.open.xunlei.com/轻松地进行查看. 引擎介绍 APlayer 媒体播放引擎是迅雷公司从 2009 ...

  4. 鸿蒙应用开发:实现简单的媒体播放器

    距离 Harmony OS 发布已过去了一段时间,为了了解鸿蒙系统的功能与特性,今天我们将准备使用系统 API 实现一个简单的媒体播放器 demo. 大家在阅读本文后会对媒体播放器相关的 API 有一 ...

  5. VLC 媒体播放器 libmicrodns 库修复 RCE 漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 思科 Talos 安全研究员警告称,Videolabs 最近修复了 libmicrodns 库中的多个漏洞,它们可导致拒绝服务和任意代 ...

  6. linux系统媒体播放器(media player)大全

    媒体播放器 是一种软件程序,可以使用它来播放多种类型的媒体文件,如音频和视频等. 常见的媒体播放器有 Windows Media Player.QuickTime Player.iTunes.Real ...

  7. 【翻译】HTML5基于浏览器的媒体播放器:可以离线播放你的mp3文件

    原文地址:http://www.omgubuntu.co.uk/2011/03/html5-browser-based-media-player-plays-your-mp3s-works-offli ...

  8. 听音乐不过瘾?自制一个音乐播放器!| 原力计划

    作者 | 灰小猿 责编 | 夕颜 出品 | CSDN博客 最近在学习C#的GUI编程时想着自制一个播放器,说干就干. 其实C#除了在游戏开发上具有显著优势以外,在winform交互页面设计和web网站 ...

  9. 一个音乐播放器的踩坑实践

    前言 这是这个系列的第二篇文章,和第一篇文章相同的是Demo中的资源文件和一些关键代码是搜索和学习得来的.一是因为没有相关的资源文件,譬如音乐文件.歌词文件.歌曲封面等:二是着实有点力有未逮的感觉(p ...

最新文章

  1. Java 中long类型转换成为int类型时可能会出错的地方
  2. 角距离恒星_恒星问卷调查的10倍机器学习生产率
  3. .NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练
  4. 在iOS平台使用libcurl
  5. html5人脸登录,基于HTML5 的人脸识别活体认证
  6. android面试中经典的75道逻辑思维题
  7. 1.R语言基本绘图分类
  8. Power BI——数据建模案例分析
  9. 运放放大倍数计算公式_16个问题讲透了运算放大器基础的知识点
  10. 2022年京东618店庆活动优惠力度怎么样?
  11. Hadoop 集群在WebUI界面不能下载文件
  12. 北美华人第一大折扣信息网站。北美省钱快报是北美最有人气的微博,北美省钱快报是新浪折扣频道独家合作伙伴...
  13. 曲面积分的投影法_大学数学:第一、二型曲面积分:投影、高斯公式补面挖点怎么用...
  14. 计算机网络中 数据交换的方式有,计算机网络中的通信数据交换技术探讨
  15. html5一阶段考试题,千锋HTML5-JS阶段第三周理论考试题目02
  16. “华夏”二字之由来——我们为何称为“华夏”
  17. 【转】浅说语音用户界面:VUI+GUI
  18. LeetCode 558. 四叉树交集
  19. 阿里云Centos7.x安装中文支持
  20. 鏖战5小时,44对1,扎克伯格被参议员怒怼,结果他坐着就赚了28亿美元

热门文章

  1. SOFABoot 扩展点初体验 | SOFALab 实践系列
  2. K8S使用filebeat统一收集应用日志
  3. 锋利的JQuery —— 事件和动画
  4. 大数据系列(hadoop) 集群环境搭建二
  5. Debug模式启动tomcat超时
  6. ubuntu中安装sqldeveloper和JDK 1.7
  7. 【转贴】没有div没有float没有clear没有hack的超强CSS布局
  8. 【免费毕设】asp.net网上选课系统的设计与实现(源代码+lunwen)
  9. c语言高级程序设计第五版PDF,C语言高级编程.pdf
  10. ajax 服务器怎么响应,Ajax 接收服务器返回的json响应方法