From 577f35eca3072bea4032651ef41b45cdac30457b Mon Sep 17 00:00:00 2001 From: Shiz Date: Wed, 20 May 2020 00:22:04 +0200 Subject: [PATCH] cef_browser: unconditionally write frame, start with transparent frame --- src/overlay/obs/cef_browser.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/overlay/obs/cef_browser.py b/src/overlay/obs/cef_browser.py index f54a305..db32198 100644 --- a/src/overlay/obs/cef_browser.py +++ b/src/overlay/obs/cef_browser.py @@ -38,7 +38,7 @@ class CEFBrowserCapturer: self.dimensions = dimensions self.url = url self.outfile = outfile - self.frame = None + self.frame = b'\x00' * 4 * self.dimensions[0] * self.dimensions[1] self.rate = rate settings = { @@ -58,20 +58,23 @@ class CEFBrowserCapturer: window_info.SetAsOffscreen(0) self.browser = cef.CreateBrowserSync(window_info=window_info, settings=browser_settings, url=self.url) + def __del__(self): + self.browser.CloseBrowser() + cef.Shutdown() + def run_browser(self): self.browser.SetClientHandler(CEFHandler(self)) self.browser.SendFocusEvent(True) self.browser.WasResized() cef.MessageLoop() - cef.Shutdown() def output_frames(self): with open(self.outfile, 'wb') as f: + frame_duration = 1.0 / self.rate while True: t = time.monotonic() - if self.frame: - f.write(self.frame) - time.sleep(1.0 / self.rate - (time.monotonic() - t)) + f.write(self.frame) + time.sleep(max(0.0, frame_duration - (time.monotonic() - t))) def exit(self, browser=None): browser = browser or self.browser