VLC由一个运行核和多个功能模块组成。
没有功能模块,VLC做不了什么事情。功能模块提供大部分我们需要的功能。
VLC 有两个主要属性:
-
能力(VLC_MODULE_CAPABILITY):决定模块的类别。
-
分数( VLC_MODULE_SCORE):模块装载的优先级。
模块如何被装载
当第一次装载VLC的时候,程序扫描默认的插件目录(该目录包含VLC模块),并生成一个缓冲区,在VLC需要的时候,可以很快装载模块。模块根据功能组织成多个目录,这些目录是插件目录的子目录。
近期版本的VLC需要模块名字遵守一定的规范,否则,无法装载。模块按照下面的格式进行命名:libmodule_name_plugin.ext,这里模块名字需要小写。Ext为系统库扩展名。例如: windows系统上的http访问模块就为libaccess_http_plugin.dll。
当VLC需要模块的时候,会尝试打开与请求的能力匹配分数比较高的模块。
下面举一个例子。
当VLC需要解码器模块,将打开所有的解码器模块哦,直到找到一个匹配的模块。
具体做法:
-
打开所有的模块,按照匹配值分数从大到小配列;
-
调用模块的Open函数。如果模块返回OK,VLC将装载该模块。
关于模块装载的进阶信息
分数为0
如果模块的分数为 0,就需要显示调用或调用,如强制编解码或视频输出。
all,none 和其它选项
-
"all"模式表示所有的模块先按照分数大小进行将序排列,然后调用。
-
"none"模式表示不需要检测模块的匹配分数。
-
任何模块都可以直接使用它的短文件名称进行调用。该方法可以用于分数为0的模块。
例子
模块请求时,可以使用模块链。如 :
--codec avcodec,all 在所有模块里面,优先使用avcodec模块。 --demux avformat,none 只尝试avformat模块
默认情况下,模块请求的时候在 "全部"模式,"全部" 可以省略。
如何显示模块清单
-
控制台: vlc --list
-
GUI 界面:Menu -> Tools -> Pluginsand extensions
功能模块主要功能
-
audiofilter : 语音滤波器,如均衡器。
-
audiomixer : 语音通道混合器,如downmixer ?
-
audiooutput : 语音输出,如WindowsDirectX语音输出
-
decoder : 解码器,如theora
-
demux : 解复用器,可以打开一个文件,如mkv
-
encoder : 编码器,如x264
-
interface : 用户界面,如Qt界面
-
metareader : 元都取器,可以都去元数据
-
packetizer :打包器,估计用于网络数据
-
playlistexport : 保存播放清单的模块,输入到文件如m3u
-
services_discovery :从网络或计算机获取额外信息的模块,如 Upnp,DLNA 。
-
soutaccess : 访问媒体流
-
soutmux : 编码和流传输的复用器
-
stream_filter :流滤波器。
-
textrenderer : 在图像上显示子标题或文本的模块
-
videofilter : 视频滤波器,如调节对比度。
-
Visualization2 :可视化模块,可以从音频数据中创建视频图像。
-
vout display :视频输出,显示图像,如Direct3D或Xv