开发人员指南
本节是对库兰托自身发展的全面指导。本文的目标读者是任何想参与为Kurento项目编写代码,或想了解该项目的源代码是如何构造的人。
如果您希望编写使用Kurento的应用程序,那么您应该阅读Writing Kurento应用程序。
目录
- 开发人员指南
- 介绍
- 代码库
- 开发101
- Libraries
- Debian软件包
- Build Tools
- Build from sources
- Install required tools
- Add Kurento repository
- Download KMS
- Install build dependencies
- Build and run KMS
- KMS Unit Tests
- Clean up your system
- Install debugging symbols
- Working on a forked library
- Full cycle
- In-place linking
- Debian packaging
- Dependency resolution: to repo or not to repo
- Package generation script
- How-To
- How to add or update external libraries
- How to add new fork libraries
- How to work with API changes
- Known problems
Introduction-介绍
这是KMS使用的工具和技术的概述:
- 代码是用C语言和C++语言编写的。
- 代码风格深受Gtk和GStreamer项目的影响。
- CMake是首选的构建工具,用于构建所有模块。
- 源代码在几个GitHub存储库中进行版本控制。
- 官方支持的平台是Ubuntu的长期支持(LTS)版本:Ubuntu 16.04(Xenial)和Ubuntu 18.04(Bionic)(仅64位)。
- GStreamer多媒体框架位于Kurento媒体服务器的核心。
- 除了GStreamer,KMS还使用其他库,如boost、jsoncpp、libnice等。
Code repositories-代码库
Kurento源代码存储在几个GitHub存储库中,网址为https://GitHub.com/Kurento。这些存储库中的每一个都有特定的用途,通常包含构建同名共享库所需的代码。
构成Kurento媒体服务器的所有回购之间关系的概述:
所有向图依赖项
由于依赖关系图不是严格的线性关系,因此有多种可能的方法将所有模块排序到线性依赖关系列表中;本节提供了一个可能的排序列表,该列表将在所有Kurento文档中一致使用。
Fork repositories-分叉存储库:
KMS依赖于几个开源库,其中主要的库是GStreamer。有时,这些库显示需要调整的特定行为,以便对KMS有用;有时,存在已修复的错误,但由于任何原因,上游源代码不接受修补程序。在这些情况下,虽然功能请求和/或补丁提交的正式路径仍在尝试中,但我们已经创建了受影响库的分支。
- jsoncpp
- libsrtp
- openh264
- usrsctp
- gstreamer (produces libgstreamer1.5)
- gst-plugins-base
- gst-plugins-good
- gst-plugins-bad
- gst-plugins-ugly
- gst-libav
- openwebrtc-gst-plugins
- libnice (produces gstreamer1.0-nice, gstreamer1.5-nice)
Main repositories-主要存储库
- kurento-module-creator:它是一个代码生成工具,用于生成插件的代码脚手架。此代码包括KMS代码和Kurento客户端代码。它主要有Java代码。
- kms-cmake-utils:包含一组用于使用cmake构建kms的实用程序。
- kms jsonrpc:Kurento协议是基于jsonrpc的,它使用了这个存储库中包含的jsonrpc库。它有C++代码。
- kms core:包含核心GStreamer代码。这是其他库所需的基本库。它有80%个C代码和20%个C++代码。
- kms-elements:包含提供WebRtc、Rtp、播放器、记录器等流水线功能的主要元素。它有80%个C代码和20%个C++代码。
- kms-filters:包含kms中包含的基本视频过滤器。它有65%个C代码和35%个C++代码。
- kurento-media-server:包含KMS的主要入口点。也就是说,服务器可执行代码的main()函数。此程序依赖于位于上述存储库中的库。它主要有C++代码。
Extra repositories-分叉存储库:
KMS依赖于几个开源库,其中主要的库是GStreamer。有时,这些库显示需要调整的特定行为,以便对KMS有用;有时,存在已修复的错误,但由于任何原因,上游源代码不接受修补程序。在这些情况下,虽然功能请求和/或补丁提交的正式路径仍在尝试中,但我们已经创建了受影响库的分支。
Omni-Build repository-构建存储库
这个储存库是一个特殊的项目,因为它被设计成从一个入口点构建所有KMS主储存库。此repo将其他KMS主存储库作为Git子模块:它使KMS开发更容易,因为如果您构建此项目,则不需要手动安装其他KMS主存储库的库。但是,所有其他开发和支持库仍必须手动安装。