本文属于《ZLMediaKit源码分析》连载系列博客的第一篇,简要介绍了ZLMediaKit的功能定位、技术优势和源码目录结构。
ZLMediaKit是一个采用现代C++标准编写的开源项目,它既可以直接作为流媒体服务器使用,也可以作为音视频、流媒体相关应用(如:播放器、推流器、流媒体服务器二次开发)的SDK。
ZLMediaKit原生支持多种操作系统,比如Windows、Linux、macOS、Android、iOS等,开发调试都十分方便。
让我们先从源码目录开始分析。后文将采用“ZLMediaKit/”来表示ZLMediaKit源码的根目录,在这个目录下可以看到3rdpart、Android、api等子目录。
ZLMediaKit/目录下的内容描述如下:
子目录 | 内容描述 |
3rdpart | 第三方开源库,包含三个子目录,内容如下: (1) jsoncpp:用来处理json格式字符串的C++库。 (2) media-server:由老陈提供的C++媒体服务器,里面包含了若干媒体文件格式、传输协议的封装类。 (3) wepoll:epoll for windows。为Windows平台实现的仿epoll API。 (4) ZLToolKit:整个ZLMediaKit项目范围内通用的基础工具库,ZLMediaKit流媒体协议库和MediaServer应用程序就是基于这个库实现的。此库封装的功能包括日志、线程池、定时器、任务、缓冲区、套接字、事件处理循环、工具类等,由于它比较通用,因此可以作为“第三方开源库”给其它项目使用(包括ZLMediaKit项目)。 |
Android | 采用ZLMediaKit框架开发的Android版流媒体播放器。 |
api | 将C++风格的ZLMediaKit核心框架封装成纯C风格的API,供C程序调用。 |
cmake | 可供ZLMediaKit/CMakeLists.txt加载的cmake子模块。 |
conf | 包含流媒体服务器的配置文件config.ini |
docker | docker镜像构建脚本 |
package | rpm包支持 |
postman | restful接口测试工具postman的测试项目文件 |
release | 项目构建目标输出目录 |
server | 基于3rdpart和src目录中的模块开发的一个流媒体服务器。 |
src | ZLMediaKit流媒体开发库,主要由各种流媒体传输协议实现构成,还有Player、Pusher和Record等功能模块。 |
srt | SRT协议支持 |
tests | 测试代码 |
webrtc | WebRTC协议栈支持 |
webrtc_player | WebRTC播放器 |
www | 帮助文件 |
从这一篇文章开始,作者将会连载一系列文章,带读者全面领略流媒体领域的明星开源项目ZLMediaKit的技术风范。