Directshow的优点与缺点

2024-04-19 15:08
文章标签 缺点 优点 directshow

本文主要是介绍Directshow的优点与缺点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

   Directshow是微软研发出来的一个多媒体框架,它能实现常见多媒体应用的功能,比如文件/流的接收读取 、AV文件的解交织(Demux)、音视频的解码、音视频的同步、音视频的展现等。曾几何时,Directshow是Windows平台的一项热门技术,是做Windows多媒体开发的不二之选,在工业上应用得很广泛。现在市面上很流行的播放器,比如MPC,暴风影音,快播等,都是基于Directshow技术开发的。但是,随着时代的发展,一个框架如果不继续发展,总会有被淘汰的危险,或者被新的更好的框架代替。现在微软已经推荐开发员用他新的框架:Windows Media Foundation, 而使用Directshow来做开发的人也越来越少(看各大招聘网站上招Directshow程序员的职位数就知道了)。

   无可否认,Directshow是一个很优秀的框架,具有很多优点。它通过以Filter的形式将复杂的多媒体处理的工作封装起来,程序员通过访问COM接口就能够实现很丰富的多媒体应用功能,大大降低了多媒体开发的难度。比如做一个播放文件的应用,用Directshow只需要将各种解析文件的Source Filter或分离器,还有解码器、渲染器连接起来,连接成一个链路图(叫“Filter Graph”),然后运行起来就可以工作了。如果不需要自己开发底层Filter,程序员用Directshow开发要做的工作很少,开发难度不高。Directshow框架设计有两个核心的优点:1. Plug-in based,即基于插件式,将每个实现具体单一功能(decoding、filter、...)的单元称为一个组件(component),组件有相对固定的接口; 2. Pipeline-based,允许多个Filter通过接口间的Pin串联起来,以完成特定的功能。Directshow SDK带了很多内置的Filter,已经支持对大多数文件/流格式的分离、编码、解码、显示的功能,另外程序员可以自己开发Filter以扩充功能,所以使用Directshow有很好的扩充性。除此之外,Directshow还有一个很好的优点:具有很健全的文档和例子,很多细节说得很清楚,方便开发者入门。

    但是,Directshow也有自己的限制和缺点。由于其较好的封装性,隐藏了内部很多处理细节,对外暴露很少接口,当程序员要实现某些系统Filter无法满足的“特殊定制”功能时,需要自己开发Filter,发觉要了解很多Filter的知识,这时Directshow的缺点就暴露出来了。首先,开发一个功能完善的Filter不是一件容易的事,需要考虑很多细节,要理解Filter组件间的通信机制,比如:如何协商Pin之间的媒体类型,确定Output Pin的Sample的缓冲区大小、动态重连、状态转换、函数的加锁问题,以及如何处理音视频的时间戳同步。使用Directshow框架开发往往花很多时间在Filter接口的实现以及内部事件的处理上,要比纯粹不用Filter的方式做多很多“封装”的工作,结果造成开发周期延长。第二,缺乏灵活性,由于插件机制的存在,一切要遵守Directshow的接口规范,为保持插件间工作的独立性,不能直接访问另外一个插件的内部接口或数据,当要获取某个插件内部的信息时,本身是直接调一两个API就可以搞定的事却要绕一个大圈。第三,当创建的Filter链路分支很多时,用Directshow做起来很复杂。太多的Filter连接起来首先Filter之间拷贝数据有开销,还有要实现的功能点太多使得程序员要根据不同的情况构建不同的Filter  Graph,增加实现复杂度。第四,不能跨平台,这可能是大多数程序抛弃或不用Directshow框架的原因。因为现在操作系统平台很多,PC的操作系统就有Windows,Linux、Mac等,而移动平台的系统Android、IPhone也渐渐在用户中普及。软件公司做一个多媒体应用往往需要考虑移植到多个平台,但是由于Directshow绑定死了Windows平台,就限制了用户使用的系统范围,如果在别的系统上又要用其他方式重新实现,为何不用较为通用的支持跨平台的方案(比如Gstreamer)呢?

    所以,Directshow有优点也有很多缺点,并不适合任何场景的多媒体应用开发,大家要根据自己的使用场景和平台,选择合适的框架。

这篇关于Directshow的优点与缺点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917883

相关文章

【mysql 存储过程】应用存储过程的优点与缺点

总结下使用存储过程的优缺点 一、存储过程优点 存储过程是一组预先创建并用指定的名称存储在数据库服务器上的 SQL 语句,将使用比较频繁或者比较复杂的操作,预先用 SQL 语句写好并存储起来,以后当需要数据库提供相同的服务时,只需再次执行该存储过程。 1.具有更好的性能 存储过程是预编译的,只在创建时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,因

