OBS 日期时间.毫秒时间脚本 date-and-time.lua
文章目录
- OBS 日期时间.毫秒时间脚本:
- 效果
OBS 日期时间.毫秒时间脚本:
obs = obslua
source_name = ""last_text = ""
format_string = ""
activated = false-- 此函数用于获取精确的毫秒级时间戳,适用于 Linux 系统
local function getMillisTimestamp()local sec, usec = os.time(), os.clock()local millis = math.floor((sec + usec) * 1000)return millis
end-- Function to set the time text
function set_time_text()-- local text = os.date(format_string)-- local date_table = os.date("*t")-- local ms = string.format("%.3f", os.clock()) -- local hour, minute, second = date_table.hour, date_table.min, date_table.sec-- local year, month, day = date_table.year, date_table.month, date_table.day -- local text = string.format("%s", ms)local date_table = os.date("*t")local hour, minute, second = date_table.hour, date_table.min, date_table.seclocal year, month, day = date_table.year, date_table.month, date_table.day-- 获取毫秒级时间戳local millisTimestamp = getMillisTimestamp()-- 提取毫秒部分local ms = millisTimestamp % 1000-- 格式化时间字符串local text = string.format("%04d-%02d-%02d %02d:%02d:%02d.%03d", year, month, day, hour, minute, second, ms)if text ~= last_text thenlocal source = obs.obs_get_source_by_name(source_name)if source ~= nil thenlocal settings = obs.obs_data_create()obs.obs_data_set_string(settings, "text", text)obs.obs_source_update(source, settings)obs.obs_data_release(settings)obs.obs_source_release(source)endendlast_text = text
endfunction timer_callback()set_time_text()
endfunction activate(activating)if activated == activating thenreturnendactivated = activatingif activating thenset_time_text()obs.timer_add(timer_callback, 1)elseobs.timer_remove(timer_callback)end
end-- Called when a source is activated/deactivated
function activate_signal(cd, activating)local source = obs.calldata_source(cd, "source")if source ~= nil thenlocal name = obs.obs_source_get_name(source)if (name == source_name) thenactivate(activating)endend
endfunction source_activated(cd)activate_signal(cd, true)
endfunction source_deactivated(cd)activate_signal(cd, false)
endfunction reset(pressed)if not pressed thenreturnendactivate(false)local source = obs.obs_get_source_by_name(source_name)if source ~= nil thenlocal active = obs.obs_source_active(source)obs.obs_source_release(source)activate(active)end
end------------------------------------------------------------ A function named script_properties defines the properties that the user
-- can change for the entire script module itself
function script_properties()local props = obs.obs_properties_create()local p = obs.obs_properties_add_list(props, "source", "Text Source", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING)local sources = obs.obs_enum_sources()if sources ~= nil thenfor _, source in ipairs(sources) dosource_id = obs.obs_source_get_id(source)if source_id == "text_gdiplus" or source_id == "text_ft2_source" thenlocal name = obs.obs_source_get_name(source)obs.obs_property_list_add_string(p, name, name)endendendobs.source_list_release(sources)obs.obs_properties_add_text(props, "format_string", "Format String", obs.OBS_TEXT_DEFAULT)return props
end-- A function named script_description returns the description shown to
-- the user
function script_description()return "Sets a text source to act as a date/time text when the source is active.\n\nMade by Ragowit"
end-- A function named script_update will be called when settings are changed
function script_update(settings)activate(false)source_name = obs.obs_data_get_string(settings, "source")format_string = obs.obs_data_get_string(settings, "format_string")reset(true)
end-- A function named script_defaults will be called to set the default settings
function script_defaults(settings)obs.obs_data_set_default_string(settings, "format_string", "%Y-%m-%d %X")
end-- a function named script_load will be called on startup
function script_load(settings)-- Connect activation/deactivation signal callbacks---- NOTE: These particular script callbacks do not necessarily have to-- be disconnected, as callbacks will automatically destroy themselves-- if the script is unloaded. So there's no real need to manually-- disconnect callbacks that are intended to last until the script is-- unloaded.local sh = obs.obs_get_signal_handler()obs.signal_handler_connect(sh, "source_activate", source_activated)obs.signal_handler_connect(sh, "source_deactivate", source_deactivated)
end
效果

