求助:OBS-Websocket窗口投影器projectorGeometry参数格式说明或示例
OBS-Websocket projectorGeometry 参数格式说明
参数本质:
projectorGeometry是Qt中QRect对象的二进制序列化数据经过Base64编码后的字符串,并非JSON结构编码产物。Qt会将QRect包含的x、y(窗口左上角坐标)、width、height(宽高)四个整数按序列化规则转换为二进制流,再做Base64编码得到该参数值。编码示例:
- 假设要设置窗口位置为(100, 200),宽800、高600,对应QRect实例为
QRect(100, 200, 800, 600) - Qt序列化时,会按小端字节序将四个int32值依次写入二进制流(每个int占4字节),对应二进制数据为:
- 100 →
0x64 0x00 0x00 0x00 - 200 →
0xC8 0x00 0x00 0x00 - 800 →
0x20 0x03 0x00 0x00 - 600 →
0x58 0x02 0x00 0x00
- 100 →
- 将上述二进制数据拼接后做Base64编码,得到有效值:
ZAAAAAIAAAAoAAAADAAAA==
- 假设要设置窗口位置为(100, 200),宽800、高600,对应QRect实例为
快速生成方法:
可以用Qt代码直接生成目标编码,示例代码如下:#include <QRect> #include <QByteArray> #include <QDebug> int main() { QRect rect(100, 200, 800, 600); QByteArray data; QDataStream stream(&data, QIODevice::WriteOnly); stream << rect; qDebug() << data.toBase64(); return 0; }运行后输出的Base64字符串可直接作为
projectorGeometry参数传入。注意事项:
- 不同平台的Qt序列化规则可能存在微小差异,但核心逻辑都是QRect二进制序列化+Base64编码
- 请勿尝试将JSON结构编码后转Base64,此方式无法被OBS-Websocket识别
内容的提问来源于stack exchange,提问作者Alain
相关产品推荐
相关产品推荐

