diff options
| author | tassaron | 2017-05-29 17:38:28 -0400 |
|---|---|---|
| committer | tassaron | 2017-05-29 17:38:28 -0400 |
| commit | 75f1e8af76fe0ea01d4dd59d53d6ce3b31a4a706 (patch) | |
| tree | e4e9fda900f760eb5b32adfa6b69d8e35193be9e | |
| parent | db7acbf3ea353d6c5b21de44b4f532b43339ac5c (diff) | |
title text does not need to generate a new image each frame
| -rw-r--r-- | components/text.py | 1 | ||||
| -rw-r--r-- | test.mkv | bin | 0 -> 1207731 bytes | |||
| -rw-r--r-- | video_thread.py | 22 |
3 files changed, 18 insertions, 5 deletions
diff --git a/components/text.py b/components/text.py index 334fc80..8b7f6be 100644 --- a/components/text.py +++ b/components/text.py @@ -87,6 +87,7 @@ class Component: def preFrameRender(self, **kwargs): for kwarg, value in kwargs.items(): exec('self.%s = value' % kwarg) + return ['static'] def frameRender(self, moduleNo, frameNo): width = int(self.worker.core.settings.value('outputWidth')) diff --git a/test.mkv b/test.mkv Binary files differnew file mode 100644 index 0000000..92780a7 --- /dev/null +++ b/test.mkv diff --git a/video_thread.py b/video_thread.py index 8bef6ef..93ca7bd 100644 --- a/video_thread.py +++ b/video_thread.py @@ -77,10 +77,15 @@ class Worker(QtCore.QObject): # initialize components print('######################## Data') - print('loaded components: ', [str(component) for component in components]) + print('loaded components:', + ["%s%s" % (num, str(component)) for num, component in enumerate(components)]) + staticComponents = {} sampleSize = 1470 - for component in components: - component.preFrameRender(worker=self, completeAudioArray=completeAudioArray, sampleSize=sampleSize) + for compNo, comp in enumerate(components): + properties = None + properties = comp.preFrameRender(worker=self, completeAudioArray=completeAudioArray, sampleSize=sampleSize) + if properties and 'static' in properties: + staticComponents[compNo] = None # create video for output numpy.seterr(divide='ignore') @@ -88,18 +93,25 @@ class Worker(QtCore.QObject): bgI = 0 for i in range(0, len(completeAudioArray), sampleSize): newFrame = Image.new("RGBA", (int(self.core.settings.value('outputWidth')), int(self.core.settings.value('outputHeight'))),(0,0,0,255)) - if imBackground: newFrame.paste(imBackground) else: newFrame.paste(getBackgroundAtIndex(bgI)) + # composite all frames returned by the components in order for compNo, comp in enumerate(components): - newFrame = Image.alpha_composite(newFrame,comp.frameRender(compNo, i)) + if compNo in staticComponents and staticComponents[compNo] != None: + newFrame = Image.alpha_composite(newFrame,staticComponents[compNo]) + else: + newFrame = Image.alpha_composite(newFrame,comp.frameRender(compNo, i)) + if i == 0 and compNo in staticComponents: + staticComponents[compNo] = comp.frameRender(compNo, i) if not imBackground: + # increment background video frame for next iteration if bgI < len(backgroundFrames)-1: bgI += 1 + # write to out_pipe try: frame = Image.new("RGB", (int(self.core.settings.value('outputWidth')), int(self.core.settings.value('outputHeight'))),(0,0,0)) |
