DirectShow简单入门程序
1.首先确认已安装过相关工具及配置环境,然后打开vs2010,新建一对话框应用程序 取名为Player_test1,然后打开菜单-》项目-》属性-》

添加strmmiids.lib库文件,然后在头文件里包含“dshow.h”头文件。
2. 在头文件里添加public成员变量 ,在构造函数里初始化为NULL
其中IGraphBuilder 用于建立以Filter Graph,管理各种filter。
IMediaControl 用于控制通过filter进行播放的视频流,最常用的方法就是PLAY(),PAUSE(),STOP()等
IMediaEvent 用于检索系统消息。
IVideoWindow 用于设置播放窗口的属性,包括位置,大小,拥有者等
IGraphBuilder * pGraph;//Graph管理器
IMediaControl * pControl;//控制视频播放
IMediaEvent * pEvent;//事件处理
IVideoWindow *pWindow;//视频显示方式
3.在OnInitDialog()函数中添加要初始化的函数及变量
//初始化com库
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
printf("初始化Com库失败");
return false;
}
//创建过滤图管理器以及查询接口
hr = CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER
,IID_IGraphBuilder,(void **)&pGraph);
if (FAILED(hr))
{
printf("Error__创建过滤管理器失败");
return false;
}
//查询接口
hr = pGraph->QueryInterface(IID_IMediaControl,(void**)&pControl);
hr = pGraph->QueryInterface(IID_IMediaEvent,(void**)&pEvent);
hr = pGraph->QueryInterface(IID_IVideoWindow,(void **)&pWindow);
//建立表
hr = pGraph->RenderFile(L"d:\\1.wmv",NULL);
if (SUCCEEDED(hr))
{
//运行
hr = pControl->Run();
// pWindow->put_FullScreenMode(OATRUE);//全屏播放
if (SUCCEEDED(hr))
{
//等待结束
long evCode;
pEvent->WaitForCompletion(INFINITE,&evCode);
}
}
4. 最后要记得释放资源
pControl->Release();
pEvent->Release();
pGraph->Release();
pWindow->Release();
CoUninitialize();
最后直接运行就可以播放视频了,当然这只是最简单的功能。希望能和大家多多交流。
DirectShow简单入门程序的更多相关文章
- springmvc(一) springmvc框架原理分析和简单入门程序
springmvc这个框架真的非常简单,感觉比struts2还更简单,好好沉淀下来学习~ --WH 一.什么是springmvc? 我们知道三层架构的思想,并且如果你知道ssh的话,就会更加透彻的理解 ...
- SpringMVC学习(一)———— springmvc框架原理分析和简单入门程序
一.什么是springmvc? 我们知道三层架构的思想,并且如果你知道ssh的话,就会更加透彻的理解这个思想,struts2在web层,spring在中间控制,hibernate在dao层与数据库打交 ...
- springmvc框架原理分析和简单入门程序
一.什么是springmvc? 我们知道三层架构的思想,并且如果你知道ssh的话,就会更加透彻的理解这个思想,struts2在web层,spring在中间控制,hibernate在dao层与数据库打交 ...
- MyBatis - 介绍、简单入门程序
JDBC编程中的问题 1. 将SQL语句硬编码到Java代码,不利于系统维护. 设想如何解决:将SQL单独抽取出来,在配置文件(xml方式.properties文件)进行配置. ...
- Java爬虫——Gecco简单入门程序(根据下一页一直爬数据)
为了完成作业,所以学习了一下爬虫Gecco,这个爬虫集合了以往所有的爬虫的特点,但是官方教程中关于Gecco的教程介绍的过于简单,本篇博客是根据原博客的地址修改的,原博客中只有程序的截图,而没有给出一 ...
- MyBatis学习(一)简单入门程序
MyBatis入门学习 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名 ...
- freemarker的简单入门程序
本文主要介绍了freemarker的常用标签<#list> <#import> <#assign> <#if> <#else> &l ...
- 程序员,一起玩转GitHub版本控制,超简单入门教程 干货2
本GitHub教程旨在能够帮助大家快速入门学习使用GitHub,进行版本控制.帮助大家摆脱命令行工具,简单快速的使用GitHub. 做全栈攻城狮-写代码也要读书,爱全栈,更爱生活. 更多原创教程请关注 ...
- GitHub这么火,程序员你不学学吗? 超简单入门教程 【转载】
本GitHub教程旨在能够帮助大家快速入门学习使用GitHub. 本文章由做全栈攻城狮-写代码也要读书,爱全栈,更爱生活.原创.如有转载,请注明出处. GitHub是什么? GitHub首先是个分布式 ...
随机推荐
- 常用的Homebrew命令
一些常用的Homebrew命令: 更新:brew update 安装包信息检索:brew info 安装包搜索:brew search foo 安装包列表:brew list 过时信息:brew ou ...
- Apache Spark 2.2.0 中文文档 - Structured Streaming 编程指南 | ApacheCN
Structured Streaming 编程指南 概述 快速示例 Programming Model (编程模型) 基本概念 处理 Event-time 和延迟数据 容错语义 API 使用 Data ...
- 服务器 PyTorch 报错 重装 PyTorch
两个代码,pix2pix + CycleGan , wgan-gp 都是 pytorch 写的, 在服务器端运行,均存在下列问题,故判定是 pytorch 的安装问题. Traceback (mos ...
- Weka 二次开发使用心得
Weka 二次开发使用心得 一.weka数据挖掘流程 使用weka图形界面,初步尝试了下数据的预处理.分类.关联等操作,因为weka本身就是一个开源的机器学习库,于是想自己尝试下利用weka的api进 ...
- hadoop2.4 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
在Ubuntu上安装完hadoop2.4以后,使用以下命令: hadoop fs -ls // :: WARN util.NativeCodeLoader: Unable to load native ...
- hihocoder 1093 SPFA算法
题目链接:http://hihocoder.com/problemset/problem/1093 , 最短路的SPFA算法. 由于点的限制(10w),只能用邻接表.今天也学了一种邻接表的写法,感觉挺 ...
- IOS -刷帧动画(CADisplayLink)
@property (nonatomic, assign) int imageY; @end @implementation NJView -(void)awakeFromNib { NSLog(@& ...
- 使用RichTextBox控件保存文件
实习效果: 知识运用: RichTextBox控件的SaveFile方法 SaveFileDialog对象的ShowDialog方法 实现代码: private void 打开RTF文件ToolStr ...
- python读取excel中的数据
import numpy as np import matplotlib.pyplot as plt import pandas as pd #df = pd.read_excel('/Users/N ...
- form 表单 和 jQuery HTML / CSS 方法($().html 类似的样式)
1 有关链接 :http://www.runoob.com/tags/tag-form.html https://www.cnblogs.com/Jxwz/p/4509618.html https:/ ...