From e10dfe039fb4c83fedd9daa260c6d256e66a7652 Mon Sep 17 00:00:00 2001 From: j Date: Tue, 10 Oct 2023 10:19:24 +0100 Subject: [PATCH 1/3] fix sound --- render_kdenlive.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/render_kdenlive.py b/render_kdenlive.py index 58e68a6..5740b32 100644 --- a/render_kdenlive.py +++ b/render_kdenlive.py @@ -19,8 +19,16 @@ class KDEnliveProject: def to_xml(self): track = self._main_tractor.xpath(".//track")[0] duration = max(self._duration.values()) - track.attrib["in"] = self._sequence.attrib["in"] = self._main_tractor.attrib["in"] = "0" - track.attrib["out"] = self._sequence.attrib["out"] = self._main_tractor.attrib["out"] = str(duration - 1) + values = { + "in": "0", + "out": str(duration - 1) + } + for key, value in values.items(): + track.attrib[key] = value + self._sequence.attrib[key] = value + self._main_tractor.attrib[key] = value + self._audio_tractor.attrib[key] = value + self._tree.remove(self._sequence) self._tree.append(self._sequence) self._tree.remove(self._main_bin) @@ -305,6 +313,7 @@ class KDEnliveProject: self._sequence = sequence self._main_bin = main_bin self._main_tractor = t4 + self._audio_tractor = t1 self._v1 = v1 self._v2 = v2 self._a1 = a1 @@ -334,7 +343,7 @@ class KDEnliveProject: ("kdenlive:clip_type", "0"), ("kdenlive:folderid", "-1"), ("kdenlive:id", kdenlive_id), - ("set.test_audio", "1"), + ("set.test_audio", "0"), ("set.test_image", "0"), ("xml", "was here"), ]: From d625ad8f4ce1357e5288d70716ae48d7b8bbd85c Mon Sep 17 00:00:00 2001 From: j Date: Tue, 10 Oct 2023 10:19:36 +0100 Subject: [PATCH 2/3] render audio only --- management/commands/render.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/management/commands/render.py b/management/commands/render.py index 24ba964..655c577 100644 --- a/management/commands/render.py +++ b/management/commands/render.py @@ -30,10 +30,21 @@ class Command(BaseCommand): json.dump(scene, fd, indent=2, ensure_ascii=False) if not options['no_video']: for timeline in timelines: + ext = '.mp4' + if '-audio.kdenlive' in timeline: + ext = '.wav' cmd = [ 'xvfb-run', '-a', 'melt', timeline, - '-consumer', 'avformat:%s' % timeline.replace('.kdenlive', '.mp4') + '-consumer', 'avformat:%s' % timeline.replace('.kdenlive', ext) ] subprocess.call(cmd) + if ext == '.wav': + cmd = [ + 'ffmpeg', '-i', + timeline.replace('.kdenlive', ext), + timeline.replace('.kdenlive', '.mp4') + ] + subprocess.call(cmd) + os.unlink(timeline.replace('.kdenlive', ext)) From a5957fc3b2c65cd3380b541c519ad11964c0a365 Mon Sep 17 00:00:00 2001 From: j Date: Tue, 10 Oct 2023 10:19:47 +0100 Subject: [PATCH 3/3] 50% chance of second foreground --- render.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/render.py b/render.py index 0a879be..15712d8 100644 --- a/render.py +++ b/render.py @@ -62,9 +62,14 @@ def compose(clips, target=150, base=1024): break length += clip['duration'] + fg = clip['foreground'] + if 'foreground2' in clip: + if chance(seq, 0.5): + fg = clip['foreground2'] + scene['front']['V1'].append({ 'duration': clip['duration'], - 'src': clip['foreground'], + 'src': fg, "filter": { 'transparency': seq() / 10, } @@ -110,7 +115,7 @@ def compose(clips, target=150, base=1024): }) scene['audio']['A2'].append({ 'duration': clip['duration'], - 'src': clip['foreground'], + 'src': fg, }) return scene