Logo

dev-resources.site

for different kinds of informations.

Creating a video editing tool in python (part 1 of many)

Published at
6/9/2019
Categories
python
videoediting
creativity
diy
Author
paulplanchon_
Author
13 person written this
paulplanchon_
open
Creating a video editing tool in python (part 1 of many)

In advance sorry for my bad writting skill, I'm french and still learning shakespeare's language

The software I will introduce you to is still in active development, its cannot be used properly. I'm still developping it. I just want to share to you my idea

I have always been a video lover : watch them, enjoy them, create them... I'm also a curiosity driven person. So when, a few month back, I challenge myself to create a video editing software in Python, two of my universes collided.

This challenge is driven by the curiosity of discovering a new way of using code to create things. But it was also a way to help me understand how 3blue1brown's manim software work. In fact, I always been fasinated by 3B1B work. I think is pure and elegant, and when I knew that all the video are created in python I lost my mind. So I spend some time trying understand the software. And started writing my own rendering software adding to it my own ideas.

My software is inspired by 3B1B software, I tried to make the software closer to "real software" like premiere pro. Manim just follow the flow of the code to render. But i tried to implement a timeline based rendering system.

The rendering software

The main idea of VidTex (the name of the software I'm creating video+LaTeX / video+technologie) is that the user write the movie and then VidTex do the render, nothing is real-time. To use the software you have to create a folder containning at least one file movie_main.py. This file contains all the scene the movie is composed of. A scene is composed of animations.

When you start the render, VidTex open the file movie_main.py and extract the movie scene (using importlib). The user had written all the movie in a function called prepare. In this function the user call for all the scene the movie use and tell VidTex when they have to be render in the movie. For example, the following code tell VidTex that the movie has only one scene that last for 60 frames (the frame-rate is set in a configuration file).

def prepare(self):
    self.add_to_timeline(FirstScene, 0, 60, dtype="frames")

The FirstScene object is a Scene, as the movie, you have to prepare the scene : instead of adding scene to the timeline you add animations. So a prepare function of a scene would look like that :

def prepare(self):
    self.add_to_timeline(Animation1(anim_args**), 0, 60, z-index=-2)
    self.add_to_timeline(Animation2(anim_args**), 10, 55)
    self.add_to_timeline(Animation3(anim_args**), 2, 30, z-index=1)

When you trigger the render process, VidTex will look for the Movie class and try to render the first frame (sorted by start time, if no scene at t, frame t is black).

Understanding the timeline based render

When VidTex start the render process, it will call the timeline and ask for all the scene which need to be shown at frame t. Kinda recursivly, all the scene called will do their render at frame scene["start_time"] - t. Each animation has a buffer, all the animation buffer are added to create the scene frame buffer, which is at the end added to the main frame buffer to create the frame. Adding to the buffer is ruled by the z-index of the scene / animation (the bigger the z-index the closer you are).

This is how should should understand how the movie scene and animation structure work.

The time line is similear to a "normal" video editing program. There is a representation :

So at the time the cursor is at, the farest animation is animation 2 from scene 1. If there is a non transparent animation, for exemple in scene 3, animation 2 from scene 1 will not been shown. VidTex's timeline works the same as premier pro, after effect's timeline. You just have to write it in code.

Why VidTex ?

As I said earlier, its a way for me to collide two of my passions. But its also a tool programers need. You want to be able to create movie of your simulation for example. The fact that an animation is isolate from the rest of the movie means that you could run physics simulation in an animation and render it with VidTex. But will rendering the physic simulation you could add a text overlay, or explain using an other video whats going on. Nobodies want to deal with FFMPEG pipeline all the time to create simple videos.

For the futur

For the moment VidTex can only do render of very basic animation (called primitive). I'm still working on the code a lot. But the idea is to have some basic animation and a animation manager from which you could be able to download animation from the web and add them to your movie.

I will try to keep you updated about VidTex, if you are interested by reading the buggy and not very clean code of VidTex you can here.

videoediting Article's
26 articles in total
Favicon
Davinci Resolve 19.1.2 x Linux Mint 22 AAC Audio Workaround
Favicon
Top Video Editing Apps for Android: A Comprehensive Guide to the Best Tools
Favicon
How to Install DaVinci Resolve 19 (studio) on Linux Mint 22 with AMD Radeon Graphics Card with a Script fast 2025
Favicon
Video Editing and Graphic Design Course
Favicon
Introducing Videmix: The Effortless Online Video Editing Platform
Favicon
Submagic: Turn Videos Viral with AI Captions
Favicon
Upgrade Your Social Media with Amazing Video Editing!
Favicon
Effortless Content Creation with EngagexAI: Videos and Podcasts Made Easy!
Favicon
How we edited 175 conference videos in 5 hours
Favicon
How to Install DaVinci Resolve 19 (beta) on Linux Mint 22 with AMD Radeon Graphics Card
Favicon
Mastering Adobe Premiere Pro A Beginner-Friendly Tutorial for Professional-Looking Videos
Favicon
How to cancel capcut pro subscription
Favicon
13 Best Video Transitions that’ll Make You a PRO Video Creator
Favicon
VideoProc: The Must-Have Tool for Modern Creators
Favicon
Get Professional-Quality Videos in Minutes with the Amazing AI Video Editor
Favicon
Title: Exploring the World of 3D Video Editing: Techniques and Tips
Favicon
Adding sound wave overlays to videos and pictures using FFMPEG
Favicon
Top 10 Best Video Editing Apps
Favicon
Edit a video from start to finish by joining ADMEC's Video Editing Course
Favicon
Appwrite Loves Open Source: Why I Choose To Support Kdenlive
Favicon
How to Crop Videos Quickly
Favicon
Best Photo & video Editing Software's for Android?
Favicon
Get started editing videos with the VEED API.
Favicon
How to Install DaVinci Resolve 16 on Linuxmint 20 with AMD Radeon Graphic Card
Favicon
How to Edit your videos for youtube using iMovie
Favicon
Creating a video editing tool in python (part 1 of many)

Featured ones: