OpenSource-Hub

ViMax

アプリケーション

HKUDS/ViMax

アイデア、小説、または脚本を自動的に完全な動画に変換するエージェントシステム。

概要

ViMax は、監督、脚本家、プロデューサー、動画生成の機能を一体化したオールインワンのエージェント動画生成プラットフォームです。オリジナルのアイデア、完全な小説、脚本に基づいて、絵コンテ、キャラクター、最終動画を自律的に作成でき、アイデアから動画への変換、小説の映像化、脚本作成、本人出演など、複数のモードをサポートしています。

README プレビュー

\n   \n	\n  \n\n  ViMax: Agentic Video Generation\n\n  \n  \n\n  \n    \n	\n	\n  \n\n  \n    \n    \n  \n\n  \n    \n  \n\n\n\n	\n\n	\n    \n\n    \n      \n    \n\n\n\n---\n\n### 🚨 Current Video Generation Limitations:\n- ❌ **Limited to Short Clips** - Most AI tools generate only seconds of footage. \n- ❌ **Consistency Chaos** - Characters and scenes change unpredictably across frames. \n- ❌ **Visual-Only Focus** - Missing scripts, audio, narrative structure, and storytelling depth. \n\n### 💡 ViMax Solution:\n🎬 **Director**, **Screenwriter**, **Producer**, and **Video Generator** **All-in-One**! We're exploring a future where AI becomes a complete creative powerhouse. 💡 Simply input your concept. ViMax autonomously handles the rest. It orchestrates scriptwriting, storyboarding, character creation, and final video generation—all end-to-end. 🚀\n\nhttps://github.com/user-attachments/assets/5bad46b2-8276-4e1d-9480-3522640744b2\n\n\n\n\n\n---\n\n\n## 📑 Table of Contents\n\n- [💡 Key Features](#key-features)\n- [🔮 Demos](#Video-Demos-Generated-from-Scratch)\n- [🏗️ Architecture](#️-architecture)\n- [🚀 Quick Start](#quick-start)\n\n---\n## 💡Key Features\n\n\n\n\n\n\n\n\n🌟 Idea2Video\n\n\n\n  \n\n\n\nFrom Spark to Screen\n\n\n\nTransform  raw ideas  into complete video stories through intelligent multi-agent workflows automating  storytelling, character design, and production .\n\n\n\n\n\n\n\n\n\n🎨 Novel2Video\n\n\n\n  \n\n\n\nSmart Literary Adaptation Engine\n\n\n\nTransform complete novels into episodic video content with intelligent narrative compression, character tracking, and scene-by-scene visual adaptation\n\n\n\n\n\n\n\n\n⚙️ Script2Video\n\n\n\n  \n\n\n\nUnlimited Screenplay Video Creation\n\n\n\nUnleash your creativity by writing any screenplay from personal stories to epic adventures, giving you complete control over every aspect of your visual storytelling.\n\n\n\n\n\n\n\n\n\n\n🤳 AutoCameo\n\n\n\n  \n\n\n\nGenerate Video from Your Photo\n\n\n\n Crea

FAQ (2)

トラブル対応
LLMがOptionalでないPydanticフィールドに対してnullを返す場合のLangChain OutputParserExceptionの修正方法

このエラーは、Pydantic が int、bool、str として型付けされた必須フィールドに対して null を拒否するために発生します。LLM が null を返す可能性のあるすべてのフィールドを Optional にし、デフォルト値を None に設定してください:

from typing import Optional
from pydantic import BaseModel, Field, model_validator

class CameraParentItem(BaseModel):
    parent_cam_idx: Optional[int] = Field(
        default=None,
        description="The index of the parent camera. Use null for the root camera.",
        examples=[0, 1, None],
    )
    parent_shot_idx: Optional[int] = Field(
        default=None,
        description="The index of the dependent shot. Use null for the root shot.",
        examples=[0, 3, None],
    )
    reason: Optional[str] = Field(
        default=None,
        description="The reason for selecting the parent camera.",
    )
    is_parent_fully_covers_child: Optional[bool] = Field(
        default=None,
        description="Whether the parent camera fully covers the child camera's content.",
        examples=[True, False, None],
    )
    missing_info: Optional[str] = Field(
        default=None,
        description="Elements in the child shot not covered by the parent shot. Set to null when fully covered.",
    )

ルートアイテムのみが null の親参照を持つ可能性がある場合は、ルート以外のアイテムが有効なままとなるようにバリデーションを追加してください:

@model_validator(mode="after")
def validate_root_item(self):
    if self.parent_cam_idx is None or self.parent_shot_idx is None:
        if self.reason is None or "root" not in self.reason.lower():
            raise ValueError("Only the root camera/shot may have null parent indices")
    return self

また、LLM のプロンプトも更新して、parent_cam_idx と parent_shot_idx はルートアイテムの場合にのみ null とし、それ以外の場合は整数でなければならないことを明示してください。

参照 Issue #17
トラブル対応
ViMaxで「'Novel2MoviePipeline' object has no attribute 'working_dir'」エラーを修正する方法

Novel2MoviePipeline.__init__ で不足している属性を定義してください。パイプラインは self.working_dir、self.embeddings、self.novel_compressor を代入せずに使用しています。次のような初期化処理を追加してください:

from pathlib import Path

class Novel2MoviePipeline:
    def __init__(self, embeddings, novel_compressor, working_dir="output", ...):
        self.embeddings = embeddings
        self.novel_compressor = novel_compressor
        self.working_dir = Path(working_dir)
        self.working_dir.mkdir(parents=True, exist_ok=True)

パイプラインをインスタンス化する際に必要な依存関係を渡し、古くなったインポートを現在の interfaces パッケージを使用するように更新してください。これは issue #43 に対する PR "fix: initialize Novel2MoviePipeline dependencies" によって修正されています。

参照 Issue #43