对于不了解OBS的人,OBS是流媒体使用的一种开源广播软件,用于将其内容广播到Twitch或类似的流媒体站点。 它是为数不多的针对流媒体的竞争产品之一,它是免费的,并且自大约一年前开始,它就进入了多平台,允许OS X和Linux用户无需使用Windows就可以开始流媒体。
OBS的一项很酷的功能是用户可以为其编写插件来丰富其体验。 最初的Windows版本的OBS仅具有一个名为CLR浏览器源的插件,该插件允许流媒体将其动态内容,通知,聊天等Web内容包含到其流中。 当OBS的多平台版本发布时,该插件的新版本以以下名称发布:
OS X和Windows兼容的obs浏览器。 在发行时,它使用的是Chromium 38(还有使用Chromium 41的实验版本)。 随着时间的流逝,将发布新版本的Chromium,并且插件已更新为支持这些版本,但仅适用于Windows。 截至2周前,Windows插件使用的是Chromium 48/49,但OS X版本仍停留在Chromium 41上。这意味着在OS X上运行的叠加层开发人员无法可靠地开发所需的叠加层,因为他们没有跨平台的浏览器奇偶校验。
现在我个人不使用OBS进行流传输,并且我的大部分叠加开发工作都集中在支持XSplit(一种不同的Windows广播软件)上,甚至认为我在OS X上进行了大部分开发工作。因此,不使用OBS我从来没有真正关心过
Obs浏览器。 但是最近我开始着手进行一些最终会被使用的项目,因为我不希望在Windows和OS X之间不断切换,因为这减慢了我的工作流程。 同时,另一个我经常观看的流媒体Avalonstar正在开发基于React的叠加层,他一直遇到OS X上obs-browser使用的旧Chromium版本引起的问题。
因此,我决定进行调查,以找出为什么插件从未更新过OS X的原因,甚至认为Windows版本仍在继续更新。
这是我发现的:
- 该插件最初是为OS X开发的
- 撰写此书的人也是OBS核心团队的成员
- 他一直忙于其他事情,只是没有时间使用该插件
- 虽然OBS论坛上的一名mod负责保持Windows版本的更新,但他没有太多的OS X开发经验,也不知道如何构建OS X版本。
- OBS论坛上没有其他人能够弄清楚如何构建OS X版本
在这一点上,我只需要研究阻碍OS X构建的因素。 因此,就像其他与开放源代码软件有爱/恨关系的开发人员一样,我为obs-browser项目运行了“ git clone”,并决定研究构建它。 马上我碰壁了……obs-browser项目依赖于libobs,我找不到它,因为我可以在某个地方预先构建一些东西来将项目链接到。 经过一番挖掘,事实证明,要在OS X上构建插件,实际上它必须作为完整obs-studio构建的一部分包含在内。 因此,在解决了这一障碍之后,对obs-studio构建文件进行了一些小的修改,以包括obs-browser,我们现在可以很好地了解发生了什么。
我启动了该版本,但是找不到Chrome嵌入式框架(CEF)库。 在OBS和CEF论坛上进行了更多研究,我发现obs-browser查找CEF所需的构建开关,我们正在取得一些进展。 obs-browser代码终于开始编译了,而SLAM,我们碰到了另一堵墙。 该体系结构缺少符号,抱怨std ::函数。 事实证明,默认情况下,CEF使用libstd,而OBS使用libc ++(由于它们使用了某些C ++ 11功能)。 编辑CEF构建文件以使用libc ++,并将OS X SDK目标提高到10.7,可以解决该问题。
最后,我们链接到CEF,我们在构建过程中走得更远,我们进行了一些修复,将obs-browser的所有部分与CEF库链接在一起,并包含头文件,编辑一些新添加的c ++代码以扩展Windows版本的功能,将缺少的参数添加到已更改的功能中,我们终于可以进行构建了。 该项目已建立,并且所有内容都已链接! 它启动了OBS,添加了浏览器源,运行HTML5测试,我看到了以下内容……

……我就像是awwwww是的!!! 😀但实际上,我很高兴能在OS X上运行所有程序,因为显然有很多人已经等待了一年以上。 但是我们还没有完成。 由于仍然使用调试版本,因此该版本仍需要CEF的较早版本的旧工具脚本,自定义CSS功能不起作用,浏览器无法加载本地文件并且性能也不是最好的。 但是我至少可以取得一些进步,对吧……
以后几乎没有构建,这里有MP3支持和自定义css功能,但是本地文件仍然无法正常工作,尝试加载它们会使CEF完全崩溃。

我转回OBS论坛和OBS Dev聊天,它们都非常有用,但是由于CEF论坛,我终于找到了导致本地文件问题的原因。 找出原因后,我与更新了obs-browser Windows的Mod进行了聊天,他对本地文件设置进行了些微更改,突然之间,它在我的OS X构建上开始正常工作。 现在我们已经完成了功能,仅需对CEF版本进行更改以准备要与插件一起使用的发行版本即可。
我的更改已合并到主项目存储库中,并且看起来该插件将来将开始作为OBS核心模块的一部分提供。 OSS成功🙂
如果要查看必须对obs-browser进行的更改,可以在github上的我的分支中看到它们,在这里可以以代码形式查看此过程。
在评论中留下您的想法,我很快会再讲另一个项目故事!
在附近,
麦克风