vlc源码的整体架构初步理解

来源:互联网 发布:淘宝种植箱图片及价格 编辑:程序博客网 时间:2024/05/19 18:46

之前,在公司的项目中用到了vlc播放远程的ts流,因此对于vlc有了一个比较初步

的了解。

首先,附上vlc的官方链接  

官网            http://www.videolan.org/

官网的wiki   https://wiki.videolan.org/

源码下载     http://www.videolan.org/vlc/download-sources.html

vlc是一个开源的视频解决方案,几乎包括了所有的视频,音频,字幕,图片(是的,你没看错,vlc也支持图片解码,如jpeg,png等等都有支持,打开源码就可以看到,可以用vlc播个图片试试)格式的编解码,还可以搭建流服务器(博主也没用过)。平台方面涵盖了web,linux,windows,android等等,是一个功能异常强大的sdk.

libVLC dev stack

官方提供的vlc的整体架构如上图所示,概括起来其实就是三层。

最底下的一层是vlc的基础,也就是它的核心库libVLC和libVLCcore,提供了最最基础的一些功能的api接口,核心库也可以用来进行简单的二次开发,官网上的wiki提供了很多例子和教程。

中间一层就是各种modules,因为vlc是使用模块加载的方法来加载各种功能的,所以这一层留给各位码农的开发空间非常大,从access到codec,demux等等可以自由拓展,可以照着源码里面的某一个module文件来编写自己的module,设定各种模块的描述和优先级,open,close函数等等,运行的时候程序会根据对应的已经加载的模块来进行遍历,如果满足条件就执行对应的模块。

最上面一层就是应用接口,vlc的图形界面使用的是qt.




下面简单介绍一下源码中的modules

下载源码之后解压,进入modules文件夹下,如下图



access是访问模块,包含各种常用的协议,如http,rtsp等等。

demux是解复用模块,可以将一个流里面包含的各种数据流(音频,视频,字幕)拆开,最常见的就是ts流。

codec是编解码模块,包含了常用的视频,音频,字幕,图片格式的编解码算法,如h264,h265,flac等等。

这几个模块是最为常见的需要增删修改的部分,基本的问题也都是在这里,因此别的部分就不做介绍了。



最后介绍一下目前几种常见的流处理方案。

Exoplayer    google官方的android端开源播放器,不过这名字。。。。。。尴尬,这个博主在android应用开发的时候用过,毕竟官方推荐,还是十分好用的,扩展性不错,支持的格式也比较多,上手比较快。

ffmpeg        这个就不多说了,名气太大了,感兴趣可以去看雷神的博客,唉,天妒英才。

bilibili的播放器    记不起叫啥名字了,想用的童鞋可以上git去搜一下,记得支持的格式不多,好像就是flv吧,主要是解决直播问题的,内部集成了上面提到的所有播放器的部分代码,真是海纳百川,赞一个。

经过简单的介绍,相信大家对于vlc的基础架构有了一个比较清楚的认识,本篇是vlc的基础,也是本人第一篇技术博客,写的不好的话请见谅,各位有什么意见或者建议的话也请直言不讳。后面的博客我会着重于项目中使用vlc遇到的问题进行讨论,更加实用。

欢迎各位阅读本篇博客,下期再见啦。








0 0
原创粉丝点击