如何通过C#开发一个媒体播放器(中)
开发应用程序
添加 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#开发一个媒体播放器(中)相关推荐
- 基于React开发一个音乐播放器
同时支持 Mac 与 Windows 系统. 下载地址 掘金链接 项目使用 electron 作为外壳,webpack 作为打包工具,核心技术包括 React + Redux + React-rout ...
- html5开发一个音乐播放器,HTML5开发学习(1):使用aduio标签打造音乐播放器
关于html5的炒作已经有一段时间了,小弟亦是个跟风之人,对该新鲜事物也充满好奇和期待.本文为该系列(html5尝鲜)第一节,先以一个简单的demo开胃,希望能勾起各位同学对html5的兴趣和关注. ...
- C#使用APlayer开发自制媒体播放器
首先简单来了解下什么是APlayer.下面的内容你都可以通过http://aplayer.open.xunlei.com/轻松地进行查看. 引擎介绍 APlayer 媒体播放引擎是迅雷公司从 2009 ...
- 鸿蒙应用开发:实现简单的媒体播放器
距离 Harmony OS 发布已过去了一段时间,为了了解鸿蒙系统的功能与特性,今天我们将准备使用系统 API 实现一个简单的媒体播放器 demo. 大家在阅读本文后会对媒体播放器相关的 API 有一 ...
- VLC 媒体播放器 libmicrodns 库修复 RCE 漏洞
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 思科 Talos 安全研究员警告称,Videolabs 最近修复了 libmicrodns 库中的多个漏洞,它们可导致拒绝服务和任意代 ...
- linux系统媒体播放器(media player)大全
媒体播放器 是一种软件程序,可以使用它来播放多种类型的媒体文件,如音频和视频等. 常见的媒体播放器有 Windows Media Player.QuickTime Player.iTunes.Real ...
- 【翻译】HTML5基于浏览器的媒体播放器:可以离线播放你的mp3文件
原文地址:http://www.omgubuntu.co.uk/2011/03/html5-browser-based-media-player-plays-your-mp3s-works-offli ...
- 听音乐不过瘾?自制一个音乐播放器!| 原力计划
作者 | 灰小猿 责编 | 夕颜 出品 | CSDN博客 最近在学习C#的GUI编程时想着自制一个播放器,说干就干. 其实C#除了在游戏开发上具有显著优势以外,在winform交互页面设计和web网站 ...
- 一个音乐播放器的踩坑实践
前言 这是这个系列的第二篇文章,和第一篇文章相同的是Demo中的资源文件和一些关键代码是搜索和学习得来的.一是因为没有相关的资源文件,譬如音乐文件.歌词文件.歌曲封面等:二是着实有点力有未逮的感觉(p ...
最新文章
- Java 中long类型转换成为int类型时可能会出错的地方
- 角距离恒星_恒星问卷调查的10倍机器学习生产率
- .NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练
- 在iOS平台使用libcurl
- html5人脸登录,基于HTML5 的人脸识别活体认证
- android面试中经典的75道逻辑思维题
- 1.R语言基本绘图分类
- Power BI——数据建模案例分析
- 运放放大倍数计算公式_16个问题讲透了运算放大器基础的知识点
- 2022年京东618店庆活动优惠力度怎么样?
- Hadoop 集群在WebUI界面不能下载文件
- 北美华人第一大折扣信息网站。北美省钱快报是北美最有人气的微博,北美省钱快报是新浪折扣频道独家合作伙伴...
- 曲面积分的投影法_大学数学:第一、二型曲面积分:投影、高斯公式补面挖点怎么用...
- 计算机网络中 数据交换的方式有,计算机网络中的通信数据交换技术探讨
- html5一阶段考试题,千锋HTML5-JS阶段第三周理论考试题目02
- “华夏”二字之由来——我们为何称为“华夏”
- 【转】浅说语音用户界面:VUI+GUI
- LeetCode 558. 四叉树交集
- 阿里云Centos7.x安装中文支持
- 鏖战5小时,44对1,扎克伯格被参议员怒怼,结果他坐着就赚了28亿美元
热门文章
- SOFABoot 扩展点初体验 | SOFALab 实践系列
- K8S使用filebeat统一收集应用日志
- 锋利的JQuery —— 事件和动画
- 大数据系列(hadoop) 集群环境搭建二
- Debug模式启动tomcat超时
- ubuntu中安装sqldeveloper和JDK 1.7
- 【转贴】没有div没有float没有clear没有hack的超强CSS布局
- 【免费毕设】asp.net网上选课系统的设计与实现(源代码+lunwen)
- c语言高级程序设计第五版PDF,C语言高级编程.pdf
- ajax 服务器怎么响应,Ajax 接收服务器返回的json响应方法