博客日历
2025年06月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
26 | 27 | 28 | 29 | 30 | 31 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
存档
2025年03月 2024年
03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
DirectShow.1 最简单的DirectShow应用程序 — 播放视频
1.简介
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)之前的DirectX SDK中都包含有DirectShow SDK,之后的DirectShow SDK以Extras的形式单独发布。
2.下载安装
这里使用了DirectX9.0b,下载地址为:
假设DirectX SDK安装在D:\DXSDK目录下,开发环境使用VC++6.0。
在这个版本的DirectX SDK中,DirectShow SDK的库文件STRMBASE.lib需要自己编译,位置在:D:\DXSDK\Samples\C++\DirectShow\BaseClasses目录下。
3.设置VC++6.0环境
添加D:\DXSDK\Include到Include files目录列表中。
4.最简单的DirectShow应用程序 - 播放视频文件
#include <windows.h>
#include <DShow.h>
#pragma comment(lib,"Strmiids.lib")
int __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);
"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);
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;
}
上一篇: 体验Linux.1 安装Linux操作系统
下一篇: DirectShow.2 DirectShow原理
分类:Win32/C++ 查看次数:10091 发布时间:2010/4/10 22:02:52