Skip to main content

Add your description here

Project description

LongSoraGen

English | 简体中文

This project provides a full OpenAI-compatible API for generating longer Sora videos by intelligently splitting them into segments and ensuring seamless continuity.

1. Overview

LongSoraGen overcomes Sora's duration limitations by breaking down long video generation requests into multiple connected segments. The system uses AI-powered planning to create coherent narratives across segments and maintains visual continuity by using the last frame of each segment as a reference for the next.

Some of the code and idea is from https://github.com/mshumer/sora-extend, thank you for their work.

⚠️ Note: This codebase has not been fully tested yet because I don't have access to the OpenAI API. It should work well generally. If you encounter any problems and are kind enough to help improve this project, I would really appreciate it.

2. How It Works

LongSoraGen's main idea follows mshumer's ideas and operates in three main stages:

  1. We segment the total video durations into segmentations, and generate prompt for each segmentation.

  2. We use the frame from the last video as the frame reference to generate the following frames.

  3. Finally, we combine all the video segments.

3. Installation

FFmpeg is needed for video processing, please install it first.

  1. Install from pypi:

We have distributed our library to PyPI, check it out:

pip install longsora
  1. Install from scratch:

We highly recommend using the uv to install the environments:

uv sync

The environment will be installed in .venv. Activate it using:

source .venv/bin/activate

Set up OpenAI API Key:

export OPENAI_API_KEY='your-api-key-here'

4. Quick Start

Basic Example (Synchronous)

from pathlib import Path
from longsora import OpenAI

output_dir = Path("resources") / "case1"
prompt = "A woman is dancing in a bunch of trees."
model = "sora-2"
seconds_per_segment = 8
num_generations = 3
print(f"the video will be {seconds_per_segment * num_generations} seconds long")

if __name__ == "__main__":
    client = OpenAI()
    client.create_video(
        prompt=prompt,
        model=model,
        seconds_per_segment=seconds_per_segment,
        output_dir=output_dir,
        num_generations=num_generations,
        verbose=True,
        save_segments=True,
        plan_model="gpt-5",
    )

Async Example

import asyncio
from pathlib import Path
from longsora import AsyncOpenAI

output_dir = Path("resources") / "case2"
prompt = "A woman is dancing in a bunch of trees."
seconds_per_segment = 8
model = "sora-2"
num_generations = 2

print(f"the video will be {seconds_per_segment * num_generations} seconds long")

async def main():
    client = AsyncOpenAI()
    await client.create_video(
        prompt=prompt,
        model=model,
        seconds_per_segment=seconds_per_segment,
        output_dir=output_dir,
        num_generations=num_generations,
        verbose=True,
        save_segments=True,
        plan_model="gpt-5",
    )

if __name__ == "__main__":
    asyncio.run(main())

5. License

MIT License

Copyright (c) 2025 LLinkedlist

See LICENSE for details.

6. Citation

If you use this project in your research or applications, please cite:

@misc{longsoragen2025,
  author = {linkedlist771},
  title = {LongSoraGen: Extended Video Generation with OpenAI Sora},
  year = {2025},
  url = {https://github.com/linkedlist771/LongSoraGen}
}

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

longsora-0.1.3.tar.gz (447.7 kB view details)

Uploaded Source

Built Distribution

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

longsora-0.1.3-py3-none-any.whl (1.0 MB view details)

Uploaded Python 3

File details

Details for the file longsora-0.1.3.tar.gz.

File metadata

  • Download URL: longsora-0.1.3.tar.gz
  • Upload date:
  • Size: 447.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.13

File hashes

Hashes for longsora-0.1.3.tar.gz
Algorithm Hash digest
SHA256 ab0ffe4d82301497c13e18a432b23928636f76df62e3e9b7ebb6a2d71e7072af
MD5 f1d21230a08438375116f8edf0378170
BLAKE2b-256 aadc2b8b3e5bee67d2357ad18b622b4f0814806846f0853f8fd77fed46b0bc9b

See more details on using hashes here.

File details

Details for the file longsora-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: longsora-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.13

File hashes

Hashes for longsora-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 eb32bdd7d18cf06d2c68bcd401d94c386d3960aca8496273b33b8571b152f6e9
MD5 296dad349fa9b07dba07c9bbfdf8cdc5
BLAKE2b-256 af771aafb944401c93168a2c70e54b2bd3b49e5da35a6a54711447a0e19e0772

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