本文介绍一个最简单的基于 DirectShow 的视频播放器。该播放器对于初学者来说是十分有用的,它包含了使用DirectShow 播放视频所有必备的函数。
直接贴上代码,具体代码的含义都写在注释中了:
/* 雷霄骅 * 中国传媒大学/数字电视技术 * leixiaohua1020@126.com * */ // aviplayer.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #include <dshow.h> // 用到的DirectShow SDK链接库 #pragma comment(lib,"strmiids.lib") int _tmain(int argc, _TCHAR* argv[]) { IGraphBuilder *pGraph = NULL; IMediaControl *pControl = NULL; IMediaEvent *pEvent = NULL; // 初始化COM库. HRESULT hr = CoInitialize(NULL); if (FAILED(hr)) { printf("错误 - 无法初始化 COM 组件"); return -1; } // 创建滤波器图表管理器 hr=CoCreateInstance(CLSID_FilterGraph, NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder, (void **)&pGraph); if (FAILED(hr)) { printf("错误 - 无法创建 Filter Graph Manager."); return -1; } // 查询媒体控制和媒体事件接口 hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl); hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent); // 建立图表,在这里你可以更改待播放的文件名称 hr = pGraph->RenderFile(L"E:\\movie\\外婆.VOB", NULL); if (SUCCEEDED(hr)) { // 运行图表. hr = pControl->Run(); if (SUCCEEDED(hr)) { //等待回放结束事件. long evCode; pEvent->WaitForCompletion(INFINITE, &evCode); // 切记: 在实际应用当中,不能使用INFINITE标识, 因为它会不确定的阻塞程序 } } // 释放所有资源和关闭COM库 pControl->Release(); pEvent->Release(); pGraph->Release(); CoUninitialize(); return 0; }
源代码下载(VC2010):http://download.csdn.net/detail/leixiaohua1020/6456581
相关推荐
这个“DirectShow的简单示例”可能是一个帮助开发者理解和应用DirectShow技术的教程或代码样本。 DirectShow主要设计用于播放媒体文件、捕获音频和视频流以及进行实时的多媒体处理。它构建在COM(组件对象模型)之...
DirectShow是微软开发的一个多媒体框架,用于处理视频和音频流。它提供了一种灵活和高效的方式来进行媒体数据的捕获、处理和播放。在“基于DirectShow的摄像头预览”这个主题中,我们主要探讨如何利用DirectShow API...
在这个特定的案例中,"VB 视频 播放器"是一个基于VB编写的简单媒体播放器程序。下面我们将深入探讨VB开发视频播放器的相关知识点: 1. **VB基础**:VB是Visual Basic的缩写,它基于Basic语言,具有直观的图形用户...
例如,要实现一个简单的视频预览功能,可以向过滤图表中添加一个视频捕捉源过滤器(Source Filter)和一个Video Renderer过滤器(Rendering Filter),然后将两者正确连接起来。 ##### 2.3 DirectShow的开发环境...
【基于MFC播放器】是一个面向初学者的项目,它利用Microsoft Foundation Classes (MFC) 框架创建了一个简单的用户界面,用于实现媒体播放功能。MFC是微软为Windows平台开发的应用程序提供的一种C++类库,它封装了...
在本项目中,我们关注的是"播放器设计与实现",这是一个基于VC++的简单视频播放器的开发案例,特别适合初级开发者进行课程设计实践。这个项目涉及到许多关键的计算机科学和技术概念,尤其是针对软件开发和多媒体处理...
对于视频播放器,我们可能需要创建一个基于CWinApp的子类,用于处理应用程序的初始化和退出,以及与播放器相关的全局设置。 接下来,实现视频播放功能,我们可以利用DirectShow或者Media Foundation框架。...
总之,“MyPlayer”这款简单的音乐播放器VC源代码为我们提供了一个很好的学习平台,涵盖了DirectShow音频处理、MCI接口应用、COM组件交互以及MFC界面设计等多个方面。通过研究这个项目,开发者不仅可以加深对VC编程...
在这个项目中,Deinterlace Filter是基于Directshow构建的一个组件,它实现了Deinterlace算法,能够将交错视频转换为非交错视频。 Deinterlace算法有多种实现方式,其中包括以下几种常见方法: 1. **Bob算法**...
在本文中,我们将深入探讨一个基于DirectShow和C++实现的简单视频摘要系统的设计与实现过程。 首先,我们要了解DirectShow。DirectShow是微软开发的一个多媒体框架,它主要用于处理音频和视频流。DirectShow提供了...
【简易视频播放器_C#_】是一款专为初学者设计的简单视频播放软件,它基于C#编程语言实现,提供基本的视频控制功能,包括播放、暂停、停止、后退、快进以及跳转等操作。这个项目对于想要学习如何在C#环境下开发多媒体...
本篇文章将详细探讨如何使用VC++实现视频采集,主要基于DirectShow框架,同时也会涉及到Visual Studio(VS)和.NET环境的使用。我们还将讨论如何处理不同类型的视频输入源,如USB摄像头、视频采集卡以及各种视频信号...
这个"Simple DirectShow Player"是一个基于C++编码的源代码项目,专注于实现最基本的播放功能。在这个项目中,开发者可以学习到如何使用DirectShow API来构建一个简单的媒体播放器。 DirectShow主要包含以下几个...
文件名6f796a9282814fb096405a2ce18480f5可能是一个编译后的可执行文件或者源代码文件,通过查看和运行这个文件,可以更直观地理解DirectShow控制摄像头抓拍照片的过程。 总的来说,DirectShow为开发者提供了底层的...
这个程序是一个基于DirectShow技术的小型应用程序,它可能包含播放、捕获、编辑或转换媒体文件的基本功能。DirectShow广泛应用于Windows操作系统中,提供了丰富的API接口,使得开发者能够方便地创建多媒体应用。 在...
以下是一个简单的C#代码示例,展示如何使用FFmpeg API读取视频的关键帧: ```csharp using System; using System.Diagnostics; using System.IO; using System.Linq; class VideoKeyframeExtractor { public ...
AMCap是Directshow SDK中附带的一个简单示例程序,它展示了如何使用Directshow API捕获并显示来自摄像头的视频流。你可以通过分析和修改AMCap的源代码来学习如何与Directshow接口交互,实现自己的功能。 SDK文件夹...
这个“简单的播放器”基于MFC(Microsoft Foundation Classes)框架,是一个用户界面友好的应用程序,主要用于播放音频或视频文件。MFC是微软提供的一套C++类库,它为Windows应用程序开发提供了丰富的接口,简化了...
使用Visual C++结合DirectShow技术实现摄像头视频捕捉是微软平台下的一个常用解决方案。接下来,本文将详细解释DirectShow在视频捕捉中的作用,以及在Visual C++中如何编程实现视频捕捉。 DirectShow是微软公司推出...