DirectShow学习
+ -

DirectShow 简介

2021-02-24 1726 10210
欢迎加入官方QQ群:952873936或联系站长进行技术交流。

DirectShow是微软Windows操作系统平台关于多媒体架构的一套API接口。使用DirectShow,应用程序可以执行高质量的视频和音频播放或采集。

DirectShow提供高质量的多媒体流捕获和播放。它支持多种格式,包括Advanced Systems Format(ASF)、Motion Picture Experts Group(MPEG)、Audio Video Interleave(AVI)、MPEG Audio Layer-3(MP3)和WAV声音文件。它支持从基于Windows驱动程序模型(WDM)的数字和模拟设备或用于Windows的视频捕获。它自动检测并使用视频和音频加速硬件(如果可用),但也支持没有加速硬件的系统。

DirectShow基于组件对象模型(COM)。要编写DirectShow应用程序或组件,必须了解COM客户端编程。对于大多数应用程序,您不需要实现自己的COM对象。DirectShow提供了所需的组件。但是,如果要通过编写自己的组件来扩展DirectShow,则必须将它们实现为COM对象。

DirectShow是基于C++开发的,并且不支持C++的托管相关接口。

DirectShow简化了媒体播放、格式转换和捕获任务。同时,它为需要定制解决方案的应用程序提供对底层流控制体系结构的访问。您还可以创建自己的DirectShow组件以支持新格式或自定义效果。

DirectShow的微软官方文档:https://docs.microsoft.com/zh-cn/windows/win32/directshow/directshow

DirectShow开发包及安装

最开始DirectX SDK中包含以前版本的DirectShow SDK。最后一个包含DirectShow的DirectX SDK是DirectX 9.0 SDK Update - (February 2005) Extra。在此版本之后,DirectShow被移动到Windows SDK。若要获取最新版本的DirectShow标头、库和示例,请下载Windows SDK。

本人在当前Win10操作系统中,使用VS2019开发环境使用的是rtmpdirectshowfiltersetup.exe,有需要的同学可以加本站QQ群在群文件中下载。

rtmpdirectshowfiltersetup


本文的内容来原于本人对微软官方文档DirectShow的学习笔记,对于DirectShow具有学习需求的同学可以加本站QQ群952873936与站长交流。
微软件官方DirectShow文档:https://docs.microsoft.com/zh-cn/windows/win32/directshow/directshow

0 篇笔记 写笔记

