https://bugs.kde.org/show_bug.cgi?id=505407
Bug ID: 505407 Summary: [Feature Request] Use Timeline or Clip Markers to split clip into pieces Classification: Applications Product: kdenlive Version First unspecified Reported In: Platform: Ubuntu OS: Linux Status: REPORTED Severity: wishlist Priority: NOR Component: Timeline & Editing Assignee: j...@kdenlive.org Reporter: luca...@protonmail.com Target Milestone: --- It would be nice if there was a way of cutting a video using certain moments know previously. Some use cases: - I want to make a video where the image is synchronized with a music beat. So, I can use an audio processing program to give me a list of beat moments, and I'll cut the video in these moments, which will be imported as markers. But doing it by pressing Alt+Right and Shift+R would take a long time. An automated way of doing it would be better. - I have some video pre-processing program that gives me certain key points based on certain metrics - e.g. funny moments from a podcast or movie - and I want to use this data to generate clips of key moments and discard the rest. I've searched for related requests, and I've found these: https://bugs.kde.org/show_bug.cgi?id=388122 https://bugs.kde.org/show_bug.cgi?id=486249 https://bugs.kde.org/show_bug.cgi?id=501704 I've checked some of the tasks existent, and I could come with a solution based on `scenesplittask.cpp`. The user will be able to choose between using timeline or clip markers. He'll also be able to choose the category and if he wants to keep even or odd clips - or both. There's also an option to add the resulting clips as subclips under the main clip's tree. To do this, i've basically used zones. I read the desired Markers' frames and used them to create zones from the original clip. These zones are then put into timeline with `insertZone()` and - if the user wants - they are added as subclips using `loadSubclips`. The problem is: iterating a list of zones and calling insertZone in each of them doesn't seem to work well. It seems that it overload and crash the app, and I don't know exactly where. Maybe the GUI thread gets too busy when it inserts a certain amount of zones into timeline, but I'm not sure where the bottleneck is. I thought that it was overloading the TaskManager's thread pool, but it doesn't seem to be it since I've tracked the tasks being executed, and no task seems to be run during the insertion. The way I solved the crash caused by this bottleneck was delaying each zone insertion by some miliseconds, with QThread::msleep. It's not an elegant solution, since it's a blocking solution, but since AbstracktTask runs in a separate thread, using it souldn't block the main thread, and since I've used it I didn't have more crash problems. There are certainly non-blocking ways of doing the same thing, but it seems to me that such solutions would need first to use some signal related to UI events, so that it may know when the UI is overloaded - and shouldn't receive more timeline insert requests - and when it is ready to do it. Since I'm not very familiar with C/C++ and certainly not very familiar with QT, some suggestions would be welcome. Also, opinions about the viability of implementing this feature currently are welcome. I've seem some discussions about using only Markers and abandoning Guides, and this feature may make this and other changes more complicated. You may check the code at https://invent.kde.org/lucartc/kdenlive/-/tree/work/masssplittask?ref_type=heads in files: - src/jobs/markersplittask.h - src/jobs/markersplittask.cpp -- You are receiving this mail because: You are watching all bug changes.