DirectShow
1 最简单的DirectShow应用程序 — 播放视频
DirectShow是DirectX中的一套处理媒体播放、音视频采集的开发包,在DirectX
SDK Summer 2004(DirectX9.0C SDK的第一个版本,下载地址:http://download.microsoft.com/download/7/e/9/7e9f48c6-f28a-469b-9b8e-cc84032efbd4/
dxsdk_sum2004.exe
)之前的DirectXSDK中都包含有DirectShow
SDK,之后的DirectShow
SDK以Extras的形式单独发布。
SDK安装在D:\DXSDK目录下,开发环境使用VC++6.0。
SDK中,DirectShow
SDK的库文件STRMBASE.lib需要自己编译,位置在:D:\DXSDK\Samples\C++\DirectShow\BaseClasses目录下。
files目录列表中。
播放视频文件
<windows.h>
<DShow.h>
comment(lib,"Strmiids.lib")
__stdcall WinMain(
HINSTANCE
hInstance,
HINSTANCE
hPrevInstance,
LPSTR
lpCmdLine,
int
nShowCmd
)
//本例来自DirectX
SDK:How
To Play a File
IGraphBuilder
*pGraph
=
NULL;
IMediaControl
*pControl
=
NULL;
IMediaEvent
*pEvent
=
NULL;
//
初始化COM库.
HRESULT
hr
=
CoInitialize(NULL);
if
(FAILED(hr))
{
MessageBox(NULL,"ERROR
- Could not initialize COM
library",
"Warning",MB_OK|MB_ICONWARNING);
return
-1;
}
//
Create the filter graph manager and query for
interfaces.
hr
=
CoCreateInstance(CLSID_FilterGraph,
NULL,
CLSCTX_INPROC_SERVER,
IID_IGraphBuilder,
(void
**)&pGraph);
if
(FAILED(hr))
{
MessageBox(NULL,"ERROR
- Could not create the Filter Graph Manager.",
"Warning",MB_OK|MB_ICONWARNING);
return
-1;
}
hr
=
pGraph->QueryInterface(IID_IMediaControl,
(void
**)&pControl);
hr
=
pGraph->QueryInterface(IID_IMediaEvent,
(void
**)&pEvent);
// Build
the graph. IMPORTANT: Change this string to a file on your
system.
hr
=
pGraph->RenderFile(
L"E:\\Movie\\2012\\[2012].2012.2009.R5-CD2-人人影视.rmvb",
NULL);
if
(SUCCEEDED(hr))
{
// Run
the graph.
hr
=
pControl->Run();
if
(SUCCEEDED(hr))
{
// Wait
for completion.
longevCode;
pEvent->WaitForCompletion(INFINITE,
&evCode);
}
}
pControl->Release();
pEvent->Release();
pGraph->Release();
CoUninitialize();
return
0;

