数字视频监控系统客户端设计+源代码+绪论 第3页
图2-1 DirectShow概览图2.2.2 VLC
VLC 多媒体播放器(最初为VideoLAN Client,是VideoLAN计划的多媒体播放器。)支援众多音讯与视讯解码器及档案格式,并支援DVD影音光碟,VCD影音光碟及各类串流协定。它也能作为unicast 或multicast的串流伺服器在IPv4 或IPv6的高速网路连线下使用。调用FFmpeg计划的解码器与libdvdcss程式库使其有播放多媒体档案及加密DVD影碟的功能。VLC概览图如下
图2-2 VLC概览图2.2.3 MPlayer
MPlayer是一款为Linux编写的电影播放器(在其他Unix 上也可运行,并且很多非x86CPU。)。它能播放大部分由许多本地,XAnim,RealPlayer及Win32 DLL解码器支持的MPEG, VOB, AVI, OGG/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, FLI, RM, NuppelVideo, yuv4mpeg, FILM, RoQ, PVA, Matroska文件。你也可以观看 VideoCD, SVCD, DVD, 3ivx, RealMedia, Sorenson, Theora, 及MPEG-4 (DivX)影片。MPlayer 另外一个很大的特点是支持广泛的输出驱动。它能工作在X11, Xv, DGA, OpenGL, SVGAlib, fbdev, AAlib, libcaca, DirectFB下,但你可以使用GGI及SDL(此种方式下的所有驱动) 以及一些低端的特定显卡驱动(针对Matrox, 3Dfx及Radeon, Mach64, Permedia3)!他们大多数支持软件或硬件视频伸缩,所以你能以全屏幕欣赏影片。 MPlayer支持一些硬件MPEG解码器的显示,例如 DVB及DXR3/Hollywood+。并且你认为那些又大又漂亮的不重名的有阴影修饰的包括欧洲ISO 8859-1,2(匈牙利语,英语,捷克语等等),西里尔语,韩语字体的子标题 (支持14种类型),以及屏幕显示(OSD)
此播放器能稳定的播放损坏的MPEG文件(对于一些VCD很有用),并且它能播放著名的 windows media player不能播放的损坏的AVI文件。甚至能播放没有索引部分的AVI文件,并且你还可以用-idx选项暂时重建索引,或者用 MEncoder永久性的建立索引,以此支持定位查找!如你所见,稳定性及质量是最重要的,但速度也让人赞叹。还有一套强大的拥有视音频处理功能的滤镜系统
2.2.4 GStreamer
GStreamer是一个创建流媒体应用程序的框架。其基本设计思想来自于俄勒冈(Oregon)研究生学院有关视频管道的创意, 同时也借鉴了DirectShow的设计思想。
GStreamer的开发框架使它有可能被用来编写任何类型的流媒体应用程序。基于GStreamer的程序开发框架使得编写任意类型的流媒体应用程序成为了可能。在编写处理音频、视频或者两者皆有的应用程序时, GStreamer可以让你的工作变得简单。GStreamer并不受限于音频和视频处理, 它能够处理任意类型的数据流。管道的设计对于一般应用的滤镜(filter)绰绰有余。这使得GStreamer成为一个优秀的框架,它甚至可以用来设计出对延时有很高要求的高端音频应用程序。
GStreamer最显著的用途是在构建一个播放器上。GStreamer已经支持很多格式的文件了, 包括:MP3, Ogg/Vorbis, MPEG-1/2, AVI, Quicktime, mod等等。从这个角度看,GStreamer更象是一个播放器。但是它主要的优点确是在于: 它的可插入组件能够很方便的接入到任意的管道当中。这个优点使得利用GStreamer编写一个万能的可编辑音视频应用程序成为可能。
GStreamer框架是基于插件的, 有些插件中提供了各种各样的多媒体数字信号编解码器,也有些提供了其他的功能。所有的插件都能够被链接到任意的已经定义了的数据流管道中。GStreamer的管道能够被GUI编辑器编辑, 能够以XML文件来保存。这样的设计使得管道程序库的消耗变得非常少。
GStreamer核心库函数是一个处理插件、数据流和媒体操作的框架。 GStreamer核心库还提供了一个API, 这个API是开放给程序员使用的---当程序员需要使用其他的插件来编写他所需要的应用程序的时候可以使用它。Gstreamer的概览图如下:论文网
http://www.751com.cn图2-3 Gstreamer概览图
设计是跨平台的,它是已知的在Linux上工作(86,PowerPC和ARM),Solaris操作系统(英特尔和SPARC)和OpenSolaris的FreeBSD,OpenBSD以及NetBSD和Mac OS X,微软Windows和OS/400。 GStreamer的已编程一样的Python,瓦拉的C + +,Perl中,吉尔和Ruby语言的GNU绑定。 GStreamer的授权下的GNU通用公共许可证。本文来自辣-文'论-文~网
综合上边的多种技术方案,最终以需求作为依据,选择了GStreamer做为视频回放管线的实现基础。首先,VLC和MPlayer虽然都是优秀的开源多媒体播放器项目,而且VLC更加有优秀的的插件结构,非常适合进行二次开发使用。当VLC和MPlayer的项目基础都是以多媒体播放器为目标,对于多视频数据流的并发的支持有较明显的不足,主要表现为对多个视频数据流的高精度同步的支持问题,因为作为一个媒体播放器,对多个视频数据流的同步问题明显不在需求的范围之内。然后,DirectShow和GStreamer是非常相识的技术,它们都是要实现一个通用的多媒体框架,而且它们的实现都基于非常相识的技术基础。至于选GStreamer而不是DirectShow主要是因为GStreamer能够很好地实现对跨平台支持,并且能和GTK等UI框架实现完美的兼容,而DirectShow是Microsoft Windows平台的专属技术
2.3 通用设备管理与控制
关于设备管理与控制没有现成的方案可以参考,需要自行设计和实现 。考虑到以后对新类型设备的兼容和支持,设备将会被以树形结构加以组织,最终将组成一棵设备数。如下图:
上一页 [1] [2] [3] [4] [5] [6] 下一页
数字视频监控系统客户端设计+源代码+绪论 第3页下载如图片无法显示或论文不完整,请联系qq752018766