VLC的整体框架是设计成一套module的管理机制,将功能分类并抽象成modules。 VLC main: player的main。初始化libVLC 并加载用户界面。 libVLCcore:libvlc的核心,抽象出了一个libvlc_instance_t 对象,提供modules的装载/卸载机制。 modules: modules提供具体的功能,比如上面的access,demux,decode就是以一个模块的形式存在。 External libraries:外部开源库。
下面将VLC中各modules串起来的流程:
优点:
1.跨平台,兼容性好;
2.功能全面,支持rtsp、rtmp、ftp、http、https等协议;
3.代码完全解耦,modules相互独立,不影响,引入新modules方便;
4.维护团队强大,更新频繁;
缺点:
1.Android平台编译出的包较大,有16M左右;
IjkPlayer
IjkPlayer 是BiliBili公司维护的一个开源工程,是基于ffmpeg开发的一个播放器软件,目前支持Android和iOS两种平台,ffmpeg是音视频领域的大山,基本上做音视频开发的根本绕不过去,所以ijkplayer采用ffmpeg作为音视频播放器的基础也是可以理解的; ffmpeg中提供了ffplay