This is a classic case of a developer trying to replace battle-tested, specialized tools with a unified "silver bullet" that underestimates real-world complexity. It’s an impressive technical demo, but likely destined to remain a high-concept experiment rather than a practical production suite.
Deep Dive
Prerequisite Knowledge
- No data available.
Where to go next
- No data available.
Deep Dive
I want to make a KDE App to (not actually) replace Kdenlive, Darktable, OBS, Inkscape, ...Added:
I would like to build a new KD hopefully application. So let me give you some context. This video is going to be very rambling especially because this is the second take. I messed up the first one but let's give some context. So as you might know uh I decided to take a step back from KD development around like October last year uh because I was burned out very burned out. So I just took a break and because of that I actually looked in the other directions and I was sort of hired to do video making work which is very cool a breath of fresh air. I'm able to do something that I wasn't doing before. I try new things. I love that. And I even got some really cool clients. I can't talk about that publicly but like it's cool clients. And the cool thing for me is that I was able to edit all of the videos for these very cool clients with Kitten Live, which makes me very proud because it means that somewhere up there, and I won't tell you where, there's important to me, videos that are edited with Kitten Live. And that's cool. And I've also shot a short film um last month. And you know, this is the second short film that I do. And last year I edited everything with Kitty Live and you know I I'm doing a lot of video editing at the moment. That that's the thing. And I realized that I'm not happy. This is not enough. So let me show you why. Actually I think I can do it. This is my screen and let's open up Kenny Live. And what I'm going to do is I'm going to take an actual file um from my from my short film, the latest one.
And this is 6K HEVC 10 bit footage, which is kind of as bad as it gets to edit. And you know, let's import it. And I'm going to keep the original resolution. And um I don't know, let's import a second clip. And these are 30 seconds clip. The file size is file size manageable. And it's just a couple of clips. So not that bad even. And even with just a couple of clips, putting them together, I don't have any RAM anymore. Uh, it's uh 16 GB of RAM on this laptop, which I realize is not much. My bad. Um, but it's dead already.
And I'm already using 3 GB of zap in order to support this. And that's just importing the clips. And if I try to apply some effects on this, uh, like, you know, flipping this vertically. By the way, if you're asking why is this upside down, there's actually a very good reason for that and you're going to find out in the next video that I make, but spoilers. Um, as a play effect, probably we want a loot because this is vlog. Obviously, if you don't know what vlog is, um, it's stuff of video maker.
Now it just means that instead of linearly telling uh the RGB values RGB channels they are written as the log of those values so that you can have more dynamic range within each pixel but you know and it's also 10 bit so instead of each channel going from one to two sorry zero from 255 as it would normally RGB uh it actually has two more bits. So uh four times that uh four times. Yeah. Uh so more color information that's not going to be displayed on a screen. The screen is 8 bit I think. But um it is going to be useful to like prevent bending when applying loots and stuff.
And so this is like the footage with a loot applied. I can play it. And this is what it looks like when it's been played. And that's bad.
Like you cannot edit obviously with this. and and my run is over. Now, of course, if you know anything about video editing editing, you're screaming something at your screen right now. And that's use prox proxy clips. And obviously, yes, I do use proxy clips. I know last short film I use with proxy clips. And uh the things that I do for work need to be on a very tight deadline and I don't really want to deal with proxy clips in that scenario. So I just record on a lower quality that Kitty Live is sort of able to handle. Just sort of though if I apply more effects it still dies which not great. But even proxy clips don't really solve all of my problems because sooner or later you have to render the video and rendering doesn't use proxy clips. And so what happens is that for my short film last year, it was 8 minutes long and rendering uh took like 1 hour and a half and needed 128 gigs of um zoo because otherwise it would just crash, which is not great. Now maybe there's some sort of memory leakage here that I don't know about, but it sort of happens on any uh video file that I throw at Kitty Live, so maybe not. And you know, this could like be okay, but there's this thing that annoys me, which is if I take these video files and I play them, look, that's smooth playback. And you could say yes, but you don't have any, you know, effects applied. But the thing is that MPV is actually super powerful and you can apply effects within MPV. And I tried to apply shaders and stuff to MPV and the playback is still smooth. So, what's the difference? And as you can probably guess, the difference is where the work happens. With MPV, uh what happens is that uh the video is decoded by the GPU. The effects are applied on the GPU and then it's displayed on the screen still using the GPU. And if you reenccode that, still uses the GPU. So the whole thing is fairly fast and it's able to provide smooth playback on any resolution with shader supply. So that's cool. with kitten live kitten live doesn't support a full stack GPU solution let's say so what actually happens is that maybe the decoding part happens on the GPU I'm not sure actually I haven't checked but as soon as the video is decoded it's transferred to the system RAM where the CPU can handle it and this effects as far as I know are all applied on the CPU this is because Kitty live uses melt under the hood which by defaults as far as I know again uses the CPU for all effects It does have a plugin uh move it if I if I reme remember correctly which can handle can expose GPU effects. However, it's very buggy and as a direct result uh kitten live actually has it hardcoded to be disabled on its source code. You could recompile kitting live to try to use that but actually you've got shortcut and shortcut does expose those hardware accelerated move it plugins. uh effects um and they crash. They just crash. I couldn't do anything with them. So that wasn't good. And so I sort of looked around like which applications can provide hardware accelerated uh playback at least and hopefully also rendering.
And the answer is nothing in the open source world. Uh at least nothing that works for me. Again, shortcut just crashes. And in the proprietary word which I'm not going to use there's a few things premier I think but not even that many even in the proprietary word this is not very frequent and okay that was annoyance number one which adds on top of let's take a row image let's see if I can open this row image with dark table because row therapy is bugging and no apparently I cannot do that I don't know it worked before doesn't work anymore don't know why but you know the thing is that I could go ahead head take a row image and edit it and still happens on the CPU should be GPU accelerated and you really feel that if you start to apply a lot of effects on the image uh it's going to have a loader for each change that you make. You're not going to see immediately your changes apply.
There is one free and opener source um row image editor that does support GPU acceleration. Don't remember the name.
haven't even tried because honestly it's not that big of a deal but like I'm annoyed inside. So I started thinking what can I do to try to make some tooling to help me work through this and I actually fell in love with MPV. Let me tell you why. Well, of course it's MPV uses, by the way FF ffmpeg under the hood, but it uh handles all the GPU um abstraction. It's it's cool. And I did a little MPV scripts that um helps me select select parts of different videos and then it joins them together automatically. And that's really cool because I'm able to do some sort of selecting of what materials I want to edit later on directly on MPV which is order accelerated. So I get a smooth preview and that was cool. But what's the next step? Like I I cannot build a video editor in MPV. clearly not for lack of trying, but there's some limitations such as yes, it's cool that you can apply um shaders to to videos.
Shaders help you do tons of things actually, but at the end of things, uh you just add one video and that's it.
You could try to hack your way around this by, you know, if you want to work on two videos, you can horizontal sack them together and then use a that's going to take the left and the half part of the videos and doesn't really work if you want the whole thing to be on the GPU. So, I gave up. But then I spent another week on that because I was really annoyed at this.
And so, and so I came up with an idea. I have a proposition and I have a proof of concept and my proposition is what if what if we take MPV or honestly anything that uh you know show shows videos using ffmpeg with hardware acceleration like it's kind of the same thing at the end of the day what if we take mpv sorry my sorry uh and we embed it within QML so if you don't know what QML is that's fine it's the markup language that kitty uses to display all user interfaces. All of this that you're seeing is QML and it's a bit like HTML plus CSS and it also embeds JavaScript. You know, it's a markup language with JavaScript in it.
And the cool thing, the really cool thing is that uh when the graphical part, the rendering part of QML is done as far as I know by default uh on the GPU because it's hardware accelerated.
So if you take a QML file uh a QML project and you embed MPV within that QML project and lots of application do that by the way plasma 2 as an example you get hardware hardware accelerated playback of the video within QML. So you've got a QL application with the video and it's going to play smoothly because it's hardware accelerated.
Everything that happens on the GPU it stays on the GPU. It's going to be so much faster and so that's cool. That's cool. But then but then hear me out.
exposes a few nice helpy things. Like as an example, there's this thing which is the effect type and it's a really cool thing because basically it allows you to apply to any command object and that's cool. You've got the fragment shader, you've got the vertex shader, you and shaders happen on the GPU, so they're going to be f I'm simplifying things here. Just forgive me, but it's going to be super fast. And shaders can actually do a lot of things.
Um my impression is that the vast majority of things that you would expect as I don't know kid in live um effects the stuff that you know is ear uh most of this if not all of this I don't know is um can just be done as a shader and that's cool. So ideally you could take a video and apply shaders to it within QML to get a live preview with you know exposure with saturation with uh an LUT which by the way is going to convert the vlog grayish stuff to actual colors as an example. Um and you know it's really cool that you can do that within Kiml.
So my question is well well well can we this is going to sound very stupid but hold on hold on can we do video edit edit can we do video editing in QML now if you work with QML you're going to think I'm stupid rightfully so but hear me out every time you think oh well obviously this is not going to work because of X you know you're actually actually kind of works as an example Sure. Uh videos are cool, but the thing with videos, I keep getting lost in my Ah, where is my video? Sorry. Uh videos like this, row videos straight out of camera. Not row, but below. Uh well, again, it's actually 10 bits uh of video. It's not 8 bits. uh you only see on the screen the eight bits zero to 255, but in reality in the video there's more data that allows you to the proper editing. And so you're like if you embed a video within QL you're losing those two bits of data because it's going to be squashed together to 8 bits. And that's true and that's bad. You don't want that. But hear me out because we have another code and we move this here and this code thing is called the shader source. Uh the shitterter effect source is what you use in KML to uh take an object, render it offscreen, let's say to a texture and then give that texture to the shader.
And the cool part is that in here, where is it? Where is it? We've got the format property, which is uh by default set to RGBA 8. So red, green, blue, alpha, eight bits for each channel. But you can change that and specifically you can change that up to 16 bits and 32 bits float which is plenty. you can actually very nicely fit a 10- bit video into 16 or 32 bits of uh floating um you you got that's actually you know so that's not an issue and you could say sure but like suppose that you want to make a transition you need to take two different textures and blend them together and we can do that actually uh because the shader uh effect doesn't tell you doesn't tell you which texture to work on and you can define as many textures size you want. So you can have a shader that takes two different textures and does anything with it, any kind of transition. And actually uh Kitten live only supports like luma transitions between I can show you. I think if I do this and then I set a transition. I forgot how to do that. I'm really sorry. Kid in life. Nice wipe. Um so yeah, in here we've got uh the wipe method and there's plenty of them and I can choose them. And these are like I think they're luma based. I don't want to say the wrong word, but this allows you to do some transition. But if you use shaders to do transitions between textures, you can actually do so much more. You can do any kind of transition.
You can do like page flipping as an example. A kitt can't can't do that because kite only has gradual let's say transitioning, but shaders can do so much more stuff. And you could have you could even have three textures coming into the shader and do super comp. It's so powerful. This is surprising. And one of the textures coming into a shader could be a mask. So we can do any sort of masks. So actually, and it's all happening on the GPU. So actually we can do everything. And you know, okay, it's cool that we can do sort of everything uh and show it into a QML application, but you know, videos you usually export on render when you're done. So can you do that? And of course in KML not out of the box camel is meant to be like application.
It's not meant to do these things that I'm forcing into Kamel. Uh but actually a couple of things. Well firstly if I'm able to do a live playback of my project at any resolution by the way and I checked and so far I never had any lag or come close to it. Um, so if I'm able to do live play playback of my file, then you know, uh, 8 minutes video is going to be rendered worst case scenario in 8 minutes. And it's still an improvement compared to the 1 hour and a half of last year. And the good thing is that since this is all happening on the GPU, it's not actually using any RAM at all. It's all happening on the VRAM.
Now, on the integrated Intel GPU that I'm using, VRM is shared with the RAM.
So, that's not much of an improvement, even though, believe me, it is. Uh, but you know, if you have a Nvidia card, which this computer also has, I just disabled it. You can do all the editing using the Nvidia uh RAM instead of your computer RAM. I'm really using the incorrect term here, but you know, cut me some slack. I'm still learning. Okay, but that's really cool because it solves all of the zap RAM issue that I had and I tried this out and it actually works.
I can do many clips and since they load so fast I can unload them dynamically.
I've already done proof of concepts of that it works. So ideally in 8 minutes I render an 8 minutes video. Of course there's the decoding step which also happens on the GPU things but like worst case scenario I just record the screen.
Not literally, but you know, worst case scenario, I record the screen and I get my video. I need to play with the decoder so that you know I don't miss frames, but I can do that. It's GPU accelerated encoding anyway. So that's cool. But also second thing is that I did a proof of concept and I have code and I wrote and by I wrote I mean Germany wrote because I don't get this.
I'm really sorry. I'm trying but you know I just need a quick proof of concept. I just needed to see can it be done and I've got a class here which is called rendering helper. And what the rendering helper does is that it um it's a where is it? Where is it? Let's take the h version of this. Oops. Sorry. Um blah blah blah blah blah blah. It's a cutequick item. Never mind then. Okay.
So what basically it does it it takes an item still using the shader source uh which means that it could be any bit depth and it renders it and it gives the texture to ffmpeg on the GPU without passing in the system CPU or run sorry and after it's done that it calls a function which is um uh advanced frame and what advance frame is going to do on the QML side of things is that it's going to switch to the next frame and when that is done again we render it and we give the frame to ffmpeg and so on and this way we can actually render a QML object and there's a lot of complex code which I do not understand at all if you've got like ways to explain it to me feel free right now I think it's like hardcoded to use vap and openg I I'm pretty sure this is what's going on. But still, at least on this specific setup, I was actually able to take a 6K 10 bit HEVC video uh apply color grading through Camel Shaders and render it in basically real time. It was like 1.2 times slower uh to a local video 4K. It doesn't go beyond 4K because I get that the actually the GPU encoder refuses to go beyond 4K on my specific computer. It's 4 years old. Um but but yeah, and I don't know that that's amazing to me. Like I don't I'm not used to seeing things work this fast. So I've got proof of uh well actually before I go to the proof of concepts, let me talk about another things. I've mentioned row images because that also annoys me. Let's talk about the row images. So what happens when you take a row image and you like export it or edit it. So to the best of my understanding which might be incorrect, let's take this row image as an example uh which is from a Fujifilm camera. It's not mine. It's taken from the internet because my row images suddenly don't work with Libro. We're going to use Libro under every application for row image editing uses Libro under the hood it seems. And well uh to my to the best of my understanding what happens here is that you take the row image you convert it to a normal image and this step I forgot what it's name but it's like deer I think something like that but of course you're not going to convert it to a like a JPEG a standard image because you would lose a lot of information but rather you could vert it to a texture let's say and I think that's more correct a texture that is an image as we think of an image with RGB channels for each pixel. But um it's not going to have a bit depth of eight, which is what's displayed on the screen, but it's going to have a bit uh depth of I don't know 16. I think that's the most we can get out of the row image. And so all effects that we then apply with minor exceptions, I'll get to that like local contrast. Um, as far as I know, they happen on the 16 bit depth texture, which means that I can implement them as shaders because shaders take 16 bit depth uh images or textures. You can do plenty of things with them. You can get the context near a pixel and work with it. Yeah. Now in the the moxing pro process this row image to 16 bit uh depth texture you do have to commit to certain things most importantly color temperature if I'm correct I might be completely off expert people feel free to bash me here but the best understanding that I have is that you mostly just commit a color temperature and then you can just work on the texture and um there's also some other things like den noising should be done on the raw image if you want to do it properly, but you know, one step at a time. I'm happy that I just have to commit a color temperature and then I can just use any shader to work on the texture. And what this means is that well actually well actually I can make a um a QML object that takes a row image, uses Libro committing a color temperature to convert it to a texture and gives the texture to the QML system.
And then I can use the shaders to get that texture and work on it as shaders with the shaders which is which could be anything. All of these things could be shaders as far as I'm concerned. And again that's all going to happen on the GPU and then I'm can export the image still on the GPU. So uh and the cool thing is that these shaders saturation exposure and stuff uh just work on textures. They don't really care what the texture is. It could be a video it could be an image. So we can have the same exact um filters and effects working of both images row images de facto and videos row videos the facto which blows my mind. So I did that and I've got proof of concepts. Let me pick something as an example. Uh CD build test cases row image. Okay. So what's this going to do? It's it's going to take the row image that we've just seen and it displays it um with the you know shaders supplied. And what the code looks like under the hood, let me show you. Uh is that we are importing a mysterious studio library. More on that later. Um and this studio library gives us a row image object is the one I talked about before. And then it's going to give us effects. And we've got an exposure and saturation effects that under the hood are just shaders. And we can do all of the things that we can do in professional video and image editing applications with this. Now the saturation slider is a bit, you know, not very fancy, but exposure actually exposes a lot of things. You've got exposure, but you've got also offset, lift, gain, and gamma. All of this accept uh RGB values. So you can do all the fancy things that you can expose your nodes. And if needed, more fancy things could be added. Just have to implement them in the shader. And we've got the shader code as well. I can show you. And it's this. And now, as you can probably see, I don't know how how to write shaders. I can roughly understand what this is doing. But yeah, it's it's Gemini who wrote this file. So that's the comments. But I wrote the parts that I could fully understand. and got a bit of help with the others. Come on, you you can't blame me. I'm I'm attempting to do new things and learn new stuff.
But still, that works. And now I could export this image to its full resolution, by the way. And that would be exactly what you do with uh you know, an actual row image with row therapy or dark room. And that works. So I think that's cool. Even better. Let me show you. I've got another thing which is called waveform. And here we have the video which is as you can see playing perfectly. And now uh it actually I actually expose the values uh the for the for the filters and I've got a waveform and the waveform is also GPU accelerated which means that it's live.
It doesn't lag at all. And I I can just change all the effects live and let me show you as the video is playing and everything works perfectly. Uh, and yeah, and the cool thing is that I I could now take this video with the effects that I applied on it and throw it to the renderer that I I've shown you before and it's going to render it in basically real time with all of the effects applied. Now, it it looks horrible here, but of course, you can put some uh, you know, values that make sense. And I can show you the code for this one as well, which is waveform.
And, you know, it's a video component.
That's the video. And then again, we've got the effects, we've got exposure and UT, saturation, and we flip the image as we've seen before. And then, well, this is all going to be collapsed into a single waveform component. And then there's the UI stuff with the sliders.
And that's it. Uh, so what's this studio thing? So, my propos proposition is this. I've I've got an idea at this point. Let's build a couple of things.
I've got a couple of proposals. Firstly, uh uh let's do let's I'm doing and this is a proof of concept a library which okay so I've decided to call this project plasma studio because I think it sounds really cool and not necessarily this is going to be accepted as a kitty application it obviously you know intersects with what kitty live is doing and what you know other applications are doing so I don't know but even if this doesn't become my kitty application I'm still going to call it plasma Plasma Studio. It's such a cool name. Sue me.
And but still still um so a library plasma studio leap I don't know which simply exposes all of these QL components that handle video and images raw videos raw images any bit depth uh all on hardware and they expose that to QL and so that you can actually do things like this with very little code and this could be used in any application or any QML application any QL application could now import row images and apply effects live because there's a library that actually handles that. You know, I I've just implemented an handful of filters. As you can see, it's just exposure, saturation, uh, loot, fade in, and fade out for videos.
These kind of things, like just proof of concepts. But so far, it all works. and with more work which I'm committed to putting in this could be an actual library that you can actually import and to do multimedia handling in uh QML applications or you could even like have a file that is a project file and when you run that project file it renders the project you could now do the entirety of your video editing by writing a code because you know you've got all the classes that handle everything that you would expect ideally from a video editor or a row image editing application. You know, you can just write docl and run it and get your output file or image um video or image and that's cool. And then of course there's the next obvious step is which is building a front end for this because uh I really like you know okay and I think it shouldn't be too complex to have a a UI that allows you not to necessarily see like the QML code like in my mind as an example we have QML code and a live preview of what you're doing with the QML code and that would be cool and not particularly hard to do. kind of thing. It's going to be hard if you want like live updates without reloading the entire KML each time, but like you can do that. It's going to take work, but you can do that.
But you could then have a parser that takes the QML assuming that you are using the studio library and nothing else to keep things simple. And it's going to show you another representation of the QML code that's visually easier to work with, such as nodes. And I've got a proof of concept of this. I actually thought this through.
Wait, let me show you. Um, this thing uh, which is doesn't look exciting, but let's pick an image. Maybe this. And another image, which could be that, I guess. I think. Yeah. So, we've got a couple of images here. So, what's happening here under the hood? Because right now, these are just a couple of nodes that you can drag and drop around and you have images that you can select.
But what's happening under the hood is that when you create a new node like this, it's actually creating an image component that's rendered offscreen at full resolution. And then there's this component which is a shader effect source and it takes that offscreen um texture and it displays it scaled as a preview.
And so you could have for each studio component that you can actually see um well you you could have it render things off screen at full resolution and then have the preview directly within the nodes and you can drag and drop things around and you can connect nodes between each other and that's going to change what's apparent of what and going to change the result. And you could have even like a sidebar with here having the full a bigger preview of the final work that you're doing. And maybe you click on a node and that's going to give you a larger preview. Like you could have a lot of UI things to help you build the QML project that uh renders you the project that you need. Isn't that cool?
And all of this is is rendered properly like offscreen and then taken from offscreen and small and I've got an like in my mind it's going to be something like this where you have nodes you can drag them around and you connect them with each other and and you're going to see the preview directly within the node and this is like what professional applications do.
Uh I I don't I really don't recall what's the name because I always confuse the name of proprietary applications.
But there's this video editing application with a lot of cool color grading stuff with my with like masks and and stuff that happens entirely on nodes and that's so cool. We don't have things like that currently in the open source world as far as I know. And not only that would be a first, but also that would be completely GPU accelerated and it would work, you know, with both videos and draw images.
And I know I don't know that that's so cool. And what's even cooler for me is that uh QML actually gives you a lot of flexibility. Like you could trifully start asking me why are you so fixated with QML when there's better ways to do this? And I would like to argue actually it's impressive that KML supports all of this. And since it does, it actually gives you so much more nice features. As an example, Camel support out of the box a lot of transitions. And there's the syntaxic sugar within QML to handle transitions and animations. Sorry. And this means that we just have to build a UI thing that exposes the already existing back end for animations and I said transitions cement transforms and the same things with transforms again exposes transforms out of the box and you can work with them right now like I've done that I don't have it with me right now uh but I I could go here and add that transform it's not transform is it but it's something and I could right now rotate and apply you know linear transformation to this row image and I don't have to implement that because it's in KML and KML have has like blending it has um movie stuff around and you know it has a lot of layout coding there's so many things that KML just gives you for free and you just have that and you just have to build the UI to expose that features but you already have them it's a lot of work that you don't have to do because directly within Kamel. Sure, it was thought for something else entirely, building applications, but who cares? It works so well in this in this scenario as well. Why would wouldn't we use it?
There's a reason. I'll get to that. And even better, Kamel comes with even more stuff that's potentially very exciting.
Like I told you how you want Camel animations and for the simple reason that maybe you want to the exposure to change throughout your video. And so what you're going to do is I completely forgot um number animation on exposure and you're going to work with this. I don't remember if this is the syntax because I'm stupid. I've spent like five years working on longl. I don't remember basic syntax but you know it has animations and by the way animations can be controlled frame by frame. So it's going to work. You can handle that and you know you can have what you have in kitten live where is it kitten live I close it now what you have with kitten live if you apply effects like exposure and in here you've got the timeline and you can add key frames and all of that and all of this key frame stuff has to be handled you know has to be implemented in the back end of kitten live but in here it's already supported out of the box you you already have that you have the number animation Sure, you need to make sure that the number animations actually align with the object that it's in. If you start the video, it also has to start animation.
The frame needs to be same. You can do that. It's not particularly hard to do.
And even better, um, command also gives you uh text, gives you rectangles, gives you path, it gives you backgrounds, give you gradients, gives you so much stuff, and it's all it all works better than you would expect. As an example, uh I tried to use a 16 bit depth uh surf texture in Kiml and draw a gradient on it. Fine. And what I noticed is that if I ask it to draw the gradient on a 16- bit depth um texture, it actually draws the gradient in full 16 bit depth. It doesn't have to. It's going to be displayed on a 8 bit screen anyway, but it does. And that means that everything that you expect to work at high bit depths even for native QML objects work out of the box. You don't have to to implement that. And this blows my mind.
Uh because as an example, I could have this is a raw image. It's not a video wrong example. But pretend it's a video.
Okay. Uh I could have I don't I could add a text and I could then number animate uh uh animation on I don't know X and I can animate the position of the text or or the content and this is all supported out of the box and since you do have to still uh provide a UI to handle the number animation and stuff if you do that then suddenly without much work you can apply the seen things like text elements and rectangle elements and then path elements. And if you get enough primitives in there and a few actions like unifying paths and inter intersections, then suddenly you can do vectors, vector graphics and you can do vector animations because KML already can do vector graphics and vector animations. you wouldn't want to do that because why would you write a vector uh graphic in QML instead of just using Inkscape and but but if you build a note based or whatever tool to work with QML and you provide this uh primitives with little tweakings to make it work then suddenly yeah you already have all of the back end figured out. QML handles all of that which blows my mind which means that in my mind this is a very ambitious project. I know this is just a small proof of concept but so far everything has worked out surprisingly well. You get to do video editing with this if implemented correctly. You get to do raw image editing if implemented correctly.
you get to do vector graphics with it's not going to be Inkscape but it's could be helpful and it's probably be gonna be faster than Inkscape by the way. I don't know if Inkscape is or other accelerated in its rendering. I I generally don't know. I haven't checked but I what I do know is that Inkscape sometimes when dealing with textures that are large and such because I apply some images as blah blah blah um Inkscape gets really slow sometimes very quickly.
And that's been a gripe with Inkscape with me. And sure, I could work around that by properly managing how I import textures. I shouldn't embed them.
Probably should should be just a reference to the image, but even then, I pro probably should downscale the text.
Canal is not going to have an issue with that. I I'm sure of that. I'm sure that if I build the same scene that gives you gives me headaches in in inkscape, but in Canel, it's going to work. I'm pretty sure and it has animations but also suppose that um along with this video component that I expose that simply reads a local um video suppose that uh I also built a stream input component that gets the stream from your camera or from a YouTube video as an example. It's not particularly hard to do. You just have to build um a um element in C++ that gets the stream. There's plenty of ways to do that under the hood that we're still relying on things like ffmpeg libro. We just have to build the the bridge between that and when you do build that bridge and it's easy. You can also have a stream output component. You can do OBS and you know I I I've played with OBS recently just to see all of its features. You've got filters and it's crazy to me that me as as a creative um I work with video editing on kid and life raw image editing raw therapy OBS to stream stuff inkscape to apply and all of these have very similar concepts like I I can apply filters on all of them. Suppose I want to change the brightness or or the saturation of something I can do that there I can do that there there and even in Inkscape there's filters to do that. They all work differently. They all suck for different reasons. I I love them. I love these applications to be clear. I've used them for years. But in this project of mine, it shouldn't take that much.
It's going to still be like years of work. But it's not going to be decades, right? If you build these bridges, you can actually implement the same exact filters and UI to work on all of that.
And it's going to be super fast because it's going to be hardware accelerated.
So, so I don't know. Am I wrong? Tell me. Am I missing something obvious? Am I doing stuff wrong? Is there a much easier way to do that? Because it started as a joke, like let's use QML to edit video files. And it ended up as, wait, this actually makes sense.
I don't know. And the the funny thing, I'll finish with this, but you know, I've actually already spent, as you can see, a lot of time in this. Like, I already have a a bunch of effects. like I tried different things. I'm working on the notes stuff. I spent a bunch of time with this. I've spent just as much time reflecting of what I'm trying to achieve and QML u you know is made a language made to do applications. Uh we are hijacking its purposes here but you know it's made for application. But uh this means that um oh by the way sorry little I forgot about this. Camel also has a lot of 3D stuff and all the 3D stuff is also accelerated also supports all kind of shaders. So you could at basically no effort throw in also 3D stuff and it would just work just to have it there.
But as I was saying it has a lot of uh tools to build applications of and like uh so if we do all of that it takes no time to also reach you know a penpot. If you don't know what a penput is, it's like um this web application that allows you to build interface mockups that are interactive and but like at this point, why not?
If we are dreaming the impossible at this point and planning ahead years of work, if we have to build a tool that's mostly a QML front end that allows you to edit QML code, the front end and bridges between QML and things that you would want to import media files or export rendering. You can kind of do everything that QML can do and that includes building application mockups. actual application is going much harder obviously but at least mockups and interfaces and you know so yeah it's certainly a lot of uh optimism to say the least I'm totally seeing the glass half full but like what if we made an application that replaced kid life inkscape OBS penpot row therapy and or dark room and I don't know what else oh yeah I do know what I I I forgot one thing I reached at a certain point. By the way, um there's I I intentionally avoided this because I I don't know anything about the topic, but like I sooner or later I'll have to handle audio as well. I suppose that it's going to be easyish.
It's one of the things that QML doesn't expose out of the box because KML doesn't let you do, I don't know, compression on some audio files out of the box because why would it? So audio I haven't even looked at right now. And my rendering feature to be clear um doesn't render audio. It's just I'm I'm going to work on that because obviously I need it. But like it shouldn't be too hard.
But like if we properly do audio then that's going to be another cool thing.
But that's probably be going to be more work because you actually have to do all the audio. But sorry there is one issue that I do see. Um, and it's a stupid and like the obvious issue is that this is going to require an insane amount of work and I'm won't have the time to do that. But I'm going to try uh if I keep doing video making as a work, then it makes sense for part of my time to do to be in, you know, getting better tools for my work. I can use part of my money uh that I make video making into working on this because it makes sense. It would make me a better video maker if this worked. But apart from that, this is actually But the fake issue that I do see is that in this ideal world of mine, all of these project files uh from row images to video editing and all of that.
Well, they're all going to be QML file.
Obviously, I think you got that.
um QML QML files have a big issue, a very big issue in that uh they um have JavaScript built in and that is an insane security threat. Uh the this idea that project files can run custom JavaScript code. Yeah. Can that cannot cannot happen simply. So if we actually wanted to have project files that are KML files, then we would have to work on some sort of we who's we I would have to work on some sort of uh subset of KML that doesn't have JavaScript because I'm not even going to attempt sandboxing.
This doesn't make sense. But you know, I think that can be addressed. Maybe I'm too optimistic.
How long have I talked to for where's the video? OBS 1 hour of recording. Oh my god, I'm so sorry. I told you this was going to be rambling. Um, but yeah, so now it's time for you expert developers and expert video makers and I don't know, Kitten Live developers if you're watching this. It's I I I I really really don't want to throw any shade at Kitten Live nor Inkscape nor anything else. To be clear, I love these applications and I've reached out the developers many times to see that. uh it's just that you know this provides more fe features in I mean and doesn't actually provides more feature because it's going to be a lot of work to port the features from an application which is very professional like ken live to this like it have to be how to like automatic masking key key frame tracking it would be an insane amount of work to be clear but if we at least try to do as simple video editing program that also implements all all of the other stuff. I see potential in that. Again, no shade to anyone. I'm not trying to place them.
I just try to build something different that's integrated in many different areas. That's my idea. Uh but yeah, as I was saying, I'm very rambly. Uh, if you if you know about what I'm doing better than me, and there's going to be plenty of people watching this video that do, go ahead and tell me what I'm doing wrong and what's not going to work, so I can know ahead of time. Because if I don't see any convincing reason in the comments not to do this, this is now my my big project that I'm going to spend a bunch of time developing for the next year and a half at least. I've already in my mind planned to spend a couple of years on this and I've already spent like a couple of months into this proof of concept. What else to say? I think that was everything. I'm really sorry for how long this video is. Thanks for listening to the whole thing.
I don't know. Like if you want to help out with the development of this, you can um donate. There's links in the video description. uh and like subscribe to the Librid of News website with a donation there. Generally speaking, like be being able to be a bit more independent from my video making work to work on other stuff would would be would make me happy, but like only if you can afford it to. It's not like really strictly necessary. As you can see, I'm not doing that many videos right now.
Just if you want really want to help me out, of course, any help is appreciated, but you don't have to. I'm going to try doing this anyway. Full disclosure. So yeah, I don't know. See you in the next video. Turn this. By the way, in the next video, I'm also going to talk about this another video. Very videoish topic.
I'm sorry. I I know you want free and open source stuff, but I just wanted to do a few videos on my new passion of making videos.
I'm going to shut up. I promise.
Related Videos
Agentforce NOW AMA: Build with React and Salesforce Multi-Framework
SalesforceDevs
490 views•2026-05-28
How agent o11y differs from traditional o11y — Phil Hetzel, Braintrust
aiDotEngineer
450 views•2026-05-28
WEB TECHNOLOGIES UNIT-2 | Degree 4th sem BCOM Computers web technologies unit-2 full explanation💯✅
LearnwithSahera
1K views•2026-05-29
More tests are always better? How to use AI to identify tests that bring little value
Alliance4Qualification
335 views•2026-05-29
Search Algorithms Explained in 60 Seconds! 🤖💨
samarthtuliofficial
218 views•2026-06-01
People of Game of Thrones using JavaScript DOM
AltCampus
296 views•2026-05-30
Introduction to Problem Solving Part - 1 | Lecture 1 | Intermediate DSA
ascensionix
107 views•2026-05-29
🚀 BCS613C Compiler Design | Module 1 to 5 Schema Evaluation 🔥 | VTU 6th Sem 💯 #VTU #bcs613c #exam
Pranavaa-y4y
104 views•2026-06-02











