directshow学习1

HRESULT hr;
 IGraphBuilder *pGraph;
 CoInitialize(NULL);
 
 hr = CoCreateInstance(CLSID_FilterGraph /*类标识符*/,
  NULL,
  CLSCTX_INPROC_SERVER,
  IID_IGraphBuilder/*接口标识符*/,
  (void **)&pGraph
  );

 ICaptureGraphBuilder2 *pBuild; // Capture Graph Builder
 // Initialize pBuild (not shown).
 IBaseFilter *pCap; // Video capture filter.
 /* Initialize pCap and add it to the filter graph (not shown). */
 hr= pBuild->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video,
  pCap, NULL, NULL);
 IBaseFilter *pMux;
 hr=pBuild->SetOutputFileName(
  &MEDIASUBTYPE_Avi, // Specifies AVI for the target file.
  L"C://Example.avi", // File name.
  &pMux, // Receives a pointer to the mux.
  NULL); // (Optional) Receives a pointer to the file sink.
 hr = pBuild->RenderStream(
  &PIN_CATEGORY_CAPTURE, // Pin category.
  &MEDIATYPE_Video, // Media type.
  pCap, // Capture filter.
  NULL, // Intermediate filter (optional).
  pMux); // Mux or file sink filter.
 // Release the mux filter.
 pMux->Release();
 
 IConfigAviMux *pConfigMux = NULL;
 hr = pMux->QueryInterface(IID_IConfigAviMux, (void**)&pConfigMux);
 if (SUCCEEDED(hr))
 {
  pConfigMux->SetMasterStream(1);
  pConfigMux->Release();
 }
 
 IBaseFilter *pEncoder;
 IFilterGraph * pGraph1;
 /* Create the encoder filter (not shown). */
 // Add it to the filter graph.
 pGraph1->AddFilter(pEncoder, L"Encoder");
  /* Call SetOutputFileName as shown previously. */
  // Render the stream.
  hr = pBuild->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video,pCap, pEncoder, pMux);
 pEncoder->Release();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听海拉拉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值