用DirectShow,在vc下播放音视频文件

1首先要搭建direct show平台,参考陆大侠的《dshow实务精选》  17页 ,里面有比较详尽的解答

2 主要的代码
          IGraphBuilder   *pGraph;   
          IMediaControl   *pMediaControl;  
          IMediaEvent       *pEvent;  
         IVideoWindow *piWindow;  
          CoInitialize(NULL);   
           // 在使用之前一定要先创建filter ,同时通过QueryInterface函数调用,提供filter需要的接口。
                  CoCreateInstance(CLSID_FilterGraph,   NULL,   CLSCTX_INPROC_SERVER,    
                                                  IID_IGraphBuilder,   (void   **)&pGraph);  
          pGraph->QueryInterface(IID_IMediaControl,   (void   **)&pMediaControl);  
          pGraph->QueryInterface(IID_IMediaEvent,   (void   **)&pEvent);  
          pGraph->QueryInterface(IID_IVideoWindow,   (void   **)&piWindow);   
    

      3  播放的实体,通过render函数,可以播放dshow自己支持的所有媒体文件,但是要播放如H.264等dshow不支持的媒体格式的话,需要自己再写一个decoder filter,然后将自己的filter添加到graph之中,添加之前一定要确保添加的filter已经注册
                    pGraph->RenderFile(L"C://Example.mpeg",   NULL);   
    
 4  视频的窗口设置

  piWindow->put_Owner((OAHWND)GetSafeHwnd());    
  piWindow->put_WindowStyle(WS_CHILD   |   WS_CLIPCHILDREN   |   WS_CLIPSIBLINGS);     
    
    


             pMediaControl->Run();  
   
          //   Wait   for   completion.    
          long   evCode;  
          pEvent->WaitForCompletion(INFINITE,   &evCode);  
   
          //   Clean   up.  
          pMediaControl->Release();  
          pEvent->Release();scorpion  
          pGraph->Release();  
          CoUninitialize();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值