DirectShow 最简单的入门 -- 播放一段视频
#include <dshow.h> #pragma comment(lib,"strmbase.lib")
#pragma comment(lib,"quartz.lib") int main() {
// Filter Graph Builder
IGraphBuilder *pGraph = NULL;
// Media Control
IMediaControl *pControl = NULL;
// Media Event
IMediaEvent *pEvent = NULL;
// 初始化COM库,HRESULT 就是函数运行的结果是成功了还是失败了,使用FAILED(hr),SUCCEEDED(hr) 来判断
HRESULT hr = CoInitialize(NULL); // 如果初始化COM库失败的话,就返回
if (FAILED(hr))
{
return ;
} // 创建 Filter Graph Manager
hr = CoCreateInstance(
CLSID_FilterGraph,
NULL,
CLSCTX_INPROC_SERVER,
IID_IGraphBuilder,
(void**) &pGraph
); // 如果创建失败 返回
if (FAILED(hr))
{
return ;
} // 使用 Filter Graph Manager 得到 MediaControl & MediaEvent
hr = pGraph->QueryInterface(IID_IMediaControl,(void**)&pControl);
hr = pGraph->QueryInterface(IID_IMediaEvent,(void**)&pEvent); // 设置渲染一个视频文件
hr = pGraph->RenderFile(L"E:/学习/WPF/VS2008WPFVideo07.wmv",NULL); if (SUCCEEDED(hr))
{
// 使用 pControl 的 RUN 方法,开始播放视频
hr = pControl->Run(); if (SUCCEEDED(hr))
{
// 等待播放结束
long evCode;
pEvent->WaitForCompletion(INFINITE,&evCode);
}
} // 释放资源
pControl->Release();
pEvent->Release();
pGraph->Release();
// 释放COM库
CoUninitialize(); return ;
}
DirectShow 是基于COM 组件的, 所以在使用前最好先了解一下COM编辑的一些基础的知识.
最近也是刚开始接触DS ,因为在做新媒体应用 的时候总是很常用到.所以很有了解学习的必要
做了一个最简单的入门程序(来自己网络),用来敲开DirectShow的大门!!!
DirectShow 最简单的入门 -- 播放一段视频的更多相关文章
- 【openCV学习笔记】【2】读取并播放一段视频
#include <iostream> #include <opencv/highgui.h> int main(int argc, char** argv){ cvNamed ...
- OpenAl编程入门:播放一段音频
OpenAl编程入门 关于OpenAl我就不多介绍了,这两篇说明对于初步了解已经足够了:http://baike.baidu.com/view/1355367.htmhttp://en.wikiped ...
- GJM : Python简单爬虫入门(二) [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
C#中缓存的使用 缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可: <%@ Outp ...
- scrapy爬虫简单项目入门练习
[写在开头] scrapy环境配置配置好了之后,开始着手简单项目入门练习.关于环境配置见上一篇博客https://www.cnblogs.com/ljxh/p/11235079.html. [正文部分 ...
- Maven+SpringMVC+Dubbo 简单的入门demo配置
转载自:https://cloud.tencent.com/developer/article/1010636 之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程 ...
- Python简单爬虫入门三
我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ...
- Python简单爬虫入门二
接着上一次爬虫我们继续研究BeautifulSoup Python简单爬虫入门一 上一次我们爬虫我们已经成功的爬下了网页的源代码,那么这一次我们将继续来写怎么抓去具体想要的元素 首先回顾以下我们Bea ...
- 简单的音乐播放器(VS 2010 + Qt 4.8.5)
昨天历经千辛万苦,配置好了VS 2010中的Qt环境(包括Qt for VS插件),今天决定浅浅地品味一下将两者结合进行编程的魅力. 上网查了一些资料,学习了一些基础知识,决定做一个简单的音乐播放器, ...
随机推荐
- 信驰达蓝牙4.0模块全面升级 v2.20 U最新发布
作为国际蓝牙联盟成员之一,德州仪器(TI)于2012年强势推出CC254X系列单芯片(SOC)低功耗蓝牙收发器,经典51内核,最强优势在于丰富的外围(21个IO,UART,SPI,USB2.0,PWM ...
- Flask —— 使用Python和OpenShift进行即时Web开发
最近Packtpub找到了我,让我给他们新出版的关于Flask的书写书评.Flask是一个很流行的Python框架.那本书是Ron DuPlain写的<Flask 即时Web开发>.我决定 ...
- Android的一些常用命令提示符(cmd)指令
在<Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目>中我曾介绍过如何给Android SDK配置环境变量,现在它就有用武之地了,我们可以直接在 ...
- 教你怎么安装Redis
以下命令以root用户运行:#cd /tmp/#wget http://redis.googlecode.com/files/redis-2.6.11.tar.gz#tar xzf redis-2.6 ...
- UI进阶 即时通讯之卸载Openfire
首先,确保你已经关掉了openfire打开终端 (在应用程序-->实用工具-->)输入以下命令sudo rm -rf /Library/PreferencePanes/Openfire.p ...
- Nginx + django windows下配置
1.下载nginx, 去http://nginx.org/en/download.html 下载,我下载的是1.8 stable版本. 2.配置文件/conf/nginx.conf #user nob ...
- 29.DDR2问题1仿真模型文件
在使用modelsim仿真DDR2时,一般我们会用美光网站上下载的DDR2仿真模型.仿真模型文件一般有ddr2_module.v,ddr2.v,ddr2_mcp.v,ddr2_parameters.v ...
- Python实现PLA(感知机)
Python实现PLA(感知机) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=>end o ...
- ThinkPHP技巧
在php文件可以用 echo D_S()->getLastSql();来打印出 当前的sql语句
- vtune 不能查看pg的源代码
在编译的时候,要加enable-debug 选项 并且如果之前有没有加的话,一定要make clean