(DirectX系列03)DirectShow简单媒体文件播放

简介:     Directshow SDK提供了一种开放的开发环境,开发人员可以根据自己的需要制定各种组件。Directshow使用一种滤波器链表(Filter Graph)的模型来管理整个数据流的处理流程,每个部分都是COM组件,形成模块化,参与数据处理的模块就是滤波器(Filter)。

    Directshow SDK提供了一种开放的开发环境,开发人员可以根据自己的需要制定各种组件。Directshow使用一种滤波器链表(Filter Graph)的模型来管理整个数据流的处理流程,每个部分都是COM组件,形成模块化,参与数据处理的模块就是滤波器(Filter)。

     上几周学习DirectSound做了些总结,今天开始学习DirectShow今天主要介绍一个简单的媒体文件播放的程序。

     首先来介绍下DirectShow的环境搭建,其实环境的搭建并不是很难,但是下载SDK确实发费了不少时间。现在来做一个总结,经过测试下载dxsdk_feb2005_extras.exe软件是正确的,将这个文件解压到制定的目录,会出现Directshow和Directsound两个目录,再将这两个目录拷贝到F:/Microsoft DirectX SDK (February 2010)目录(即DX安装目录),这样的话就基本上配置好环境了。但是在工程里面还需要附加文件目录和LIB目录,这里就不详细介绍了,如下来介绍简单的代码,这部分代码来自《VC++音频/视频处理技术及工程实践》书中。

      创建过滤器管理器

IGraphBuilder *pGraph = NULL;

hr=CoCreateInstance(CLSID_FilterGraph, NULL,CLSCTX_INPROC_SERVER,

                               IID_IGraphBuilder, (void **)&pGraph);

    查询媒体控制器和媒体事件接口

hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);

    开始播放

hr = pGraph->RenderFile(L"D://DXSDK//Samples//Media//ruby.avi", NULL);
  if (SUCCEEDED(hr))
  {
      // 运行图表.
      hr = pControl->Run();
      if (SUCCEEDED(hr))
      {
          //等待回放结束事件.
          long evCode;
          pEvent->WaitForCompletion(INFINITE, &evCode);
         // 切记: 在实际应用当中,不能使用INFINITE标识, 因为它会不确定的阻塞程序
      }
  }

目录
相关文章
|
7月前
|
开发工具 C# C++
Windows平台RTMP|RTSP播放器实现画面全屏功能
我们在Windows平台实现RTSP或者RTMP播放的时候,有个功能是绕不开的,那就是播放窗口全屏。本文就以大牛直播SDK(官方)的Windows播放器为例,大概讲下大概实现:
154 0
|
7月前
|
编解码 应用服务中间件 开发工具
Windows平台RTMP|RTSP播放器为什么要兼容GDI绘制
先说结论,Windows平台播放渲染这块,一般来说99%以上的机器都是支持D3D的,实现GDI模式绘制,除了为了好的兼容性外,在远程连接的场景下,D3D创建不成功,需要使用GDI模式。
|
7月前
|
数据处理 开发工具 Android开发
Android平台RTMP/RTSP播放器开发系列之解码和绘制
本文主要抛砖引玉,粗略介绍下Android平台RTMP/RTSP播放器中解码和绘制相关的部分(Github)。
|
编解码 Windows 内存技术
QT应用编程: 基于FFMPEG设计的流媒体播放器(播放rtmp视频流)
QT应用编程: 基于FFMPEG设计的流媒体播放器(播放rtmp视频流)
618 0
QT应用编程: 基于FFMPEG设计的流媒体播放器(播放rtmp视频流)
|
编解码 缓存 安全
FFmpeg简易播放器的实现3-音频播放
基于 FFmpeg 和 SDL 实现的简易视频播放器,主要分为读取视频文件解码和调用 SDL 播放两大部分。本实验仅研究音频播放的实现方式,不考虑视频。
370 0
FFmpeg简易播放器的实现3-音频播放