I would like to create my own simple video editor, the features I want to implement are basically:
- merge multiple video files
- add background music
- add custom texts, images, stickers, etc
- cropping, zoom, etc
- apply basic filters like bw, sephia, etc
From a coding point of view, I think I can get these tasks done with ffmpeg. The problem where I get confused is how to implement the UI for this.
I mean, I want to create an editor that shows a "live preview" of what's being done, pretty much like most of the video editors do.
The easiest way to do this would be to re-encode the whole video every time something is changed, but that's just a terrible idea.
Instead, I belive I need to find a way to extract all the frames from the video and edit them in memory to reflect what is being one (ie, adding text, images, cropping etc) and when the user wants to preview it, I just play frame by frame.
The problem is that I don't know how problematic this can get, of course it will use tons of storage if I want to save all the frames, even worst if I store them in memory.
So what's the best solution?
On the other hand, I though about creating a real video player like exoplayer and add an overlay on top of it that will render the custom texts, images etc... but I won't be able to manipulate the frames in case of other effects like cropping, zooming etc.
Anyway, any inputs on this would be really appreciated.