Movis is a powerful Python-based engine specifically developed to streamline and enhance video production tasks. With this innovative library, users are empowered to effortlessly create professional-quality videos across a diverse range of genres and styles.

Whether it's captivating presentation videos, visually stunning motion graphics, artistic shader art coding, or engaging game commentary videos, Movis offers endless possibilities for content creation.

By leveraging the versatility and simplicity of Python, users can unlock their creativity and bring their video ideas to life with ease and efficiency.

Features

  • Easy and intuitive video editing (including scene cut, transition, crop, concatenation, inserting images and texts, etc.)
  • Layer transformation (position, scale, and rotation) with sub-pixel precision
  • Support for a variety of Photoshop-level blending modes
  • Keypoint and easing-based animation engine
  • Nested compositions
  • Inserting text layers containing multiple outlines
  • Simple audio editing (including fade-in and fade-out effects)
  • Support for a variety of video and audio formats using ffmpeg
  • Layer effects (drop shadow, grow, blur, chromakey, etc.)
  • Support for rendering at 1/2 quality and 1/4 quality for drafts
  • Fast rendering using cache mechanism
  • Adding user-defined layers, effects, and animations without using inheritance

Install

$ pip install movis

Example

Creating Video with Compositions

Similar to other video editing software, Movis employs the concept of "compositions" as the fundamental unit for video editing. Within a composition, users can include multiple layers and manipulate these layers' attributes over a timescale to produce a video. Effects can also be selectively applied to these layers as needed.

Here's some example code:

import movis as mv

scene = mv.layer.Composition(size=(1920, 1080), duration=5.0)
scene.add_layer(mv.layer.Rectangle(scene.size, color='#fb4562'))  # Set background

pos = scene.size[0] // 2, scene.size[1] // 2
scene.add_layer(
    mv.layer.Text('Hello World!', font_size=256, font_family='Helvetica', color='#ffffff'),
    name='text',  # The layer item can be accessed by name
    offset=1.0,  # Show the text after one second
    position=pos,  # The layer is centered by default, but it can also be specified explicitly
    anchor_point=(0.0, 0.0),
    opacity=1.0, scale=1.0, rotation=0.0,  # anchor point, opacity, scale, and rotation are also supported
    blending_mode='normal')  # Blending mode can be specified for each layer.
scene['text'].add_effect(mv.effect.DropShadow(offset=10.0))  # Multiple effects can be added.
scene['text'].scale.enable_motion().extend(
    keyframes=[0.0, 1.0], values=[0.0, 1.0], easings=['ease_in_out'])
# Fade-in effect. It means that the text appears fully two seconds later.
scene['text'].opacity.enable_motion().extend([0.0, 1.0], [0.0, 1.0])

scene.write_video('output.mp4')

License

  • MIT License

Resources

GitHub - rezoo/movis: Python library for video editing, presentation video generation, motion graphics, shader art coding, and other video production tasks
Python library for video editing, presentation video generation, motion graphics, shader art coding, and other video production tasks - GitHub - rezoo/movis: Python library for video editing, preseā€¦