查询过滤器图表事件接口
admin
2024-03-28 20:57:22

//播放视频文件
void CVideoPlay::PlayFromFile(CString szFile)
{
      WCHAR wFile[MAX_PATH];
      HRESULT   hr;
      MultiByteToWideChar( CP_ACP, 0, szFile.GetBuffer(_MAX_PATH), -1, wFile, MAX_PATH );
      szFile.ReleaseBuffer();
      //创建过滤器图表生成器接口
      CHECK_ERROR(::CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, 
                   IID_IGraphBuilder, (void **)&pigb),"CoCreateInstance Error") ;
      //查询数据流控制接口
      pigb->QueryInterface(IID_IMediaControl, (void **)&pimc);  
      //查询过滤器图表事件接口
      hr=pigb->QueryInterface(IID_IMediaEventEx, (void **)&pimex);
      //查询视频播放窗口接口    
      pigb->QueryInterface(IID_IVideoWindow, (void **)&pivw);
      //查询数据流位置接口
      hr=pigb->QueryInterface(IID_IMediaPosition, (void**) &pmp);

      //为指定的多媒体文件创建一个过滤器图表进行处理
      hr = pigb->RenderFile(wFile, NULL);
      //得到视频文件的播放时间
      if (SUCCEEDED(hr))                
         hr=pmp->get_Duration(&tLength);  

      //显示视频播放窗口
      DisplayVideoWin();    
      if (SUCCEEDED(hr))
         pimc->Run();       //播放视频

      pimex->SetNotifyWindow((OAHWND)m_hwnd, WM_PLAYOVER, 0);

}

int CVideoPlay::PlayOver()
{

//播放视频文件
void CVideoPlay::PlayFromFile(CString szFile)
{
      WCHAR wFile[MAX_PATH];
      HRESULT   hr;
      MultiByteToWideChar( CP_ACP, 0, szFile.GetBuffer(_MAX_PATH), -1, wFile, MAX_PATH );
      szFile.ReleaseBuffer();
      //创建过滤器图表生成器接口
      CHECK_ERROR(::CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, 
                   IID_IGraphBuilder, (void **)&pigb),"CoCreateInstance Error") ;
      //查询数据流控制接口
      pigb->QueryInterface(IID_IMediaControl, (void **)&pimc);  
      //查询过滤器图表事件接口
      hr=pigb->QueryInterface(IID_IMediaEventEx, (void **)&pimex);
      //查询视频播放窗口接口    
      pigb->QueryInterface(IID_IVideoWindow, (void **)&pivw);
      //查询数据流位置接口
      hr=pigb->QueryInterface(IID_IMediaPosition, (void**) &pmp);

      //为指定的多媒体文件创建一个过滤器图表进行处理
      hr = pigb->RenderFile(wFile, NULL);
      //得到视频文件的播放时间
      if (SUCCEEDED(hr))                
         hr=pmp->get_Duration(&tLength);  

      //显示视频播放窗口
      DisplayVideoWin();    
      if (SUCCEEDED(hr))
         pimc->Run();       //播放视频

      pimex->SetNotifyWindow((OAHWND)m_hwnd, WM_PLAYOVER, 0);

}

int CVideoPlay::PlayOver()
{
  long evCode,evParam1,evParam2;
 

  long evCode,evParam1,evParam2;

相关内容

热门资讯

国庆黄金周景区情况:大同古城半... 文| 芙昕 编辑 | 芙昕 国庆长假,很多人都计划着出门走走,可一到了那些热门景点,看到的往往不是山...
来大东北一共分两步:先“冷藏”... 还在被“东北=冰窖”的刻板印象吓退? 南方的“小土豆”们 别急着裹紧小棉袄 这个冬天 让“气候缓冲带...
第三届“长城之约”活动在河北涞... 11月15日,第三届"长城之约"全球推广活动暨世界文化遗产对话15日在河北省保定市涞源县启幕。 本次...
巴厘岛:时光在此停驻 (自由行... 曾几何时,世人只知巴厘岛而不知印尼。巴厘岛的美太过耀眼,以至于人们常常忘记——它只是印尼万千岛屿中最...