真正开发的时候,其实就是把这个图用代码描述出来。
文章转自C++学习视频资料:http://blog.sina.com.cn/s/blog_4d8205e40100q4h2.html
DirectShow的更多相关文章
- win7 x64 vs2010 directShow开发环境配置
近来工作需要,要用dirrectShow写一个视频播放的demo验证自己的想法.开发环境配置了好久都没有成功,最后终于弄完,现在记录下来,以后有同学遇到同样问题,可以以此法解决. windows SD ...
- DirectShow+VS2010+Win7配置说明
不得不说,使用windows的东西确实很麻烦,DirectShow这个东西不断更新换代,书本上的知识完全跟不上时代,只能去博客上查资料.百度之后,看了大量的文章,终于完成了自己的DirectShow安 ...
- DirectShow Filter的开发实践
一.介绍 摄像头图像采集处理在业界有着多种成熟的方案.从老的DirectShow.Grabber技术,到新的Windows Media Foundation框架,网络上都有着丰富的参考资料.OpenC ...
- 在DirectShow中支持DXVA 2.0(Supporting DXVA 2.0 in DirectShow)
这几天在做dxva2硬件加速,找不到什么资料,翻译了一下微软的两篇相关文档.并准备记录一下用ffmpeg实现dxva2,将在第三篇写到.这是第二篇.,英文原址:https://msdn.microso ...
- DirectShow开发快速入门之慨述
摘要:本篇文档概括性的介绍了DirectShow的主要组成部分,以及一些Directshow的基本概念.熟悉这些基本的知识对于Directshow的应用开发或者过滤器的开发者都会有所帮助. Direc ...
- DirectShow .Net 实现视频
DirectShow .Net 实现视频 .获取视频采集设备IBaseFilter接口对象的方法 //获取所有视频设备名称 public ArrayList GetVideoInputDevice() ...
- 转:最简单的基于 DirectShow 的视频播放器
50行代码实现的一个最简单的基于 DirectShow 的视频播放器 本文介绍一个最简单的基于 DirectShow 的视频播放器.该播放器对于初学者来说是十分有用的,它包含了使用 DirectSho ...
- 转:Directshow开发的一些例子
DirectShow Filter 开发典型例子分析 --字幕叠加 (FilterTitleOverlay)1 本文分析一下<DirectShow开发指南>中的一个典型的Transform ...
- DirectShow程序运行过程简析
这段时间一直在学习陆其明老师的<DirectShow开发指南>一书,书中对DirectShow的很多细节讲解清晰,但是却容易让人缺少对全局的把握.在学习过程中,整理了关于DirectSho ...
随机推荐
- php 错误
ini_set('display_errors', '1');error_reporting(E_ALL ^ E_NOTICE); 有时有了其它框架 应该用它的配置,要不然,你改了,它又改回去了: ...
- MYSQL存储过程、游标、触发器
MySQL5 中添加了存储过程的支持. 大多数SQL语句都是针对一个或多个表的单条语句.并非所有的操作都怎么简单.经常会有一个完整的操作需要多条才能完成 存储过程简单来说,就是为以后的使用而保存的一 ...
- TCP/IP——基本知识
TCP / IP通常被认为是一个四层协议系统: 1) 链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡.它们一起处理与电缆(或其他任何传输媒介)的物 ...
- Solr学习总结(一)Solr介绍
最近一直在搞Solr的问题,研究Solr 的优化,搜索引擎的bug修改等,这几天终于有时间,闲下来总结分享,以便大家参考,与大家一起来共同学习. Solr是一个基于Lucene的全文搜索引擎,同 ...
- JQuery常用方法总结
1.json的创建方式 <script> $(function () { //第一种 var my = new People("CallmeYhz", 26); ale ...
- tyvj1193 括号序列
描述 定义如下规则序列(字符串):1.空序列是规则序列:2.如果S是规则序列,那么(S)和[S]也是规则序列:3.如果A和B都是规则序列,那么AB也是规则序列. 例如,下面的字符串都是规则 ...
- HTML5+CSS3 - 代码简写篇
有话先说:我是一只菜鸟,还是一只刚步入前端这个领域的小菜年,在不断的进阶,理解最深刻的还是代码,既爱又恨却不知如何去感悟. background属性简写: background-position属性组 ...
- 【相当实用】如何让TortoiseSVN导出新增或修改过的文件
当一个网站项目进入运营维护阶段以后,不会再频繁地更新全部源文件到服务器,这个时间的修改大多是局部的,因此更新文件只需更新修改过的文件,其他没有修改过的文件就没有必要上载到服务器.但一个稍微上规模的网站 ...
- vi 常用命令
1.关于退出 :wq! ----强制保存退出 :wq ---- 保存退出 ZZ ---- 作用和:wq一样,(注意Z是大写的,并且不是在命令模式) :q ---- 退出 :q! --- 强 ...
- vue2.0学习(一)
1.解决双花括号在初始化时的闪烁,两种方式,一种是<div v-text="name"></div>,将用v-text指令来显示,类似于angular的ng ...