********************************* 只要思想不滑坡,办法总比困难多*********************************
相关文章:
OBS 日期时间.毫秒时间脚本 date-and-time.lua
文章目录 OBS 日期时间.毫秒时间脚本:效果 OBS 日期时间.毫秒时间脚本: obs obslua source_name ""last_text "" format_string "" activated false-- 此函数用于获取精确的毫秒级时间戳&#…...
探索大语言模型(LLM):目标、原理、挑战与解决方案
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言语言模型的目标语言模型的数学表示语言模型面临的挑战解决参数量巨大的方法1. 马尔可夫假设2. 神经网络语言模型3.自监督学习4. 分布式表示 脑图总结 前言 在自…...
ES基本操作(Java API)
1. 导入restClient依赖 <!-- es --><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.12.1</version></dependency> <!…...
得物官网sign签名逆向分析
打开得物官网,点击鞋类,可以看到请求 直接搜sign function p(e) {return f()("".concat(e ? s()(e).sort().reduce(function(t, n) {return "".concat(t).concat(n).concat(e[n])}, "") : "", "048a9…...
Agent的九种设计模式 介绍
Agent的九种设计模式 介绍 一、ReAct模式 原理:将推理(Reasoning)和行动(Acting)相结合,使Agent能够在推理的指导下采取行动,并根据行动的结果进一步推理,形成一个循环。Agent通过生成一系列的思维链(Thought Chains)来明确推理步骤,并根据推理结果执行相应的动作,…...
vivado 时钟IP核(MMCM PLL)
CMT简介 FPGA中时钟管理模块(CMT)包括PLL和MMCM,用于将时钟倍频(比如输入时钟25M,我们要产生50M时钟)、分频(在不影响系统功能的前提下,较低的工作时钟,能够降低系统功耗)、改变相位偏移或占空比等。 当需要…...
hackmyvm-airbind
收集信息 arp-scan -l nmap -sS -v 192.168.195.162 访问扫描到的ip,直接跳转到登录页面,利用admin/admin弱口令登录 在settings.php中找到一处文件上传,上传一句话木马,上传成功 反弹shell 上传php-reverse-shell.php 抓包&am…...
知识了解03——怎么解决使用npm包下载慢的问题?
1、为什么使用npm下载包会下载的慢 因为使用npm下载包时,默认使用国外服务器进行下载,此时的网络传输需要经过漫长的海底电缆,因此下载速度会变慢 2、怎么解决?(切换镜像源) (1)方…...
[晕事]今天做了件晕事71,_GNU_SOURCE
今天碰到一件晕,从别的地方搬运来一段代码,里面有使用in6_pktinfo这个结构体: struct in6_pktinfo pktinfo; 通过搜索发现需要include的头文件就是:netinet/in.h。加上这个头文件,还是出现找不到结构体的错误。最后通过仔细查看头文件,发现,这个结构体定义是在宏判断里…...
【算法数据结构】leetcode37 解数独
37. 解数独 - 力扣(LeetCode) 题目描述: 题目要求每一行 ,每一列,每个3*3 的子框只能出现一次。每个格子的数字范围1-9. 需要遍历每个空格填入可能的数字,并验证符合规则。如果符合就填入,不符…...
招商信诺原点安全:一体化数据安全管理解决方案荣获“鑫智奖”!
近日,“鑫智奖 2025第七届金融数据智能优秀解决方案评选”榜单发布,原点安全申报的《招商信诺:数据安全一体化管理解决方案》荣获「信息安全创新优秀解决方案」。 “鑫智奖第七届金融数据智能优秀解决方案评选”活动由金科创新社主办&#x…...
楼宇自控系统如何为现代建筑打造安全、舒适、节能方案
在科技飞速发展的当下,现代建筑对功能和品质的要求日益提升。楼宇自控系统作为建筑智能化的核心技术,宛如一位智慧的“管家”,凭借先进的技术手段,为现代建筑精心打造安全、舒适、节能的全方位解决方案,让建筑真正成为…...
吃透LangChain(四):消息管理与聊天历史存储
消息存储在内存 下面我们展示一个简单的示例,其中聊天历史保存在内存中,此处通过全局 Python 字典实现。我们构建一个名为 get_session_history 的可调用对象,引用此字典以返回chatMessageHistory实例。通过在运行时向 RunnablewithMessageHi…...
【差分隐私相关概念】瑞丽差分隐私(RDP)命题4
命题4的证明详解(分情况讨论) 背景与设定 机制: f : D → R f: \mathcal{D} \to \mathcal{R} f:D→R 是由 n n n 个 ϵ \epsilon ϵ-差分隐私机制自适应组合而成。相邻输入: D D D 和 D ′ D D′ 是相邻数据集。目标…...
RoBoflow数据集的介绍
https://public.roboflow.com/object-detection(该数据集的网址) 可以看到一些基本情况 如果我们想要下载,直接点击 点击图像可以看到一些基本情况 可以点击红色箭头所指,右边是可供选择的一些yolo模型的格式 如果你想下载…...
免费将AI生成图像放大4倍的方法
有些人不需要任何高级工具和花哨的技巧;他们只需要一种简单的方法来提升图像分辨率而不损失任何质量 — 今天,我们将学习如何做到这一点。 生成AI图像最大的问题之一是什么?最终结果通常分辨率非常低。 这会导致很多不同的问题,特别是对于那些想要在内容或项目中使用这些…...
滑动过期机制——延长 Token有效期
文章目录 1. Flask 后端代码(支持 WebSocket)2. Android Studio Java 前端代码(使用 Socket.IO)代码说明后端前端 注意事项 前端使用 Android Studio(Java)和 Socket.IO 库,后端使用 Flask。 1…...
《JVM考古现场(二十三):归零者·重启奇点的终极奥义》
目录 楔子:归零者文明觉醒 上卷十维弦理论破译 第一章:JVM弦论代码考古 第二章:超膜引用解析算法 第三章:量子真空涨落监控 中卷归零者心法实战 第四章:宇宙重启倒计时引擎 第五章:内存奇点锻造术 第…...
k8s中sidecar死循环
序言 怎么发现我的同事们很上进呢,估计做了下贱的事儿吧。 伤不到我,不代表不疼! sidecar产生的问题 1 背景 在k8s的环境中,pod的使用越来越多了,也就产生了sidecar容器,在现在的环境中,一个pod…...
Linux `init 4` 相关命令的完整使用指南
Linux init 4 相关命令的完整使用指南—目录 一、init 系统简介二、init 4 的含义与作用三、不同 Init 系统下的 init 4 行为1. SysVinit(如 CentOS 6、Debian 7)2. systemd(如 CentOS 7、Ubuntu 16.04)3. Upstart(如 …...
Java Web 之 简介 100问
DAO 层的作用是什么? DAO 层作用: 与数据库直接交互,封装所有数据访问的细节(即CRUD操作),不包含业务逻辑,只关注数据的持久化。 DAO的全拼是什么 Data Access Object,数据连接实…...
06-libVLC的视频播放器:推流RTMP
创建媒体对象 libvlc_media_t* m = libvlc_media_new_path(m_pInstance, inputPath.toStdString().c_str()); if (!m) return -1; // 创建失败返回错误 libvlc_media_new_path:根据文件路径创建媒体对象。注意:toStdString().c_str() 在Qt中可能存在临时字符串析构问题,建议…...
【物联网】基于LORA组网的远程环境监测系统设计
基于LORA组网的远程环境监测系统设计 演示视频: 简介: 1.本系统有一个主机,两个从机。 2.一主多从的LORA组网通信,主机和两个从机都配备了STM32F103单片机与 LoRa 模块,主机作为中心设备及WIFI网关,负责接收和发送数据到远程物联网平台和手机APP,两个从机则负责采集数…...
少儿编程路线规划
少儿编程路线规划—一文写明白 现在有很多的编程机构,五花八门的。我有幸也见识到了大家的营销策略。这些策略有黑有白吧,从业几年,沉淀下来一些客户角度的干货,分享给大家。 如果是想以很远很远的就业为目的,毕业就…...
第3章 垃圾收集器与内存分配策略《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》
第3章 垃圾收集器与内存分配策略 3.2 对象已死 Java世界中的所有对象实例,垃圾收集器进行回收前就是确定对象哪些是活着的,哪些已经死去。 3.2.1 引用计数算法 常见的回答是:给对象中添加一个引用计数器,有地方引用࿰…...
Docker Overlay 网络的核心工作(以跨节点容器通信为例)
Docker 的 overlay 网络是一种基于 VXLAN(Virtual Extensible LAN)的多主机网络模式,专为 Docker Swarm 集群设计,用于实现跨节点的容器通信。它通过虚拟二层网络,允许容器在不同主机上像在同一局域网内一样通信。Dock…...
用 R 语言打造交互式叙事地图:讲述黄河源区生态变化的故事
目录 🌟 项目背景:黄河源头的生态变迁 🧰 技术栈介绍 🗺️ 最终效果预览 💻 项目构建步骤 1️⃣ 数据准备 2️⃣ 构建 Leaflet 地图 3️⃣ 使用 scrollama 实现滚动触发事件 4️⃣ 使用 R Markdown / Quarto 打包发布 🎬 效果展示截图 📦 完整代码仓库 …...
Java Stream常见误区解析:五大错误与规避方法
Java Stream API以函数式编程风格提供了一种强大的数据处理方式,使代码更简洁和可读。然而,误用Stream可能导致性能低下、错误频发或代码难以维护。本文将探讨开发者在使用Java Stream时最常见的五种错误,并提供规避方法。 1. 在Stream处理中…...
【树莓派Pico FreeRTOS】-中断服务与二值信号量
中断服务与二值信号量 RP2040 由 Raspberry Pi 设计,具有双核 Arm Cortex-M0+ 处理器和 264KB 内部 RAM,并支持高达 16MB 的片外闪存。 广泛的灵活 I/O 选项包括 I2C、SPI 和独特的可编程 I/O (PIO)。 FreeRTOS 由 Real Time Engineers Ltd. 独家拥有、开发和维护。FreeRTO…...
构建灵活可扩展的接口抽象层:支持多种后端数据存取的最佳实践
构建灵活可扩展的接口抽象层:支持多种后端数据存取的最佳实践 在现代应用开发中,后端数据存取的需求可能非常多样化:本地数据库、云存储服务、REST API,甚至是文件系统。因此,设计一套支持多种后端数据存取的接口抽象层是提高系统灵活性和可维护性的关键。本文将详细探讨…...
