2019独角兽企业重金招聘Python工程师标准>>>

VLC 采用的是全模块化结构,在系统内部,动态载入所需的模块,放入一个module_bank的结构体进行统一管理,连VLC的Main模块也是通过插件的方 式动态载入的(通过module_InitBank函数在初始化建立module_bank时)。对于不支持动态载入插件的系统环境中,VLC也可以采用 builtin的方式,在VLC启动的时候静态载入所需要的插件,并放入module_bank统一管理。

VLC 的模块分成很多类别主要有:access、access_filter、access_output、audio_filter、 audio_mixer、audio_output、codec、control、demux、gui、misc、mux、packetizer、 stream_output、video_filter、video_output、interface、input、playlist等(其中黑体为核 心模块)。VLC无论是作为流媒体服务器还是多媒体播放器,它的实质思路就是一个“播放器”,之所以这么形象描述,是因为它实质处理的是ES、PES、PS、TS等流间的转换、传输与显示。对于流媒体服务器,如果从文件作为输入 即:PS->DEMUX->ES->MUX->TS;对于多媒体播放器如果采用UDP方式传输 即:TS->DEMUX->ES。

这里我简单的从流程,关键模块及其核心库libvlc进行说明我自己的理解。

1. 主要流程

1). 读取源数据;2)解封装; 3)解码;4) 渲染;

流程图描述如下所示:

2. 关键模块

1). Input Modules : 用于数据流(本地或者网络文件或者流)的读入;解封装,输出原始流ES(用于后续的解码操作);读取buffer中的数据进行交互;

2). Audio Modules:视频输出视频渲染,输出和窗口管理;多路复用模块用于格式封装,封装过程不涉及编解码过程;

3). Video Modules:视频输出视频渲染,输出和窗口管理;多路复用模块用于格式封装,封装过程不涉及编解码过程;

4). Stream Modules:音视频文件的解码操作;将解码后的数据流送入FIFO,进行渲染。

5). UI Modules:用户用户和vlc各module之间的交互线程管理

3. libvlc

vlc核心的是libvlc,它提供界面,应用处理功能,所有的libvlc的源代码都放在src目录及其子目录,其结构如下所示:

今天的总结就到这里了,欢迎大家多多点评指导啊。

转载于:https://my.oschina.net/starmier/blog/643720

VLC 关键模块结构分析相关推荐

  1. BK05-蓝鲸智云-标准部署-关键模块逐步操作

    新手建议按照详细步骤,关键模块逐步操作. 一是在部署失败时,容易定位原因: 二是可以熟悉架构. 安装 PaaS 平台 ./bk_install paas 详细步骤 PaaS 平台是蓝鲸产品的门户入口, ...

  2. PCIe学习(二):PCIe DMA关键模块分析之一

    简介     经过一段时间的学习,这里将PCIe DMA模式的学习结果做一个总结,由于手里没有包含PCIe的板子,因此和学习PIO一样对DMA模式中的关键模块的代码进行逐条分析,希望对和我一样的初学者 ...

  3. 转载 PCIe学习(二):PCIe DMA关键模块分析之一

    版权声明:本文为CSDN博主「CLGo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/cllovexyh/a ...

  4. 转载 PCIe学习(三):PCIe DMA关键模块分析之二

    版权声明:本文为CSDN博主「CLGo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/cllovexyh/a ...

  5. Grafana关键表结构分析

    Grafana默认使用SQLite存储数据表,默认数据库文件存储在/var/lib/grafana/grafana.db中,可以将文件拷贝到Widnows中,使用Navicat for SQLite进 ...

  6. VLC各模块名称及功能介绍

    [32;1m  zvbi                  [0;1mVBI 和 Teletext 解码器 [0m[32;1m  zip                   [0;1mZip 文件滤镜 ...

  7. 推荐系统笔记(关键模块)

    思维导图

  8. IF: 4+ 通过共表达网络鉴定急性心肌梗死患者血小板转录组关键基因模块和通路

    点击关注,桓峰基因 桓峰基因 生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你 81篇原创内容 公众号 这期分享一篇贼简单 ...

  9. windows 下VLC播放器应用之(三)------VLC-1.1.4命令行使用帮助

    引子 这是LIBVLC API解析系列的第三篇,主要介绍VLC命令行,如若转载请保证文章完整性及保留博客地址. VLC的命令行帮助可以在命令行下输入"VLC --help"得到简版 ...

最新文章

  1. 报告解读 | 实现智能制造的五大关键环节和四大赋能路径
  2. ElasticSearch_查询过滤排序
  3. cad打印样式ctb丢失_CAD制图初学入门之常见的CAD打印设置汇总
  4. JSR 303 - Bean Validation与Hibernate Validation 介绍
  5. Python使用递归法和函数式编程计算整数各位之和
  6. 关于IE、Firefox、Opera页面呈现异同(转载)
  7. Python 自动化库介绍 PySimpleGUI
  8. PIC单片机学习笔记
  9. layui + tp5分页(非数据表格渲染形式)
  10. 发帖机python_有没有自动发帖机,用python写得
  11. 破解三大安防视频痛点,看华为4大硬核视频上云技术
  12. Ubuntu 18.04 2080ti 安装显卡驱动
  13. 我打算写一个《程序员的成长课》
  14. 录屏工具ScreenToGif功能总结
  15. Mybatis--SqlSession对象创建过程
  16. 【数字图像处理】模拟Matlab的imresize()写一个你自己的imresize()函数,至少应实现‘nearest’和‘bilinear’两种方法
  17. 【bzoj4084】[Sdoi2015]bigyration hash
  18. html用js生成二维码
  19. L3-001 凑零钱 (30 分)
  20. 2016April Python学习笔记(pandasecharts)

热门文章

  1. java.lang AAPT_android R.java aapt
  2. 2019年热销微型笔记本计算机排名,2019年笔记本销量排行_电脑品牌排名:2019笔记本电脑前十排行...
  3. mysql查询枚举类型转换_zendframework获取数据库中枚举类enum的数据并将其转换成数组...
  4. LeetCode-笔记-48.旋转图像
  5. c51汇编语言处理多位数,汇编语言用循环输出多位数,结果溢出了,怎么解决?...
  6. php8支持哪些新特征,PHP8 新特性总结(一)
  7. java 友好时间显示_java 友好的显示时间
  8. Windows下Git Bash 远程仓库
  9. 10没有基于策略的qos_分布式QoS算法解析
  10. argument在python里什么意思_在Python中星号*是什么意思?