LTX-2.3: Image to Video
Upload an image to generate a video with improved motion consistency and fine details, including enhanced support for portrait formats and audio quality.
ワークフローの内部
ソーステンプレートの読み取り専用プレビューです。Cloud で開くと、ノードを確認して変更できます。
Loading the graph
Open full-size workflow preview- 出力
- 動画
- 作成者
- ComfyUI
コードからこのモデルを呼び出す
以下のリクエストでは、Playground と同じ準備済みグラフと設定を使用します。送信ごとに有料実行が開始される場合があります。結果が不明な送信を自動的に再試行しないでください。
What you need
- Runs on
- Comfy Cloud
- キー
- COMFY_API_KEY
- ファイル
- コードによって URL からアップロードされます
有料の Cloud プランとクレジットが必要です。
# Python 3.10+: pip install comfy-sdk==0.4.0
import os
from comfy_sdk import Comfy
api_key = os.environ.get("COMFY_API_KEY", "").strip()
if not api_key: raise RuntimeError("Set COMFY_API_KEY")
os.environ.setdefault("COMFY_BASE_URL", "https://cloud.comfy.org")
client = Comfy(api_key=api_key)
workflow = client.workflows.from_json({
"75": {
"class_type": "SaveVideo",
"inputs": {
"filename_prefix": "video/LTX_2.3_i2v",
"format": "auto",
"format.codec": "auto",
"video": [
"267:242",
0
]
},
"_meta": {
"title": "Save Video"
}
},
"269": {
"class_type": "LoadImage",
"inputs": {
"image": "UPLOADED_image_FILENAME"
},
"_meta": {
"title": "Load Image"
}
},
"267:201": {
"class_type": "PrimitiveBoolean",
"inputs": {
"value": False
},
"_meta": {
"title": "Switch to Text to Video?"
}
},
"267:209": {
"class_type": "KSamplerSelect",
"inputs": {
"sampler_name": "euler_ancestral_cfg_pp"
},
"_meta": {
"title": "KSamplerSelect"
}
},
"267:211": {
"class_type": "ManualSigmas",
"inputs": {
"sigmas": "0.85, 0.7250, 0.4219, 0.0"
},
"_meta": {
"title": "ManualSigmas"
}
},
"267:212": {
"class_type": "LTXVCropGuides",
"inputs": {
"latent": [
"267:217",
0
],
"negative": [
"267:239",
1
],
"positive": [
"267:239",
0
]
},
"_meta": {
"title": "LTXVCropGuides"
}
},
"267:213": {
"class_type": "CFGGuider",
"inputs": {
"cfg": 1,
"model": [
"267:232",
0
],
"negative": [
"267:212",
1
],
"positive": [
"267:212",
0
]
},
"_meta": {
"title": "CFG Guider"
}
},
"267:214": {
"class_type": "LTXVEmptyLatentAudio",
"inputs": {
"audio_vae": [
"267:221",
0
],
"batch_size": 1,
"frame_rate": [
"267:261",
1
],
"frames_number": [
"267:225",
0
]
},
"_meta": {
"title": "Empty LTXV Latent Audio"
}
},
"267:215": {
"class_type": "SamplerCustomAdvanced",
"inputs": {
"guider": [
"267:231",
0
],
"latent_image": [
"267:222",
0
],
"noise": [
"267:237",
0
],
"sampler": [
"267:209",
0
],
"sigmas": [
"267:252",
0
]
},
"_meta": {
"title": "SamplerCustomAdvanced"
}
},
"267:216": {
"class_type": "RandomNoise",
"inputs": {
"noise_seed": 42
},
"_meta": {
"title": "RandomNoise"
}
},
"267:217": {
"class_type": "LTXVSeparateAVLatent",
"inputs": {
"av_latent": [
"267:215",
0
]
},
"_meta": {
"title": "Separate AV Latent"
}
},
"267:218": {
"class_type": "LTXVSeparateAVLatent",
"inputs": {
"av_latent": [
"267:219",
0
]
},
"_meta": {
"title": "Separate AV Latent"
}
},
"267:219": {
"class_type": "SamplerCustomAdvanced",
"inputs": {
"guider": [
"267:213",
0
],
"latent_image": [
"267:229",
0
],
"noise": [
"267:216",
0
],
"sampler": [
"267:246",
0
],
"sigmas": [
"267:211",
0
]
},
"_meta": {
"title": "SamplerCustomAdvanced"
}
},
"267:220": {
"class_type": "LTXVAudioVAEDecode",
"inputs": {
"audio_vae": [
"267:221",
0
],
"samples": [
"267:218",
1
]
},
"_meta": {
"title": "LTXV Audio VAE Decode"
}
},
"267:221": {
"class_type": "LTXVAudioVAELoader",
"inputs": {
"ckpt_name": "ltx-2.3-22b-dev-fp8.safetensors"
},
"_meta": {
"title": "Load LTXV Audio VAE"
}
},
"267:222": {
"class_type": "LTXVConcatAVLatent",
"inputs": {
"audio_latent": [
"267:214",
0
],
"video_latent": [
"267:249",
0
]
},
"_meta": {
"title": "Concat AV Latent"
}
},
"267:225": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 121
},
"_meta": {
"title": "Length"
}
},
"267:228": {
"class_type": "EmptyLTXVLatentVideo",
"inputs": {
"batch_size": 1,
"height": [
"267:259",
1
],
"length": [
"267:225",
0
],
"width": [
"267:256",
1
]
},
"_meta": {
"title": "Empty LTXV Latent Video"
}
},
"267:229": {
"class_type": "LTXVConcatAVLatent",
"inputs": {
"audio_latent": [
"267:217",
1
],
"video_latent": [
"267:230",
0
]
},
"_meta": {
"title": "Concat AV Latent"
}
},
"267:230": {
"class_type": "LTXVImgToVideoInplace",
"inputs": {
"bypass": [
"267:201",
0
],
"image": [
"267:248",
0
],
"latent": [
"267:253",
0
],
"strength": 1,
"vae": [
"267:236",
2
]
},
"_meta": {
"title": "LTXVImgToVideoInplace"
}
},
"267:231": {
"class_type": "CFGGuider",
"inputs": {
"cfg": 1,
"model": [
"267:232",
0
],
"negative": [
"267:239",
1
],
"positive": [
"267:239",
0
]
},
"_meta": {
"title": "CFG Guider"
}
},
"267:232": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "ltx-2.3-22b-distilled-lora-384.safetensors",
"model": [
"267:236",
0
],
"strength_model": 0.5
},
"_meta": {
"title": "Load LoRA"
}
},
"267:233": {
"class_type": "LatentUpscaleModelLoader",
"inputs": {
"model_name": "ltx-2.3-spatial-upscaler-x2-1.1.safetensors"
},
"_meta": {
"title": "Load Latent Upscale Model"
}
},
"267:235": {
"class_type": "ResizeImagesByLongerEdge",
"inputs": {
"images": [
"267:238",
0
],
"longer_edge": 1536
},
"_meta": {
"title": "Resize Images by Longer Edge (DEPRECATED)"
}
},
"267:236": {
"class_type": "CheckpointLoaderSimple",
"inputs": {
"ckpt_name": "ltx-2.3-22b-dev-fp8.safetensors"
},
"_meta": {
"title": "Load Checkpoint"
}
},
"267:237": {
"class_type": "RandomNoise",
"inputs": {
"noise_seed": 723381549937839
},
"_meta": {
"title": "RandomNoise"
}
},
"267:238": {
"class_type": "ResizeImageMaskNode",
"inputs": {
"input": [
"269",
0
],
"resize_type": "scale dimensions",
"resize_type.crop": "center",
"resize_type.height": [
"267:258",
0
],
"resize_type.width": [
"267:257",
0
],
"scale_method": "lanczos"
},
"_meta": {
"title": "Resize Image/Mask"
}
},
"267:239": {
"class_type": "LTXVConditioning",
"inputs": {
"frame_rate": [
"267:261",
0
],
"negative": [
"267:247",
0
],
"positive": [
"267:240",
0
]
},
"_meta": {
"title": "LTXVConditioning"
}
},
"267:240": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"267:243",
0
],
"text": [
"267:274",
0
]
},
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"267:242": {
"class_type": "CreateVideo",
"inputs": {
"audio": [
"267:220",
0
],
"bit_depth": "auto",
"codec": "none",
"color_space": "sRGB",
"fps": [
"267:261",
0
],
"images": [
"267:251",
0
]
},
"_meta": {
"title": "Create Video"
}
},
"267:243": {
"class_type": "LTXAVTextEncoderLoader",
"inputs": {
"ckpt_name": "ltx-2.3-22b-dev-fp8.safetensors",
"device": "default",
"text_encoder": "gemma_3_12B_it_fp4_mixed.safetensors"
},
"_meta": {
"title": "Load LTXV Audio Text Encoder"
}
},
"267:246": {
"class_type": "KSamplerSelect",
"inputs": {
"sampler_name": "euler_cfg_pp"
},
"_meta": {
"title": "KSamplerSelect"
}
},
"267:247": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"267:272",
1
],
"text": "pc game, console game, video game, cartoon, childish, ugly"
},
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"267:248": {
"class_type": "LTXVPreprocess",
"inputs": {
"image": [
"267:235",
0
],
"img_compression": 18
},
"_meta": {
"title": "LTXV Preprocess"
}
},
"267:249": {
"class_type": "LTXVImgToVideoInplace",
"inputs": {
"bypass": [
"267:201",
0
],
"image": [
"267:248",
0
],
"latent": [
"267:228",
0
],
"strength": 0.7,
"vae": [
"267:236",
2
]
},
"_meta": {
"title": "LTXVImgToVideoInplace"
}
},
"267:251": {
"class_type": "VAEDecodeTiled",
"inputs": {
"overlap": 64,
"samples": [
"267:218",
0
],
"temporal_overlap": 4,
"temporal_size": 4096,
"tile_size": 768,
"vae": [
"267:236",
2
]
},
"_meta": {
"title": "VAE Decode (Tiled)"
}
},
"267:252": {
"class_type": "ManualSigmas",
"inputs": {
"sigmas": "1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0"
},
"_meta": {
"title": "ManualSigmas"
}
},
"267:253": {
"class_type": "LTXVLatentUpsampler",
"inputs": {
"samples": [
"267:217",
0
],
"upscale_model": [
"267:233",
0
],
"vae": [
"267:236",
2
]
},
"_meta": {
"title": "LTXVLatentUpsampler"
}
},
"267:256": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "a/2",
"values.a": [
"267:257",
0
]
},
"_meta": {
"title": "Math Expression"
}
},
"267:257": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 1280
},
"_meta": {
"title": "Width"
}
},
"267:258": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 720
},
"_meta": {
"title": "Height"
}
},
"267:259": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "a/2",
"values.a": [
"267:258",
0
]
},
"_meta": {
"title": "Math Expression"
}
},
"267:260": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 25
},
"_meta": {
"title": "Frame Rate"
}
},
"267:261": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "a",
"values.a": [
"267:260",
0
]
},
"_meta": {
"title": "Math Expression"
}
},
"267:266": {
"class_type": "PrimitiveStringMultiline",
"inputs": {
"value": "The dancer lands from her leap on the wet granite plaza and flows straight into a slow spinning turn, her indigo silk robe whipping out in a wide arc and her silver-streaked hair lifting in the wind. She sweeps one arm low across the reflective stone, rises onto her toes, then stretches both arms toward the storm clouds and holds the pose as fine drizzle drifts across the frame. The camera starts low and wide, then orbits halfway around her in one smooth continuous move, pushing in as she reaches upward so she ends in a medium shot against the hazy twilight. Her bare feet splash small ripples in the puddles. Sound of gusting wind, soft rain on stone, fabric snapping in the air and her steady breathing, with no music."
},
"_meta": {
"title": "Prompt"
}
},
"267:272": {
"class_type": "LoraLoader",
"inputs": {
"clip": [
"267:243",
0
],
"lora_name": "gemma-3-12b-it-abliterated_lora_rank64_bf16.safetensors",
"model": [
"267:236",
0
],
"strength_clip": 1,
"strength_model": 1
},
"_meta": {
"title": "Load LoRA (Model and CLIP)"
}
},
"267:274": {
"class_type": "TextGenerateLTX2Prompt",
"inputs": {
"clip": [
"267:272",
1
],
"image": [
"269",
0
],
"max_length": 256,
"mtp": "auto",
"prompt": [
"267:266",
0
],
"sampling_mode": "on",
"sampling_mode.min_p": 0.05,
"sampling_mode.repetition_penalty": 1.05,
"sampling_mode.seed": 0,
"sampling_mode.temperature": 0.7,
"sampling_mode.top_k": 64,
"sampling_mode.top_p": 0.95,
"thinking": False,
"use_default_template": True
},
"_meta": {
"title": "Generate LTX2 Prompt"
}
},
"267:275": {
"class_type": "PreviewAny",
"inputs": {
"source": [
"267:274",
0
]
},
"_meta": {
"title": "Preview as Text"
}
}
})
workflow.set_input("269", "image", client.assets.from_url("https://comfy.org/catalog-media/6bf242fd-aaa2-44da-a4d2-aae9ebc6d13b/9ca60480-d521-414d-8f6e-a9729e884690"))
# run() also passes api_key to the partner nodes in this workflow.
job = client.run(workflow, api_key=api_key)
for output in job.get_outputs("75"):
output.to_file(output.name)例を試す
このワークフローについて
The LTX-2.3: Image to Video workflow is designed to transform static images into dynamic video sequences with enhanced motion consistency and detailed visual fidelity. By leveraging the LTX-2.3 model from Lightricks, this workflow excels in maintaining the integrity of fine details while transitioning from image to video format. It also offers robust support for portrait formats, ensuring that videos retain their intended aspect ratios and compositions. The workflow integrates several key nodes, including LoadImage for importing the initial image, and SaveVideo for exporting the final video output. Additionally, the b94257db-cdc1-45d3-8913-ca61e782d9c1 node is crucial for processing and enhancing audio quality, thereby enriching the overall video experience.
Technically, this workflow operates by first loading an image through the LoadImage node, which serves as the foundational input. The LTX-2.3 model then applies sophisticated algorithms to generate a sequence of frames that smoothly transition from the initial image. This is achieved by interpreting the core actions and visual details specified in the prompts, allowing for a coherent narrative flow. The SaveVideo node finalizes the process by compiling these frames into a cohesive video file. This workflow is particularly useful for creators looking to add dynamic elements to still images, whether for storytelling, marketing, or artistic purposes.
よくある質問
The LoadImage node supports common image formats such as JPEG, PNG, and BMP.
Yes, the frame rate can be adjusted within the LTX-2.3 model settings to suit your specific needs.
Yes, the workflow includes a node for enhancing audio quality, allowing you to integrate custom audio tracks.
The workflow supports portrait formats, and you can configure settings in the LTX-2.3 model to preserve the aspect ratio.