Skip to main content

Open-source video generation framework

Project description

Mosaico

License Python PyPI Downloads Stars

Mosaico is a Python library for programmatically creating and managing video compositions. It provides a high-level interface for working with media assets, positioning elements, applying effects, and generating video scripts.

Installation

pip install mosaico

Features

  • AI-powered script generation for videos
  • Rich media asset management (audio, images, text, subtitles)
  • Flexible positioning system (absolute, relative, region-based)
  • Built-in effects (pan, zoom) with extensible effect system
  • Text-to-speech synthesis integration
  • Integration with popular ML frameworks, such as Haystack and LangChain

Quick Start

Easily create and render a video project from a script generator:

from mosaico.audio_transcribers.assemblyai import AssemblyAIAudioTranscriber
from mosaico.script_generators.news import NewsVideoScriptGenerator
from mosaico.speech_synthesizers.elevenlabs import ElevenLabsSpeechSynthesizer
from mosaico.video.project import VideoProject
from mosaico.video.rendering import render_video


# Import your media
media = [
    Media.from_path("background.jpg", metadata={"description": "Background image"}),
    Media.from_path("image1.jpg", metadata={"description": "Image 1"}),
    Media.from_path("image2.jpg", metadata={"description": "Image 2"}),
    Media.from_path("image3.jpg", metadata={"description": "Image 3"}),
]

# Textual context for the video
context = "..."

# Create script generator
script_generator = NewsVideoScriptGenerator(
    context=context,
    language="pt",
    num_paragraphs=8,
)

# Create speech synthesizer
speech_synthesizer = ElevenLabsSpeechSynthesizer(
    voice_id="Xb7hH8MSUJpSbSDYk0k2",
    voice_stability=0.8,
    voice_similarity_boost=0.75,
    voice_speaker_boost=False,
)

# Create audio transcriber for captions
audio_transcriber = AssemblyAIAudioTranscriber()

# Create project
project = (
    VideoProject.from_script_generator(script_generator, media)
    .with_title("My Breaking News Video")
    .with_fps(30)
    .with_resolution((1920, 1080))
    .add_narration(speech_synthesizer)
    .add_captions_from_transcriber(audio_transcriber, overwrite=True)
)

# Render project
render_video(project, "My-Breaking-News-Video.mp4")

Or create a video project from scratch:

from mosaico.video.project import VideoProject
from mosaico.assets import ImageAsset, TextAsset, AudioAsset, AssetReference

# Import your media as production-ready assets
assets = [
    ImageAsset.from_path("background.jpg", metadata={"description": "Background image"}),
    ImageAsset.from_path("image1.jpg", metadata={"description": "Image 1"}),
    ImageAsset.from_path("image2.jpg", metadata={"description": "Image 2"}),
    ImageAsset.from_path("image3.jpg", metadata={"description": "Image 3"}),
    TextAsset.from_data("Subtitle 1"),
    TextAsset.from_data("Subtitle 2"),
    TextAsset.from_data("Subtitle 3"),
    AudioAsset.from_path("narration.mp3"),
]

asset_references = [
    AssetReference.from_asset(background, start_time=0, end_time=10),
    AssetReference.from_asset(image1, start_time=10, end_time=20),
    AssetReference.from_asset(image2, start_time=20, end_time=30),
    AssetReference.from_asset(image3, start_time=30, end_time=40),
    AssetReference.from_asset(subtitle1, start_time=40, end_time=50),
    AssetReference.from_asset(subtitle2, start_time=50, end_time=60),
    AssetReference.from_asset(subtitle3, start_time=60, end_time=70),
    AssetReference.from_asset(narration, start_time=70, end_time=80),
]

scene = Scene(description="My Scene").add_asset_references(asset_references)

project = (
    VideoProject()
    .with_title("My Breaking News Video")
    .with_fps(30)
    .with_resolution((1920, 1080))
    .add_assets(assets)
    # Add the asset references as scene events to the timeline
    .add_timeline_events(scene)
    # Or add asset references directly to the timeline
    # .add_timeline_events(asset_references)
)

# Render project
render_video(project, "My-Breaking-News-Video.mp4")

Cookbook

For common usage patterns and examples, see our Cookbook. Some examples include:

  • Creating basic videos with background and text
  • Building photo slideshows with music
  • Generating news videos from articles
  • Working with different asset types
  • Applying effects and animations
  • Using AI for script generation

Documentation

Comprehensive documentation is available here. Documentation includes:

  • Getting Started: Installation, setup, and basic usage
  • Concepts: Overview of key concepts and terminology
  • Cookbook: Examples and tutorials for common tasks
  • API Reference: Detailed reference for all classes and functions
  • Development: Information for contributors and developers
  • Roadmap: Future plans and features

References

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

mosaico-0.1.0rc5.tar.gz (230.1 kB view details)

Uploaded Source

Built Distribution

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

mosaico-0.1.0rc5-py3-none-any.whl (78.0 kB view details)

Uploaded Python 3

File details

Details for the file mosaico-0.1.0rc5.tar.gz.

File metadata

  • Download URL: mosaico-0.1.0rc5.tar.gz
  • Upload date:
  • Size: 230.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.4

File hashes

Hashes for mosaico-0.1.0rc5.tar.gz
Algorithm Hash digest
SHA256 bee8a71cdc38d8358c25cbf0c0c1466eefcee4f995d2385d9566be9dd7ad3687
MD5 19d11c2f8bfee3fbf4e37293265d34bf
BLAKE2b-256 431566a61a8f3d4f8af4829d6259e72b8e2261a0cdf4793928aee352726f1640

See more details on using hashes here.

File details

Details for the file mosaico-0.1.0rc5-py3-none-any.whl.

File metadata

  • Download URL: mosaico-0.1.0rc5-py3-none-any.whl
  • Upload date:
  • Size: 78.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.4

File hashes

Hashes for mosaico-0.1.0rc5-py3-none-any.whl
Algorithm Hash digest
SHA256 341a354adcb0aa4292232ea50c4f98ee7a13d1ec58f7b2bee61398548735a4de
MD5 d2631a034126d67eebe613bfccfebf23
BLAKE2b-256 d3072a14040a104dac1e8d2f771906bd3ec735d641a4d4cc6074387757e94a5c

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