Skip to main content

A small library to create colorful, dynamic videos with TTS audio

Project description

TinyWorld

TinyWorld is a Python library + CLI that generates short, dynamic, colorful videos with:

  • Text & Image shapes
  • Transitions (fade in/out, move, rotate, scale)
  • TTS Audio (powered by Google gTTS)
  • Scene-based timeline
  • Automatic final MP4 creation

Installation

pip install tinyworld

Usage (CLI)

  1. Create a JSON script (e.g. example.json) describing your config, tts text, scenes, shapes, transitions.
  2. Run:
tinyworld example.json

This will produce frames, generate TTS audio if present, and create a final MP4 (the default is tinyworld_output.mp4 or whatever you set in config).

Demo

{
  "config": {
    "width": 640,
    "height": 360,
    "fps": 30,
    "bg_color": "white",
    "font_path": null,
    "font_size": 32,
    "output_file": "my_dynamic_video.mp4",
    "tts_lang": "en"
  },
  "tts": "Welcome to the tiny world! Here, shapes and images come to life with simple transitions.",
  "scenes": [
    {
      "duration": 5,
      "bg_color": "white",
      "shapes": [
        {
          "type": "text",
          "id": "intro_text",
          "text": "Hello, TinyWorld!",
          "x": 320,
          "y": 180
        }
      ],
      "transitions": [
        {
          "name": "FadeIn",
          "shape_id": "intro_text",
          "start_time": 0,
          "end_time": 2
        }
      ]
    },
    {
      "duration": 4,
      "bg_color": "white",
      "shapes": [
        {
          "type": "image",
          "id": "logo_img",
          "image_path": "logo.png",
          "x": 200,
          "y": 180
        }
      ],
      "transitions": [
        {
          "name": "Move",
          "shape_id": "logo_img",
          "start_time": 0,
          "end_time": 3,
          "start_pos": [200, 180],
          "end_pos": [440, 180]
        },
        {
          "name": "Rotate",
          "shape_id": "logo_img",
          "start_time": 1,
          "end_time": 4,
          "start_angle": 0,
          "end_angle": 720
        }
      ]
    }
  ]
}

Watch the demo video

Features

  • Scene-by-scene animation
  • Easy text or image shapes
  • Move, rotate, scale, fade in/out
  • TTS to add narration over the video
  • JSON-based script means no coding needed
  • Uses MoviePy to merge frames & audio

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tinyworld-0.1.0.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tinyworld-0.1.0-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file tinyworld-0.1.0.tar.gz.

File metadata

  • Download URL: tinyworld-0.1.0.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for tinyworld-0.1.0.tar.gz
Algorithm Hash digest
SHA256 19059b725ec08f1a06dcc3e8754bc46dbaa360e0710684ef993936432473e95a
MD5 9c1d6e03d73dadea6eb54edbdfe8a3c1
BLAKE2b-256 37f49a76666cb2b0738b168d2056bf9aad371016e65ebaccc3b16ecd29b79813

See more details on using hashes here.

File details

Details for the file tinyworld-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: tinyworld-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for tinyworld-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d7380a687dc77f9ca16ba251afc8eab6f4a3074a22897619b5ba7a0d4e3ecc53
MD5 32c35c49e1abdd073adfed68a7ee9e94
BLAKE2b-256 826e2e569392d253d7b079d477fc71274452832201e260f24c37bf0d6d73eabb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page