一体化导航技术的应用和优点

导航技术已经在人们日常生活中有着广泛的应用,而一体化导航技术,作为现代导航技术的重要发展方向,正在迅猛的进入市场并且展现出广泛的应用前景。那么它究竟有什么魅力?又是应用到哪些领域的呢?   1、一体化导航技术的定义   一体化导航‌是指将多种导航技术和相关功能集中到一个设备或系统中,来为人们提供全面、高效、准确、便捷的导航服务。   2、一体化导航技术的优点   它有高度的集成性。它将

数据库索引的作用优点和缺点

为什么要创建索引呢?这是因为,创建索引可以大大提高系统的性能。  第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。  第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。  第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。  第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。  第五,通过使用索引,可以在

java并发编程(5)--CAS是什么 底层原理 缺点

一、CAS是什么?   看下⾯代码进⾏思考,此时number前⾯是加了volatile关键字修饰的,volatile不保证原⼦性,那么使 ⽤AtomicInteger是如何保证原⼦性的? 这⾥的原理是什么?CAS   class MyData {volatile int number = 0;AtomicInteger atomicInteger = new AtomicIntege

NLP-生成模型-2014:Seq2Seq【缺点:①解码器无法对齐编码器(Attention机制);②编码器端信息过使用或欠使用(Coverage机制);③解码器无法解决OOV(Pointer机制)】

《原始论文:Sequence to Sequence Learning with Neural Networks》 Seq2Seq模型是将一个序列信号,通过“编码&解码”生成一个新的序列信号,通常用于机器翻译、语音识别、自动对话等任务。 Seq2Seq(多层LSTM-多层LSTM)+Attention架构是Transformer提出之前最好的序列生成模型。 我们之前遇到的较为熟悉的序列问题,

面向对象程序设计的思想的优点

以电视机为例:以面向对象观点的观点来看的话,电视机是一个类的实例,他由显示屏,遥控器,电源等小的小的对象组成,这些小对象是他的属性;而开关电视机,选台等可以理解为电视机的动作。 这种分析的好处是有利于实现更大型系统,而且维护会更简单些。 那么,如果我们使用面对过程的编程思想的话,就会变成,打开电视,调台,关上电视。每一次对系统更新的时候,我们必须要进行大量的修改

c语言 自定义类型--枚举 、联合 #枚举类型的定义 #枚举的优点 #枚举的使用 #联合类型的定义 #联合的特点 #联合大小的计算

文章目录 前言 一、枚举 (一)、枚举类型的定义  (二)、枚举的优点 (三)、枚举的使用 二、联合 (一)、联合类型的定义 (二)、联合的特点 (三)、联合大小的计算 总结 前言 路漫漫其修远兮,吾将上下而求索。  枚举、联合跟结构体很像,想要细致地了解结构的相关知识可以戳此链接:http://t.csdnimg.cn/1mymb 一、枚举 在

LaViT:Less-Attention Vision Transformer的特性与优点

引言 https://arxiv.org/pdf/2406.00427 随着计算机视觉领域的发展,视觉Transformer(ViTs)逐渐成为一项重要技术。尽管ViTs在捕捉图像中的长距离依赖关系方面表现出色,但其沉重的计算负担和潜在的注意力饱和问题一直是实际应用的障碍。为解决这些问题,微软提出了Less-Attention Vision Transformer(LaViT),旨在通过引入一种

WAF如何防护?细数Web应用防火墙10大优点

随着数字化转型的加速推进,网络安全已经成为企业发展的关键因素之一。WAF作为一款高性能、全方位的Web应用防火墙解决方案,为企业的数字化业务保驾护航。WAF仍然会是企业组织未来高级网络安全战略中不可或缺的组成部分,本文将探讨通过使用WAF(以长河 Web应用防火墙为例)可以为企业的数字化业务发展带来以下帮助: 1、满足合规要求 法规遵从是现代企业开展网络安全能力建设的主要推动因素之一。快快

拖拽式报表设计器优点好 实现流程化办公就靠它!

当前,实现流程化办公是很多企业都想要实现的目标。利用低代码技术平台、拖拽式报表设计器的优势特点,可以为企业降低开发成本、提升办公效率、创造更多市场价值。那么,您知道拖拽式报表设计器的优点是什么吗?通过本文一起了解拖拽式报表设计器的优势吧。 低代码开发凭条是一种创新技术工具,具有快速开发、低门槛参与和灵活定制等多个优势特点,可以帮助企业一起实现数字化转型发展。低代码开发是一种软件开发方法,旨在通过使