VLC如何装载功能模块

来源:互联网 发布:软件架构包含服务器吗 编辑:程序博客网 时间:2024/06/05 02:08

http://blog.csdn.net/buffi/article/details/7175965

VLC如何装载功能模块?

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需要解码器模块,将打开所有的解码器模块哦,直到找到一个匹配的模块。



具体做法:

  1. 打开所有的模块,按照匹配值分数从大到小配列;

  2. 调用模块的Open函数。如果模块返回OKVLC将装载该模块。

关于模块装载的进阶信息

分数为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 :视频输出,显示图像,如Direct3DXv