【OBS Studio】脚本自动生成大量场景思考实践

一、哔哔一下,马上出发

作为一名偷懒爱好者,
不喜欢做重复的工作,
一直信奉一个理念:
复杂的事情简单化,
简单的事情标准化,
标准的事情流程化,
流程化然后自动化。

如何思考:
第一步,复杂问题简单化,解剖,理解,分解成一个个小的简单问题
第二步,简单问题数量化,分门别类,归类成,共有数量多少的简单问题
第三步,根据数量化归分好的,分别做一种程序,就像编程,流水线一样,固化,提高时效。
第四步,程序化的各个分支,进行关系建立,形成解决原本复杂问题的一套体系,一套方法论。
没有简单,就没有复杂。复杂的事情实际上是由简单的事情组成的,因此思考时候要从简单出着手,一个个的简单要素突破之后,复杂的问题也就解决了。

二、流程分析

流程分析也是一个进行深入的思考的过程
1、灵感收集 2、搭建骨架 3、框架填充 4、按照框架自动化

在这里插入图片描述

三、脚本分析

使用工具:
OBS Studio
神级代码编辑软件(Sublime Text)
神级文件比较软件(UltraCompare)
开发工具PyCharm

1、使用OBS Studio导出脚本

新建OBS场景,简单一点,建两个场景,两个是为了方便对比,每个场景里面一张素材,然后导出。

2、使用Sublime Text打开OBS脚本

Sublime Text的jsFormat插件,解析脚本。查看脚本,寻找规律
在这里插入图片描述

3、手动分析脚本,尝试可行性

第一步 手动拆解脚本在这里插入图片描述
第二步 手动添加尝试

在这里插入图片描述

第三步 OBS测试可行性

在这里插入图片描述

四、开发实践

开发很简单,生成的脚本是压缩过的文本。

第一步 尝试编写代码

party = input('请输入会议名称:')
name = input('请输入场景名称:')
imgname = input('请输入图片名称:')
num = int(input('请输入幻灯片页数:'))
sab=''
sdatas =''

sa = '{"current_program_scene":"%s","current_scene":"%s","current_transition":"渐变","groups":[],"modules":{"auto-scene-switcher":{"active":false,"interval":300,"non_matching_scene":"","switch_if_not_matching":false,"switches":[]},"captions":{"enabled":false,"lang_id":2052,"provider":"mssapi","source":""},"decklink_captions":{"source":""},"output-timer":{"autoStartRecordTimer":false,"autoStartStreamTimer":false,"pauseRecordTimer":true,"recordTimerHours":0,"recordTimerMinutes":0,"recordTimerSeconds":30,"streamTimerHours":0,"streamTimerMinutes":0,"streamTimerSeconds":30},"scripts-tool":[]},"name":"%s","preview_locked":false,"quick_transitions":[{"duration":300,"fade_to_black":false,"hotkeys":[],"id":4,"name":"裁切"},{"duration":300,"fade_to_black":false,"hotkeys":[],"id":5,"name":"渐变"},{"duration":300,"fade_to_black":true,"hotkeys":[],"id":6,"name":"渐变"}],"saved_projectors":[],"scaling_enabled":false,"scaling_level":0,"scaling_off_x":0.0,"scaling_off_y":0.0,"scene_order":['%(name,name,party)
sb = '],"sources":['
sc = '{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"image_source","mixers":0,"monitoring_type":0,"muted":false,'
sd = '"prev_ver":453050371,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":'
se = '"sync":0,"versioned_id":"image_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":'
sf = '"id":"scene","mixers":0,"monitoring_type":0,"muted":false,'
sg = '"prev_ver":453050371,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":1,"items":[{"align":5,"bounds":{"x":1920.0,"y":1080.0},"bounds_align":0,"bounds_type":2,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":false,'
sh = '"pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},'
si = '],"transition_duration":300,"transitions":[]}'
for i in range(1,num+1):
    saa = '{"name":"%s%d"},'%(name,i)
    sab +=saa
    scc = '"name":"%s%d",'%(imgname,i)
    sdd = '{"file":"幻灯片%d.jpg"},'%(i)
    see=' {"OBSBasic.SelectScene": [], "libobs.hide_scene_item.%s%d": [],"libobs.show_scene_item.%s%d": []},'%(imgname,i,imgname,i)
    sff= '"name":"%s%s",'%(name,i)
    sdata = sc+scc+sd+sdd+se+see+sf+sff+sg+scc+sh
    sdatas +=sdata
datas = sa + sab[:-1] + sb + sdatas[:-1] + si
print(datas)
f = open('huandengpian.json',mode='w',encoding='utf-8')
f.write(datas)

第二步 脚本测试对比

此阶段是一个反反复复的过程,生成的脚本导入OBS,UltraCompare分析比较在和之前成功的脚本进行对比。
在这里插入图片描述

第三步 调试优化

以下省略无数步繁琐操作

第四步 脚本封装

每次使用Pycharm太麻烦,尝试封装成exe程序,在未安装python的电脑上也可以使用
在这里插入图片描述

五、迭代优化

初步实现了脚本自动化并不是一劳永逸的事情,不同的场景需要进行优化。
世界上并没有完美的程序,因为写程序本来就是一个不断追求完美的过程。
在自我更新迭代中成长,每一次程序升级,都会把学到的经验写成代码,进行归档,你当成长,且自有力量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值