zoukankan      html  css  js  c++  java
  • DirectShow 最简单的入门 -- 播放一段视频

     1 #include <dshow.h>
     2 
     3 #pragma comment(lib,"strmbase.lib")
     4 #pragma comment(lib,"quartz.lib")
     5 
     6 int main() {
     7     // Filter Graph Builder
     8     IGraphBuilder *pGraph = NULL;
     9     // Media Control
    10     IMediaControl *pControl = NULL;
    11     // Media Event
    12     IMediaEvent *pEvent = NULL;
    13     // 初始化COM库,HRESULT 就是函数运行的结果是成功了还是失败了,使用FAILED(hr),SUCCEEDED(hr) 来判断
    14     HRESULT hr = CoInitialize(NULL);
    15 
    16     // 如果初始化COM库失败的话,就返回
    17     if (FAILED(hr))
    18     {
    19         return 0;
    20     }
    21 
    22     // 创建 Filter Graph Manager
    23     hr = CoCreateInstance(
    24         CLSID_FilterGraph,
    25         NULL,
    26         CLSCTX_INPROC_SERVER,
    27         IID_IGraphBuilder,
    28         (void**) &pGraph
    29         );
    30 
    31     // 如果创建失败 返回
    32     if (FAILED(hr))
    33     {
    34         return 0;
    35     }
    36 
    37     // 使用 Filter Graph Manager 得到 MediaControl & MediaEvent
    38     hr = pGraph->QueryInterface(IID_IMediaControl,(void**)&pControl);
    39     hr = pGraph->QueryInterface(IID_IMediaEvent,(void**)&pEvent);
    40 
    41     // 设置渲染一个视频文件
    42     hr = pGraph->RenderFile(L"E:/学习/WPF/VS2008WPFVideo07.wmv",NULL);
    43 
    44     if (SUCCEEDED(hr))
    45     {
    46         // 使用 pControl 的 RUN 方法,开始播放视频
    47         hr = pControl->Run();
    48 
    49         if (SUCCEEDED(hr))
    50         {
    51             // 等待播放结束
    52             long evCode;
    53             pEvent->WaitForCompletion(INFINITE,&evCode);
    54         }
    55     }
    56 
    57     // 释放资源
    58     pControl->Release();
    59     pEvent->Release();
    60     pGraph->Release();
    61     // 释放COM库
    62     CoUninitialize();
    63 
    64     return 0;
    65 }

    DirectShow 是基于COM 组件的, 所以在使用前最好先了解一下COM编辑的一些基础的知识.

    最近也是刚开始接触DS ,因为在做新媒体应用 的时候总是很常用到.所以很有了解学习的必要

    做了一个最简单的入门程序(来自己网络),用来敲开DirectShow的大门!!!

  • 相关阅读:
    设计模式学习总结系列应用实例
    【研究课题】高校特殊学生的发现及培养机制研究
    Linux下Oracle11G RAC报错:在安装oracle软件时报file not found一例
    python pro practice
    openstack python sdk list tenants get token get servers
    openstack api
    python
    git for windows
    openstack api users list get token get servers
    linux 流量监控
  • 原文地址:https://www.cnblogs.com/easyfrog/p/3391121.html
Copyright © 2011-2022 走看看