VLC系列文章
深入理解VLC之代码流程
VLC,著名的开源播放器项目,它虽然很庞大,但是在架构设计上也高度模块化。幸运的是,官方wiki非常详细,无论是大的架构设计,还是每一个模块里面的代码细节,都有详尽的介绍。wiki链接:https://wiki.videolan.org/Hacker_Guide/。
本文主要以vlc-android项目为例,介绍vlc的架构设计,参考了一篇对vlc架构分析得很好的文章:https://jiya.io/archives/vlc_learn_2.html
1. 代码结构
下载vlc-android项目代码并编译之后,得到主要目录结构如下
libvlc jni层以及java api
medialibrary 媒体数据库相关的代码
vlc native代码,后面分析的重点
vlc-android 应用的代码,编出来的apk就在vlc-andoird/debug目录下
在介绍vlc目录下的代码结构之前,先来说一下vlc的架构设计:
vlc的架构设计可以分作两层:
第一层是对整条播放通路(pipeline)的抽象,包含以下几个抽象概念
playlist: playlist表示播放列表,VLC在启动后,即创建一个playlist thread,用户输入后,动态创建input。
input: input表示输入,当用户通过界面输入一个文件或者流地址时,input thread 被动态创建,该线程的生命周期直