CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  专题开发/技术/项目 >  多媒体/流媒体开发

请问捕获了视频后,怎样获取捕获了的视频流并保存下来?

楼主klfjdlkfjasl1()2005-04-20 23:06:40 在 专题开发/技术/项目 / 多媒体/流媒体开发 提问

请问捕获了视频后,怎样获取捕获了的视频流并保存下来?  
   
  还有`压缩视频数据是不是获取了视频数据后,再对数据进行压缩?还是通过别的方法进行的?这几天都买不了陆老师的开发精选`。。。又因为急着解决``请教``` 问题点数:50、回复次数:2Top

1 楼contonazhao(计算机的松鼠)回复于 2005-04-21 11:30:09 得分 50

应该是先建一个capture   graph吧.建议你看看DX9.0SDK自带的StillCap例子看看,应该就在下面这段程序里面实现的.AMCap里面也应该有,不过我还没看明白^_^.  
  HRESULT   CStillCapDlg::InitCaptureGraph(   TCHAR   *   pFilename   )  
  {  
          HRESULT   hr;  
   
          //   make   a   filter   graph  
          //  
          m_pGraph.CoCreateInstance(   CLSID_FilterGraph   );  
          if(   !m_pGraph   )  
          {  
                  Error(TEXT("Could   not   create   filter   graph"));  
                  return   E_FAIL;  
          }  
   
          //   get   whatever   capture   device   exists  
          //  
          CComPtr<   IBaseFilter   >   pCap;  
          GetDefaultCapDevice(   &pCap   );  
          if(   !pCap   )  
          {  
                  Error(   TEXT("No   video   capture   device   was   detected   on   your   system.\r\n\r\n")  
                                TEXT("This   sample   requires   a   functional   video   capture   device,   such\r\n")  
                                TEXT("as   a   USB   web   camera.     Video   capture   will   be   disabled.")   );  
                  return   E_FAIL;  
          }  
   
          //   add   the   capture   filter   to   the   graph  
          //  
          hr   =   m_pGraph->AddFilter(   pCap,   L"Cap"   );  
          if(   FAILED(   hr   )   )  
          {  
                  Error(   TEXT("Could   not   put   capture   device   in   graph"));  
                  return   hr;  
          }  
   
          //   make   a   capture   builder   graph   (for   connecting   help)  
          //  
          CComPtr<   ICaptureGraphBuilder2   >   pBuilder;  
          hr   =   pBuilder.CoCreateInstance(   CLSID_CaptureGraphBuilder2   );  
          if(   !pBuilder   )  
          {  
                  Error(   TEXT("Could   not   create   capture   graph   builder2"));  
                  return   hr;  
          }  
   
          hr   =   pBuilder->SetFiltergraph(   m_pGraph   );  
          if(   FAILED(   hr   )   )  
          {  
                  Error(   TEXT("Could   not   set   filtergraph   on   capture   graph   builder2"));  
                  return   hr;  
          }  
   
          CComPtr<   IBaseFilter   >   pMux;  
          CComPtr<   IFileSinkFilter   >   pSink;  
          USES_CONVERSION;  
   
          hr   =   pBuilder->SetOutputFileName(   &MEDIASUBTYPE_Avi,     T2W(   pFilename   ),    
                                                                              &pMux,   &pSink   );  
          if(   FAILED(   hr   )   )  
          {  
                  Error(   TEXT("Could   not   create/hookup   mux   and   writer"));  
                  return   hr;  
          }  
   
          hr   =   pBuilder->RenderStream(   &PIN_CATEGORY_CAPTURE,   &MEDIATYPE_Video,  
                                                                    pCap,   NULL,pMux   );  
          if(   FAILED(   hr   )   )  
          {  
                  Error(   TEXT("Could   not   connect   capture   pin"));  
                  return   hr;  
          }  
   
          hr   =   pBuilder->RenderStream(   &PIN_CATEGORY_PREVIEW,   &MEDIATYPE_Video,  
                                                                    pCap,   NULL,   NULL   );  
          if(   FAILED(   hr   )   )  
          {  
                  Error(   TEXT("Could   not   render   capture   pin"));  
                  return   hr;  
          }  
          if(   hr   ==   VFW_S_NOPREVIEWPIN   )  
          {  
                  //   preview   was   faked   up   using   the   capture   pin,   so   we   can't  
                  //   turn   capture   on   and   off   at   will.  
                  hr   =   0;  
          }  
   
          //   find   the   video   window   and   stuff   it   in   our   window  
          //  
          CComQIPtr<   IVideoWindow,   &IID_IVideoWindow   >   pWindow   =   m_pGraph;  
          if(   !pWindow   )  
          {  
                  Error(   TEXT("Could   not   get   video   window   interface"));  
                  return   hr;  
          }  
   
          //   set   up   the   preview   window   to   be   in   our   dialog  
          //   instead   of   floating   popup  
          //  
          HWND   hwndPreview   =   NULL;  
          GetDlgItem(   IDC_PREVIEW,   &hwndPreview   );  
          RECT   rc;  
          ::GetWindowRect(   hwndPreview,   &rc   );  
   
          hr   =   pWindow->put_Owner(   (OAHWND)   hwndPreview   );  
          hr   =   pWindow->put_Left(   0   );  
          hr   =   pWindow->put_Top(   0   );  
          hr   =   pWindow->put_Width(   rc.right   -   rc.left   );  
          hr   =   pWindow->put_Height(   rc.bottom   -   rc.top   );  
          hr   =   pWindow->put_Visible(   OATRUE   );  
          hr   =   pWindow->put_WindowStyle(   WS_CHILD   |   WS_CLIPSIBLINGS   );  
           
          //   run   the   graph  
          //  
          CComQIPtr<   IMediaControl,   &IID_IMediaControl   >   pControl   =   m_pGraph;  
          hr   =   pControl->Run(   );  
          if(   FAILED(   hr   )   )  
          {  
                  Error(   TEXT("Could   not   run   graph"));  
                  return   hr;  
          }  
   
          UpdateStatus(_T("Capturing   Video   To   Disk"));  
          return   0;  
  }Top

2 楼klfjdlkfjasl1()回复于 2005-04-21 17:59:41 得分 0

谢谢啊Top

相关问题

  • 用DirectX7 进行视频捕获,怎么获取到视频流?
  • 视频捕获
  • 视频捕获保存简单问题,请各位大虾踊跃发言!!
  • 视频捕获(急)
  • *** 入门者请教:硬盘录相机中如何将捕获的视频保存到硬盘 **
  • 入门者请教:硬盘录相机中如何将捕获的视频保存到硬盘
  • 50分求解,捕获其他应用程序正在接受的视频流,并将其保存,请大家提供建议
  • 请教视频捕获的问题
  • 关于视频捕获问题!
  • 请问一个视频捕获问题

关键词

  • hr
  • video
  • 数据
  • null
  • pwindow
  • 捕获
  • capturing
  • pbuilder
  • 视频
  • hwndpreview

得分解答快速导航

  • 帖主:klfjdlkfjasl1
  • contonazhao

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo