• DirectShow简单入门程序


    1.首先确认已安装过相关工具及配置环境,然后打开vs2010,新建一对话框应用程序 取名为Player_test1,然后打开菜单-》项目-》属性-》

    添加strmmiids.lib库文件,然后在头文件里包含“dshow.h”头文件。

    2. 在头文件里添加public成员变量 ,在构造函数里初始化为NULL

      其中IGraphBuilder 用于建立以Filter Graph,管理各种filter。

      IMediaControl  用于控制通过filter进行播放的视频流,最常用的方法就是PLAY(),PAUSE(),STOP()等

      IMediaEvent 用于检索系统消息。

      IVideoWindow 用于设置播放窗口的属性,包括位置,大小,拥有者等

    1     IGraphBuilder * pGraph;//Graph管理器
    2     IMediaControl * pControl;//控制视频播放
    3     IMediaEvent * pEvent;//事件处理
    4     IVideoWindow *pWindow;//视频显示方式

    3.在OnInitDialog()函数中添加要初始化的函数及变量

     //初始化com库
         HRESULT hr = CoInitialize(NULL);
         if (FAILED(hr))
         {
             printf("初始化Com库失败");
            return false;
         }

     //创建过滤图管理器以及查询接口
         hr = CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER
             ,IID_IGraphBuilder,(void **)&pGraph);
         if (FAILED(hr))
         {
             printf("Error__创建过滤管理器失败");
             return false;
         }
     
     //查询接口
         hr = pGraph->QueryInterface(IID_IMediaControl,(void**)&pControl);
         hr = pGraph->QueryInterface(IID_IMediaEvent,(void**)&pEvent);
         hr = pGraph->QueryInterface(IID_IVideoWindow,(void **)&pWindow);
     //建立表
        hr = pGraph->RenderFile(L"d:\1.wmv",NULL);
        if (SUCCEEDED(hr))
        {
            //运行
            hr = pControl->Run();
        //    pWindow->put_FullScreenMode(OATRUE);//全屏播放
            if (SUCCEEDED(hr))
            {
                //等待结束
                long evCode;
                pEvent->WaitForCompletion(INFINITE,&evCode);
             }
         }

    4. 最后要记得释放资源

      pControl->Release();
      pEvent->Release();
      pGraph->Release();

      pWindow->Release();
      CoUninitialize();

    最后直接运行就可以播放视频了,当然这只是最简单的功能。希望能和大家多多交流。

  • 相关阅读:
    haproxy 2.5 发布
    cube.js sql 支持简单说明
    基于graalvm 开发一个cube.js jdbc driver 的思路
    apache kyuubi Frontend 支持mysql 协议
    oceanbase 资源池删除说明
    基于obd 的oceanbase 扩容说明
    jfilter一个方便的spring rest 响应过滤扩展
    cube.js schema 定义多datasource 说明
    typescript 编写自定义定义文件
    meow 辅助开发cli 应用的工具
  • 原文地址:https://www.cnblogs.com/songliquan/p/3267902.html
Copyright © 2020-2023  润新知