VLC
是一个自由的, 开源的跨平台多媒体播放器以及框架,可以播放大多数多媒体文件,以及 DVD 、音频、CD、VCD及各类流媒体协议.
1. 下载
源码下载后解压,会是这样的一个结构:
2. 模块介绍
- autotools:
- bin: 最终生成.exe目录
- compat: 包含了平台相关的一些代码
- contrib: 一些第三方库(编译过程中需要,手动编译需要提前下载好)
- doc: 文档(其实说白了就是一些log的说明)
- extras: 包含了一些额外的文件
- include: 整个工程需要用到的头文件
- lib: 生成vlc库的源代码(这里概念还不是很清楚….)
- m4: 宏处理器(都是一些 .m4 结尾的文件)
- modules: VLC 的模块
- po: 翻译文件(暂时也用不到)
- share: 包含了一些图标,脚本,皮肤(目前用到)
- src: 源码目录(很重要)
2.1 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: 可视化(…)
2.2 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: 测试脚本和代码
3. 编译
本博客的文章标有 原创 标签都属于作者原创文章,欢迎大家转载分享。 但是,希望您注明来源,并留下原文地址,这是对作者最大的尊重,也是对知识的尊重。