OBS推WebRTC流,并添加毫秒级时间显示
作者在用OBS推WebRTC流,并用浏览器观看推送的实时流。另外就是想看一下延迟有多少。采用一台电脑,流媒体服务器为SRS,相关配置比较简单,可以自行搜索。
推送的流 http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream
拉取的流 http://localhost:1985/rtc/v1/whep/?app=live&stream=livestream
OBS 添加时间的插件 是 date-and-time.lua,我也是在这个基础上做了一点改动,感谢原作者。如何配置 date-and-time.lua,可以自行搜索。
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)
if text ~= last_text then
local source = obs.obs_get_source_by_name(source_name)
if source ~= nil then
local 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)
end
end
last_text = text
end
local ms = string.format("%.3f", os.clock())
主要是这句,下面的代码没有去掉,方便需要自行修改的同学,获取日期等信息
function activate(activating)
if activated == activating then
return
end
activated = activating
if activating then
set_time_text()
obs.timer_add(timer_callback, 100)
else
obs.timer_remove(timer_callback)
end
end
obs.timer_add(timer_callback, 100)
主要改了这句,这句是设置定时器的周期,原来是1000,也就是1秒触发一次。我改成了100,也就是100毫秒。这里可以看出,该插件是定时获取系统时间,然后添加到视频中。因此如果延迟低于定时器周期,其实是测不出来的。
100毫秒触发一次,肉眼是看不出来差多少的。这里可以采取截屏的方式,多截几次,大概可以看出延迟有多少。这种方式可以粗略测试延迟,如果有更精确的方法,欢迎讨论。
完整的lua文件:
https://download.csdn.net/download/SimpleForest/90481050?spm=1001.2014.3001.5503
最后是我自己的测试结果: