摘要:
了解如何在
Microsoft Visual C# .NET
中使用
DirectShow
控件,如何开发一个媒体播放器。按照本文介绍的操作步骤,您可以创建一个简单
Visual C#
应用程序,用来播放数字音频和
视频
。
简介
Microsoft Visual C# 是世界上最流行的 编程 语言,利用 Visual C# 的最新版本 Visual C# .NET ,您能够快速、有效地开发基于 Windows 窗体的应用程序,还可以为嵌入了 Microsoft Windows Media? Player 9 Series ActiveX 控件的应用程序添加新鲜、有趣而又非常实用的功能。
DirectShow 控件是一个标准的 ActiveX 控件,提供了大量的功能。 DirectShow 控件提供的功能包括:
· 数字媒体文件和流媒体的高级播放功能。
· 使用播放列表的功能。
· 播放 DVD 和 CD 的功能。
· 访问 Windows Media Player 中的 Media Library (媒体库)。
· 处理元数据的功能。
· 支持字幕。
· 支持多种语言的音频。
· 控制网络连通性和访问相关统计信息的功能。
下面我们来看看构造这个媒体播放器要达到什么样的目标,确定了目标也就确定了代码量和程序的复杂程度。本文的媒体播放器要达到如下目标:
· 是一个菜单驱动的简单 AWT 应用。
· 包含一个 “ 文件 ” 菜单,文件菜单包含三个菜单项:
· “ 打开 ” ,用来打开媒体文件。
· “ 循环 ” ,是播放一次(默认),还是重复播放。
· “ 退出 ” ,退出程序。
· 可以在多种平台上运行。
· 核心功能通过 JMF ( Java Media Framework ) API 实现。
按照本文介绍的步骤,您将创建一个基于 Windows 窗体的基本应用程序,并在其中嵌入 Player 控件。您创建的示例应用程序具有如下特点:
· 创建 DirectShow 控件的一个实例。
· 利用 Windows Media Player 主互操作程序集提供组件对象模型 (COM) 互操作性。
· 允许用户打开并播放 Windows Media 文件,尤其是文件扩展名为 .wma 或 .wmv 的文件。
· 创建供用户播放、暂停和停止数字媒体内容的传输控制按钮。
· 显示当前数字媒体文件的标题。
· 演示如何使用 Player 对象模型,包括使用属性、方法和事件的示例。
我的这个程序仅仅只是告诉大家如何用 DirectShow 在 C# 中做一个播放机 ,
在这个程序中我们经要解决的一些小问题 :
1. 如何从你的磁盘上打开媒体文件
2. 如何让工具条上的按钮起用和禁用
3. 如何设置状态栏的显示文字
4. 如何控制时间
5. 如何使用时间控件的事件
6. 如何用 DirectShow 来播放媒体文件
7. 如何确定播放状态等等 ...
下图显示了您将要创建的应用程序,其中正在播放名为 “Melow” 的数字音频文件,同时呈现了可视化效果。
Microsoft Visual C# 是世界上最流行的 编程 语言,利用 Visual C# 的最新版本 Visual C# .NET ,您能够快速、有效地开发基于 Windows 窗体的应用程序,还可以为嵌入了 Microsoft Windows Media? Player 9 Series ActiveX 控件的应用程序添加新鲜、有趣而又非常实用的功能。
DirectShow 控件是一个标准的 ActiveX 控件,提供了大量的功能。 DirectShow 控件提供的功能包括:
· 数字媒体文件和流媒体的高级播放功能。
· 使用播放列表的功能。
· 播放 DVD 和 CD 的功能。
· 访问 Windows Media Player 中的 Media Library (媒体库)。
· 处理元数据的功能。
· 支持字幕。
· 支持多种语言的音频。
· 控制网络连通性和访问相关统计信息的功能。
下面我们来看看构造这个媒体播放器要达到什么样的目标,确定了目标也就确定了代码量和程序的复杂程度。本文的媒体播放器要达到如下目标:
· 是一个菜单驱动的简单 AWT 应用。
· 包含一个 “ 文件 ” 菜单,文件菜单包含三个菜单项:
· “ 打开 ” ,用来打开媒体文件。
· “ 循环 ” ,是播放一次(默认),还是重复播放。
· “ 退出 ” ,退出程序。
· 可以在多种平台上运行。
· 核心功能通过 JMF ( Java Media Framework ) API 实现。
按照本文介绍的步骤,您将创建一个基于 Windows 窗体的基本应用程序,并在其中嵌入 Player 控件。您创建的示例应用程序具有如下特点:
· 创建 DirectShow 控件的一个实例。
· 利用 Windows Media Player 主互操作程序集提供组件对象模型 (COM) 互操作性。
· 允许用户打开并播放 Windows Media 文件,尤其是文件扩展名为 .wma 或 .wmv 的文件。
· 创建供用户播放、暂停和停止数字媒体内容的传输控制按钮。
· 显示当前数字媒体文件的标题。
· 演示如何使用 Player 对象模型,包括使用属性、方法和事件的示例。
我的这个程序仅仅只是告诉大家如何用 DirectShow 在 C# 中做一个播放机 ,
在这个程序中我们经要解决的一些小问题 :
1. 如何从你的磁盘上打开媒体文件
2. 如何让工具条上的按钮起用和禁用
3. 如何设置状态栏的显示文字
4. 如何控制时间
5. 如何使用时间控件的事件
6. 如何用 DirectShow 来播放媒体文件
7. 如何确定播放状态等等 ...
下图显示了您将要创建的应用程序,其中正在播放名为 “Melow” 的数字音频文件,同时呈现了可视化效果。
图 1 |
· 本文假设您已经具备一定的 Visual C# 和 Visual Studio.NET 集成开发环境知识。
准备工作
在开始创建应用程序之前,您需要安装必要的 软件 并注册主互操作程序集 (QuartzTypeLib) 。
这里简单介绍 DirectShow 接口:
播放视屏和声音文件我们要用到 DiectX 为我们提供的 DirectShow 组件 . 使用这个接口可以让你方便的播放那些共用的影像和声音文件 . 你要做的仅仅只是安装 DirectShow 接口和使用它的功能函数和配置正确的接口参数而已 .
不幸的是 .NET 并不正式支持 DirectX. 是的也许你听说 DirectX9 支持是吗 ? 是的 , 不过在最终版敲定的那一天还没来 , 我们都得不到最好的效果 . 但无论如何我们还是要用的不是吗 ? 要不这篇文章得作废了 . 是的 , 也许你用过 VB, 对了 , 就是它 , 我们正是要用到那个 .
开始项目
在安装必要软件并注册 QuartzTypeLib 之后,您就可以启动 Visual C# ,开始为示例应用程序创建项目。下面我将给大家介绍这一过程的操作步骤。
创建项目
按以下步骤创建一个空的项目:
1.
启动
Visual Studio .NET
,然后单击
New Project
(新建项目)。
2. 在 Visual C# Projects ( Visual C# 项目)文件夹中单击 Windows Application ( Windows 应用程序),键入新项目的名称(最好为 DirectShow ),然后单击 OK (确定)。
Visual C# 使用默认的 Windows 窗体 “Form1” 创建一个新的项目。
3. 这个名称并没有特别的意义或用处,所以请在 Properties (属性)窗口中将窗体名称更改为 frmPlayMedia ,将窗体文本更改为 “ 媒体播放器 ” 。
在项目中添加对 DirectShow 的引用
按照以下步骤在项目中添加一个对 DirectShow 的引用:
1. 打开 Visual Studio 工具箱,然后单击 Components (组件)显示该面板。
2. 右击面板,然后单击 Customize Toolbox (自定义工具箱),显示 对话框 。
3. 在 COM Components ( COM 组件)选项卡上,选中 Interop.QuartzTypeLib.dll 。(如果 Interop.QuartzTypeLib.dll 由于某种原因未列出,则单击 Browse [ 浏览 ] 并查找名为 QuartzTypeLib.dll 的文件。)
4. 单击 OK (确定)关闭对话框。
2. 在 Visual C# Projects ( Visual C# 项目)文件夹中单击 Windows Application ( Windows 应用程序),键入新项目的名称(最好为 DirectShow ),然后单击 OK (确定)。
Visual C# 使用默认的 Windows 窗体 “Form1” 创建一个新的项目。
3. 这个名称并没有特别的意义或用处,所以请在 Properties (属性)窗口中将窗体名称更改为 frmPlayMedia ,将窗体文本更改为 “ 媒体播放器 ” 。
在项目中添加对 DirectShow 的引用
按照以下步骤在项目中添加一个对 DirectShow 的引用:
1. 打开 Visual Studio 工具箱,然后单击 Components (组件)显示该面板。
2. 右击面板,然后单击 Customize Toolbox (自定义工具箱),显示 对话框 。
3. 在 COM Components ( COM 组件)选项卡上,选中 Interop.QuartzTypeLib.dll 。(如果 Interop.QuartzTypeLib.dll 由于某种原因未列出,则单击 Browse [ 浏览 ] 并查找名为 QuartzTypeLib.dll 的文件。)
4. 单击 OK (确定)关闭对话框。
图 2 |
要在代码中使用 DirectShow ,您需要添加一行代码,以引用 DirectShow 命名空间。在窗体代码窗口的顶部,将以下代码添加到所有声明语句之前:
using QuartzTypeLib;
|
using语句必须在所有 Options 语句(本项目中并未使用)之后,并且在所有其他代码之前。添加该语句后。
本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/202827,如需转载请自行联系原作者