前言
VLC 是一个自由的, 开源的跨平台多媒体播放器以及框架,可以播放大多数多媒体文件,以及 DVD 、音频、CD、VCD及各类流媒体协议.
Windows编译可以参考
VLCWikiForChinese/vlc-dev-guide/Compile-VLC/Compile-for-Windows-Native/Compile-for-Windows-Native.md at master · vlcchina/VLCWikiForChinese · GitHub
由于我们的目标是VS2019调试编译,因此上述仅仅是记录
下载
- 官网
- 各个版本下载地址FTP
- wiki
至少从这里我们可以知道如何下载VLC源码
模块介绍
- autotools:
- bin: 最终生成.exe目录
- compat: 包含了平台相关的一些代码
- contrib: 一些第三方库(编译过程中需要,手动编译需要提前下载好)
- doc: 文档(其实说白了就是一些log的说明)
- extras: 包含了一些额外的文件
- include: 整个工程需要用到的头文件
- lib: 生成vlc库的源代码(这里概念还不是很清楚….)
- m4: 宏处理器(都是一些 .m4 结尾的文件)
- modules: VLC 的模块
- po: 翻译文件(暂时也用不到)
- share: 包含了一些图标,脚本,皮肤(目前用到)
- src: 源码目录(很重要)
module 目录 结构
- access: 获取流时从不同的源进行
- access_output: 以不同的形式输出流
- arm_neno: arm 架构,包含了一些汇编代码
- audio_filter: 各种音频滤波器
- audio_mixer: 音量设置模块
- codec: 音视频编解码模块(FFMPEG 源码中类似)
- control: 动作控制功能(鼠标、手势)
- demux: 分离音频、视频、字幕等
- gui: 用户界面(一般用不到,就目前对于我来说)
- hw/vdpau: 使用 GPU
- 加速编解码(只是针对一部分流进行….)
- lua: 与 lua 脚本相关
- meta_engine: …
- misc: 多种格式解析
- mux: 将视频、音频、字母合并成某一个视频格式
- notify: …
- packetizer: 音视频打包
- services_discovery: …
- stream_filter: …
- stream_out: 流式输出模块
- text_renderer:文本渲染模块
- video_chroma: 图像格式转换(默认 YUV 到 RGB )
- video_filter: 视频过滤模块(饱和度、对比度)
- visualization: 可视化(…)
src 目录 结构
- android: android平台相关模块代码
- audio_output: 音频输出
- config: 配置相关
- darwin: Mac(Darwin) 平台专用
- extras: 一些平台特殊代码
- input: 获取流(这里建立并读取一个输入流,并分离其中的音频和视频,然后将分离好的音视频发送给解码器)
- interface: 接口
- misc: 其他功能(如数据库管理、CPU检测)
- modules: 模块管理
- network: 网络接口
- os2: OS/2平台专用
- playlist: 播放器列表控制
- posix:与 PISIX ( 可移植操作系统接口)相关
- stream_output: 输出音视频流到网络
- text: 字符集
- video_output: 初始化视频播放器,把从解码器得到的视频画面转化格式后播放(YUV-RGB)
- win32: windows平台相关代码
- test: 测试脚本和代码
工程结构
工程分为compat、libvlccore、libvlc、plugins
compat为基础,提供平台无关的库,libvlccore、libvlc均依赖于它。libvlc同时依赖libvlccore
plugins依赖compat