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的大门!!!

  • 相关阅读:
    k8s笔记0528-基于KUBERNETES构建企业容器云手动部署集群记录-4
    k8s笔记0528-基于KUBERNETES构建企业容器云手动部署集群记录-2
    Mysql索引最佳实践笔记0524
    Mysql 5.6 编译报错
    MySQL 源码安装规范
    CentOS 7.3安装Zabbix3.2
    Mysql for Mac 安装及环境配置
    win10下Resin安装--入门(1)
    React---入门(1)
    SVN简介与安装
  • 原文地址:https://www.cnblogs.com/easyfrog/p/3391121.html
Copyright © 2011-2022 走看看