有关操控obs
用命令行方式调用ffmpeg进行推流有几个重大缺陷,一个是切换视频时会导致断流,观众需要重新刷新。另一个是水印文字不可动态变化,这样就无法响应观众的点播结果。
于是只好转而去研究obs-studio。
obs通常情况下都是在界面操控的,这样无法实现根据观众的点播结果调整播放列表和用水印文字的形式反馈观众点播结果。
幸好obs有Websocket插件,对外提供了一系列接口,号称利用这些结果可以用程序完全操控obs,这也就可以实现我要的功能了。
新版obs已经自带此插件,用python的话,pip安装obsws_python模块就可以操控obs了。
然而,obsws_python模块本身的文档和例子很简单,基本上只写了如何切换场景。
所以只好去看源代码。
在reqs.py中,我看到了这个模块支持的所有控制方法。
其中,set_input_settings方法引起了我的注意。
传入input名(就是你在“来源”中添加的任何东西的名字)和有关这个input的设定参数,就可以动态修改这个input的内容。
如果input是文字,就可以修改显示在屏幕上水印文字的内容。
如果input是视频,就可以修改视频的内容。
有了这个方法,基本上就能实现我需要的所有功能了。比如动态修改显示在屏幕上的播放列表,反馈点播操作,以及一个视频播放完毕,动态加载点播数最高的视频。
然而,无论是要操作文字input,还是视频input,都需要传入setting。可我哪里知道每种input的具体setting是什么?
这个问题卡了我好久,文档写得很简略,搜索