obs-text-pango 是什么
首先介绍下OBS是什么,OBS - Free and open source software for live streaming and screen recording(OBS是一款开源的用于录屏直播的工具软件)。旧版的OBS只能支持Windows,目前已经停止开发。作者为了支持Windows/Mac/Linux重写了整个软件,项目地址为obs-studio in Github。
OBS项目的语言分布:
- C: 57.6%
- C++: 36.3%
- Objective-C/Objective-C++: 4%
- others: 3%
OBS代码主要包含这些部分:
- libobs: 核心代码,定义项目框架以及核心API,主要用C语言编写。
- UI: 界面代码,采用C++的QT框架,开发出适用三大平台的界面。
- plugins: 插件代码,可独立编译成dll(windows平台)或so(*nix平台),包含Source(录屏输入源)、Output、Service(各种流播服务)等全部被定义为插件。
- libobs-d3d11: 基于D3D的图形子系统,主要用在Windows系统。
- libobs-opengl: 基于opengl的图形子系统,主要用在*uix系统。
obs-text-pango是obs的一个文本插件plugins,它与obs本身提供的obs-text插件不同之处在于,它支持emoji,且用pango排版引擎实现,项目地址为obs-studio in Github,forked from reboot/obs-text-pango, 这个项目源码需要改进,编译出来是无法使用
如何编译
- 使用MSys2的pacman工具安装以下库
1 | pacman -S mingw-w64-x86_64-pkg-config |
- 下载obs-text-pango源码
1 | git clone https://github.com/kkartaltepe/obs-text-pango.git |
- 修改CMakeList.txt
1 | cmake_minimum_required(VERSION 2.8.12) |
- 使用window的cmd工具,以x64位的姿态打开,进入obs-text-pango目录,并输入以下命令
1 | mkdir mingw64 |
过程中遇到的问题
命令行使用msys2_shell.cmd,或者git-bash.exe,会遇到一个sh冲突的问题,所以只能用windows的cmd
cmake的时候使用-G “Visual Studio 14 2015 Win64”,项目能够编译过,且lib也能相互兼容,至少是c的lib,但链接的时候会有各种各样的问题,未深入去研究
cmake的时候使用-G “MSYS Makefiles”,也是各种问题,可能我安装的都是mingw64的库的原因吧
cmake的时候,想尽量静态编译,所以在CMakeLists.txt中加入以下语句,但在链接的时候提示各种各样奇怪问题,所以最后还是去掉
1 | SET(CMAKE_FIND_LIBRARY_PREFIXES "lib" "") |
- 纹理大小为0的时候,会导致程序崩溃,可能是obs新旧版本兼容问题