玩玩DirectShow--(0)环境配置,小试牛刀

玩玩DirectShow--(0)环境配置,小试牛刀
缘起:
          朝哥安排我整个游戏内播放视频的功能,那我就玩玩dshow好了
          《巨人》的是xoyojank写的 第一个DirectShow程序   DirectShow播放视频
环境配置:
          用的是Platform SDK for Windows Server 2003 R2,安装后开始菜单如下           
玩玩DirectShow--(0)环境配置,小试牛刀_第1张图片
           VS2005里面的设置
Include
 玩玩DirectShow--(0)环境配置,小试牛刀_第2张图片
Lib
玩玩DirectShow--(0)环境配置,小试牛刀_第3张图片

小试牛刀:
         写个最简单的程序爽下,见sdk文档,位置如下
玩玩DirectShow--(0)环境配置,小试牛刀_第4张图片
项目配置:
         链接Strmiids.lib和Quartz.lib
玩玩DirectShow--(0)环境配置,小试牛刀_第5张图片
          
         多线程调试 DLL (/MDd)
截图:
          NND,截图截出来是黑的,why?
 源码:
#include  < dshow.h >
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
    IGraphBuilder 
* pGraph  =  NULL;
    IMediaControl 
* pControl  =  NULL;
    IMediaEvent   
* pEvent  =  NULL;

    
//  Initialize the COM library.
    HRESULT hr  =  CoInitialize(NULL);
    
if  (FAILED(hr))
        {
             printf(
" ERROR - Could not initialize COM library " );
             
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))
    {
        printf(
" ERROR - Could not create the Filter Graph Manager. " );
        
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.
    
//  F:\\Program Files\\NVIDIA Corporation\\SDK 9.5\\MEDIA\\textures\\video\\nvidia2.wmv
    
//  C:\\Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Samples\\Multimedia\\DirectShow\\Media\\Video\\ruby.avi
    hr  =  pGraph -> RenderFile(L " F:\\Program Files\\NVIDIA Corporation\\SDK 9.5\\MEDIA\\textures\\video\\nvidia2.wmv " , NULL);
    
if  (SUCCEEDED(hr))
    {
         
//  Run the graph.
         hr  =  pControl -> Run();
         
if  (SUCCEEDED(hr))
        {
             
//  Wait for completion.
              long  evCode;
             pEvent
-> WaitForCompletion(INFINITE,  & evCode);
 
             
//  Note: Do not use INFINITE in a real application, because it
             
//  can block indefinitely.
         }
    }
    pControl
-> Release();
    pEvent
-> Release();
    pGraph
-> Release();
    CoUninitialize();

    
return   0 ;
}






你可能感兴趣的:(玩玩DirectShow--(0)环境配置,小试牛刀)