Directshow获取颜色空间分辨率
void GetColorSpaceResolution(){ HRESULT hr; AM_MEDIA_TYPE *pmt = NULL; VIDEOINFOHEADER *pvi = NULL; VIDEO_STREAM_CONFIG_CAPS scc; IAMSt......
DirectShow时钟时间
DirectShow定义了两个相关的时钟时间:参考时间和流时间。参考时间是参考时钟返回的绝对时间。(见参考时钟。)流时间是相对于图形上次开始运行的时间定义的。图形运行时,流时间等于参考时间减去开始时间。图形暂停时,流时间保持在暂停时的流时间。寻道操作后,流时间重置为零。图形停止时,流时间未定义。当媒......
DirectShow 事件产生
要处理DirectShow事件,应用程序需要一种方法来确定事件何时在队列中等待。过滤器图形管理器提供了两种方法:窗口通知:每当出现新事件时,过滤器图形管理器就会向应用程序窗口发送用户定义的窗口消息。事件信号:如果队列中有DirectShow事件,Filter Graph Manager将向Windo......
DirectShow 图形过滤(Filter)管理器介绍
Filter Graph Manager也是一个COM组件,它是DirectShow的控制中心,它控制Filter的运行。它有以下几个功能:协调各个Filter的状态。Filter有运行,暂停,停止三种状态,在Filter Graph中,各个Filter的状态必须协调一到,否则会引起冲突。Filte......
DirectShow播放UVC设备第二路码流方法
双码流播放Graphi图如上。双码流视频设备有两路捕获输出pin, RenderStream函数只会连接第一路pin,要播放第二路码流需要手动获取第二路pin,然后去连接解码器,再手动连接render,就可以显示了。示例代码// m_pGB 是 IGraphBuilder对象// m_pBF......
USB供电PD 简介
USB-C都有很多用途。但这是因为支持设备(例如iPhone X)的快速充电而使其倍受青睐。通过称为Power Delivery(或更具体地讲,Power Delivery 2.0和3.0)的技术使这成为可能。 USB-C享有其所有可逆的优势,并可以以更高的电压和瓦数为设备充电,以提供更广泛的设备充......
DirectShow 体系结构
DirectShow技术是建立在DirectDraw和DirectSound组件基础之上的,它通过DirectDraw对显卡进行控制以显示视频,通过DirectSound对声卡进行控制以播放声音。DirectShow的体系结构如下图所示:DirectShow 位于应用层中。它使用一种叫 Filter......
HID 简介
 HID(Human Interface Device,人机接口设备)是USB设备中常用的设备类型,是直接与人交互的USB设备,例如键盘、鼠标与游戏杆等。在USB设备中,HID设备的成本较低。另外,HID设备并不一定要有人机交互功能,只要符合HID类别规范的设备都是HID设备。  Wndows操作系......
DirectShow实现视频的实时显示并抓图,可以设置视频参数
DirectShow抓图其实是使用IBasicVideo(IID_IBasicVideo)接口获取数据源,进行存储即可。IGraphBuilder* m_pGraphBuild = NULL;hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_......
DirectShow 过滤器之间数据交互
过滤器通过pin连接,连接的两个PIN在在上游过滤器叫做输出pin,下游过滤器的叫做输入pin。数据从上游过滤器传递给下游过滤器通过这两个上游过滤器的输出pin到下游过滤器的输出pin实现。通常,下游过滤器通过IMemInputPin::Receive来接收来自上游过滤器输出pin发送的数据。上下游......
DisplayPort 简介
DisplayPort(简称DP)是一个由PC及芯片制造商联盟开发,视频电子标准协会(VESA)标准化的数字式视频接口标准。该接口免认证、免授权金,主要用于视频源与显示器等设备的连接,并也支持携带音频、USB和其他形式的数据。此接口的设计是为取代传统的VGA、DVI和FPD-Link(LVDS)接口......
DirectShow数据流
本节介绍DirectShow的数据的工作方式进行介绍。通过滤器之间数据交互一节可知,数据是存在buffer中的。而每个buffer都由一个名为media sample的COM对象包装,该对象实现了IMediaSample接口。Sample由另一种类型的对象(称为分配器)创建的,它由IMemAlloc......
DirectShow 简介
DirectShow是微软Windows操作系统平台关于多媒体架构的一套API接口。使用DirectShow,应用程序可以执行高质量的视频和音频播放或采集。DirectShow提供高质量的多媒体流捕获和播放。它支持多种格式,包括Advanced Systems Format(ASF)、Motion ......
USB是什么,USB的优点、设备分类及传输方式有那些?
USB是由世界著名计算机和通信公司等共同推出的新一代接口标准,全称为Universal Serial Bus(通用串行总线),是一种快速、灵活的总线接口。它是为了解决日益增加的PC外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通信标准。USB一般分为USB低速,USB全速,USB高速和USB......
DirectShow Samples和Allocators
在看本节前,我们首先明确2个概念。通过前面的章节可知:Samples是DirectShow各过滤器之间传输的数据的封包。Allocators是用于创建Samples的分配器。本节将详细介绍Allocators和Sample的原理。当一个过滤器通过其输出管脚将多媒体数据传输给另一个过滤器(通过其输入管......
作者信息
USB中文网
B站搜索 站长漫谈 看视频。
pnpon内核开网,USB中文网,
busrom硬核技术网站长
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!