vlc从整体框架上来说,就是设计了一套module管理机制,将功能分类并抽象成modules。例如播放器相关的如demux decoder access output这些都成了vlc的modules。新添加一个功能(新的媒体容器格式demux、新的解码器、新的编码器)只要遵循这套机制,自己完成这个子module就可以了。所以说vlc依赖的是这些modules。没有modules其实啥也干不了。
libVLCcore: libvlc的核心,抽象出了一个libvlc_instance_t 对象。modules的装载/卸载机制。还有一套多媒体相关的操作接口。如:input, multiplexing, demultiplexing, audio output, video output.
modules:modules提供了具体的功能。根据编译配置modules数量200-400之间。根据功能的分类可分成输入输出(文件、网络、cd)、编解码(mp3、264 )、模块化的GUI(基于qt、mac)
External libraries:开源软件都在秉承着不重复造轮子的思想。所以vlc本身也依赖了大量的外部开源库,如知名的ffmpeg、qt、live555等。
VLC main:player的main。初始化libVLC 并加载用户界面,注意vlc的用户界面也是已module的形式存在。
基于libvlc 我们就能自己开发自己的播放器了。
modules 按照功能大致分类
vlc 也提供了一个模块列表 点击打开链接