VLC架构剖析架构剖析
1VideoLa
简介
11videola
组成
Videola
有以下两部分组成VLC一个最主要的部分,它可以播放各种类型的媒体文件和流媒体文件,并且可以创造媒体流并保存成各种格式的媒体文件,这些文件的质量要比没保存前的件好。videola
作为客户端可以播放本地文件,httP,rtsp。VLS是一种流服务器,专门用来解决流的各种问题,它也具有一些VLC的特征。videola
作为服务器可以输出httP,rtP,rtsp的流。
12VLC优点
VLC是一种跨平台的媒体播放器和流媒体服务器,最初为videola
的客户端,它是一种非常简便的多媒体播放器,它可以用来播放各种各样的音视频的格式文件MPEG1、MPEG2、MPEG4、DivX、WMV、mp3、OGG、Vorbis、AC3、AAC等等流媒体协议,最具特色的功能是可以边下载边观看Divx媒体文件,并可以播放不完全的AVI文件。并且支持界面的更改。VLC支持多种的操作系统,li
uxrh9,Debia
,Ma
drake,Ge
too,BSD,wi
dows,MacOSX,BeOS,Solaris等等。支持带菜单的VCD,SVCD,和DVD,数字卫星频道、数字地球电视频道digitalterrestrialtelevisio
cha
els,在这些操作系统下通过宽带IPv4、IPv6网络播放线上影片。此软件开发项目是由法国学生所发起的,参与者来自于世界各地,设计了多平台的支持,可以用于播放网络流媒体及本机多媒体文件,特别是它能直接播放未下载完整的多媒体文件。下图表示出了VideoLa
的解决方案
fVideoLa
Clie
t是VideoLa
项目一个完整的MPEG2客户服务器解决方案的一个组成部分。不过VideoLa
Clie
t也可以作为一个独立的程序来播放来自硬盘或者DVDROM的MPEG数据流。它目前支持GTK、GNOME、KDE和QT,并且可以使用X11、Xvideo、SDL或者DirectX作为视频输出。对于声音,VideoLa
Clie
t支持OSS、ALSA和ESD。要访问DVD,VideoLa
Clie
t使用的是Libdvdcss库。它是一个简单的专为DVD访问设计的库。它可以像访问块设备一样访问DVD,而不用考虑解密问题。
2VLC整体架构分析
21LibVLC
LibVLC是VLC的核心部分。它是一个提供接口的库,比如给VLC提供些功能接口流的接入,音频和视频输出,插件管理,线程系统。所有的LibVLC源码位于src及其子目录I
terface包含与用户交互的代码如按键和设备弹出。Playlist管理播放列表的交互,如停止,播放,下一个,或者随机播放。I
put打开一个输入组件,读包,解析它们并且将被还原的基本流传递给解器。Video_output初始化video显示器,从解码器得到所有的图片和子图片如subtitles。随意将它们转换为其它格式如YUV到RGB并且播放。Audio_output初始化音频mixer混合r