VLC架構和流程的详细解释.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VLC架構和流程的详细解释

VLC架构剖析 1. VideoLan简介 1.1 videolan组成 Videolan有以下两部分组成: VLC:一个最主要的部分,它可以播放各种类型的媒体文件和流媒体文件,并且可以创造媒体流并保存成各种格式的媒体文件,这些文件的质量要比没保存前的件好。videolan作为客户端可以播放本地文件,http://,rtsp://。 VLS:是一种流服务器,专门用来解决流的各种问题,它也具有一些VLC的特征。videolan作为服务器可以输出http,rtp,rtsp的流。 1.2 VLC优点 VLC是一种跨平台的媒体播放器和流媒体服务器,最初为videolan的客户端,它是一种非常简便的多媒体播放器,它可以用来播放各种各样的音视频的格式文件(MPEG-1、MPEG- 2、MPEG- 4、DivX、WMV、mp3、OGG、Vorbis、AC3、AAC等等)流媒体协议,最具特色的功能是可以边下载边观看Divx媒体文件,并可以播放不完全的AVI文件。并且支持界面的更改。VLC支持多种的操作系统,linux(rh9,Debian,Mandrake,Gentoo),BSD,windows,Mac OS X,Be OS,Solaris等等。支持带菜单的VCD,SVCD,和DVD,数字卫星频道、数字地球电视频道(digital terrestrial television channels),在这些操作系统下通过宽带IPv4、IPv6网络播放线上影片。此软件开发项目是由法国学生所发起的,参与者来自于世界各地,设计了多平台的支持,可以用于播放网络流媒体及本机多媒体文件,特别是它能直接播放未下载完整的多媒体文件。 下图表示出了VideoLan的解决方案: VideoLan Client是VideoLan项目(一个完整的MPEG-2客户/服务器解决方案)的一个组成部分。不过VideoLan Client也可以作为一个独立的程序来播放来自硬盘或者DVDROM的MPEG数据流。它目前支持GTK+、GNOME、KDE和QT,并且可以使用X11、Xvideo、SDL或者DirectX作为视频输出。对于声音,VideoLan Client支持OSS、ALSA和ESD。要访问DVD,VideoLan Client使用的是Libdvdcss库。它是一个简单的专为DVD访问设计的库。它可以像访问块设备一样访问DVD,而不用考虑解密问题。 2. VLC整体架构分析 2.1 LibVLC LibVLC是VLC的核心部分。它是一个提供接口的库,比如给VLC提供些功能接口:流的接入,音频和视频输出,插件管理,线程系统。所有的LibVLC源码位于src\及其子目录: Interface/:包含与用户交互的代码如按键和设备弹出。 Playlist/:管理播放列表的交互,如停止,播放,下一个,或者随机播放。 Input/:打开一个输入组件,读包,解析它们并且将被还原的基本流传递给解器。 Video_output/:初始化video显示器,从解码器得到所有的图片和子图片(如subtitles)。随意将它们转换为其它格式(如:YUV到RGB)并且播放。 Audio_output/:初始化音频mixer(混合器)。如:发现正确的播放频率,然后重新制作从解码器接收过来的音频帧。 Stream_output/:类似Audio_output。 Misc/:被libvlc其它部分使用的杂项,如线程系统,消息队列,CPU探测,对象查询系统,或者特定平台代码。 2.2 VLC VLC是一个纯粹围绕着LibVLC写成的程序。它是非常小的,但是功能很齐全的媒体播放器,归功于LibVLC的动态组件支持。 2.3 组件 组件位于modules\子目录,在运行时被加载。每一个组件提供不同的特征适应特定的文件的环境。另外,大量的不断编写的可移植功能位于audio_output\,vidco_output\和interface\组件,以支持新的平台(如:BeoS Mae OS X)。 组件中的插件被位于src\misc\modules.c和include\modules*.h中的函数动态加载和卸载。写组件的API描述如下,共3种: (l)组件描述宏:声明组件具有哪种优先级的能力(接口,demux2等等),还有GUI组件的实现参数,特定组件的配置变量,快捷方式,子组件等等; (2)Open(vlc_objeet_t*p_object):被VLC调用初始化这个组件,它被组件描述宏赋值给了结构体module_t中的pf_activate函数指针,被Module_Need调用; (3)Close(vlc_objeet_t*p_object):被VLC调用负初始化这个组件,保证消耗Open分配的所有资源。

文档评论(0)

fv45ffsjjI + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档