obs studio 插件
最近需要把obs studio做成虚幻5的插件,大概步骤如下
准备阶段
obs源码版编译和配置运行,我用的cmake-gui
需要提到一点,我没有严格按照官网说的去配置,因为官网的depencence本身并不完整,而且在windows平台下,有个更好用的开源包构建管理工具vcpkg,强烈推荐大家用这个,也希望有能力的伙伴加入维护,共建windows开源系统的开发环境。
只要cmake中报错缺失某个包,直接用vcpkg安装即可,然后把vcpkg的路径配置到
CMAKE_PREFIX_PATH这个变量里,也可以把官方的dependence和vcpkg一起配置到这个变量中。
遇到的问题:
运行时aac报错
因为aac编码是苹果的,下载苹果应用支持安装包
https://raw.githubusercontent.com/kiki-kiko/iTunes-12.3.1.23/master/AppleApplicationSupport64.msi
初步裁剪
obs studio本身作为一个完整的应用程序,拥有庞大的框架,并形成了一套自己的扩展体系,拥有QT作为UI系统的支撑,拥有自己的插件系统,在插件中支持多种编码格式和自有扩展,并且支持lua和python脚本扩展。因此整合之前,需要进行初步裁剪,剪掉
1 脚本系统:lua和python支持,也剪掉script通用工程。
2 插件系统:只保留用到的h264编码格式,其他功能和编码一律精简掉。
3 UI系统:虚幻有自己的一套UI,而且obs studio整合了QT框架做UI,这部分也必须精简掉。(尽量不要引入庞大的框架进入虚幻,否则后续的引擎升级和更新维护会很麻烦)
整合进UE5做成plugins
做成一个插件,提供基本的音视频设备初始化,采集和推流接口,供C++和蓝图调用。
插件功能
1 音轨和视频采集,视频来源支持两种:屏幕采集和摄像头数据采集
2 简单的播放器:播放音频和视频
实现步骤:
1 捕捉桌面视频和音频
2 copy到rendertarget,输出到UE5材质
3 推流到服务器(可用b站测试)
4 接受服务端的回流并显示