Diffusers documentation
HunyuanVideo-1.5
HunyuanVideo-1.5
HunyuanVideo-1.5 adalah model generasi video yang ringan namun kuat, yang mencapai kualitas visual dan koherensi gerak terkini (state-of-the-art) dengan hanya 8,3 miliar parameter, memungkinkan inferensi yang efisien pada GPU kelas konsumen. Pencapaian ini dibangun di atas beberapa komponen utama, termasuk kurasi data yang cermat, arsitektur DiT yang canggih dengan perhatian selektif dan seluncur ubin (selective and sliding tile attention/SSTA), pemahaman dwibahasa yang ditingkatkan melalui pengkodean teks yang sadar glif (glyph-aware), pra-pelatihan dan pasca-pelatihan progresif, serta jaringan super-resolusi video yang efisien. Dengan memanfaatkan desain-desain ini, kami mengembangkan kerangka kerja terpadu yang mampu menghasilkan generasi teks-ke-video dan gambar-ke-video berkualitas tinggi di berbagai durasi dan resolusi. Eksperimen ekstensif menunjukkan bahwa model yang ringkas dan mahir ini menetapkan state-of-the-art baru di antara model sumber terbuka.
Anda dapat menemukan semua checkpoint HunyuanVideo asli di bawah organisasi Tencent.
Klik pada model HunyuanVideo di bilah sisi kanan untuk melihat lebih banyak contoh tugas generasi video.
Contoh di bawah menggunakan checkpoint dari hunyuanvideo-community karena bobotnya disimpan dalam tata letak yang kompatibel dengan Diffusers.
Contoh di bawah ini menunjukkan cara menghasilkan video yang dioptimalkan untuk memori atau kecepatan inferensi.
<hfoptions id="usage"> <hfoption id="memory">Lihat panduan Reduce memory usage untuk detail lebih lanjut tentang berbagai teknik penghematan memori.
import torch
from diffusers import AutoModel, HunyuanVideo15Pipeline
from diffusers.utils import export_to_video
pipeline = HunyuanVideo15Pipeline.from_pretrained(
"HunyuanVideo-1.5-Diffusers-480p_t2v",
dtype=torch.bfloat16,
)
# model-offloading and tiling
pipeline.enable_model_cpu_offload()
pipeline.vae.enable_tiling()
prompt = "A fluffy teddy bear sits on a bed of soft pillows surrounded by children's toys."
video = pipeline(prompt=prompt, num_frames=61, num_inference_steps=30).frames[0]
export_to_video(video, "output.mp4", fps=15)Catatan
HunyuanVideo1.5 menggunakan attention masks dengan sekuens berpanjang variabel. Untuk kinerja terbaik, kami merekomendasikan penggunaan backend attention yang menangani padding secara efisien.
- H100/H800:
_flash_3_hubatau_flash_3_varlen_hub - A100/A800/RTX 4090:
flash_hubatauflash_varlen_hub - GPU lainnya:
sage_hub
- H100/H800:
Lihat panduan Attention backends untuk detail lebih lanjut tentang penggunaan backend yang berbeda.
pipe.transformer.set_attention_backend("flash_hub") # or your preferred backend- HunyuanVideo15Pipeline menggunakan guider dan tidak menerima parameter
guidance_scalesaat runtime.
Anda dapat memeriksa konfigurasi guider default menggunakan pipe.guider:
>>> pipe.guider
ClassifierFreeGuidance {
"_class_name": "ClassifierFreeGuidance",
"_diffusers_version": "0.36.0.dev0",
"enabled": true,
"guidance_rescale": 0.0,
"guidance_scale": 6.0,
"start": 0.0,
"stop": 1.0,
"use_original_formulation": false
}
State:
step: None
num_inference_steps: None
timestep: None
count_prepared: 0
enabled: True
num_conditions: 2Untuk memperbarui konfigurasi guider, Anda dapat menjalankan pipe.guider = pipe.guider.new(...)
pipe.guider = pipe.guider.new(guidance_scale=5.0)Baca lebih lanjut tentang Guider di sini.
HunyuanVideo15Pipeline
kelas diffusers.HunyuanVideo15Pipeline
< source >( text_encoder: Qwen2_5_VLTextModeltokenizer: Qwen2Tokenizertransformer: HunyuanVideo15Transformer3DModelvae: AutoencoderKLHunyuanVideo15scheduler: FlowMatchEulerDiscreteSchedulertext_encoder_2: T5EncoderModeltokenizer_2: ByT5Tokenizerguider: ClassifierFreeGuidance )
Parameter
- transformer (HunyuanVideo15Transformer3DModel) — Arsitektur Conditional Transformer (MMDiT) untuk mendenoise latens video yang telah dienkod.
- scheduler (FlowMatchEulerDiscreteScheduler) —
Scheduler yang digunakan bersama
transformeruntuk menghilangkan noise pada latens video yang telah dikodekan. - vae (AutoencoderKLHunyuanVideo15) — Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan video ke dan dari representasi laten.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, khususnya varian Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — Tokenizer dari kelas [Qwen2Tokenizer]. - text_encoder_2 (
T5EncoderModel) — varian T5EncoderModel. - tokenizer_2 (
ByT5Tokenizer) — Tokenizer dari kelas [ByT5Tokenizer] - guider (ClassifierFreeGuidance) — [ClassifierFreeGuidance]untuk classifier free guidance.
Pipeline untuk generasi teks-ke-video menggunakan HunyuanVideo1.5.
Model ini mewarisi dari DiffusionPipeline. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan untuk semua pipeline (mengunduh, menyimpan, menjalankan pada perangkat tertentu, dll.).
__call__
< source >( prompt: str | list[str] = Nonenegative_prompt: str | list[str] = Noneheight: int | None = Nonewidth: int | None = Nonenum_frames: int = 121num_inference_steps: int = 50sigmas: list[float] = Nonenum_videos_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_mask: typing.Optional[torch.Tensor] = Noneprompt_embeds_2: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask_2: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_2: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_mask_2: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'np'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = None ) → ~HunyuanVideo15PipelineOutput or tuple
Parameter
- prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskanprompt_embedssebagai gantinya. - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskannegative_prompt_embedssebagai gantinya. - height (
int, opsional) — Tinggi video yang dihasilkan dalam piksel. - width (
int, opsional) — Lebar video yang dihasilkan dalam piksel. - num_frames (
int, defaultnya121) — Jumlah frame dalam video yang dihasilkan. - num_inference_steps (
int, defaultnya50) — Jumlah langkah denoising. Semakin banyak langkah denoising, biasanya menghasilkan video dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat. - sigmas (
list[float], opsional) — Sigmas kustom untuk digunakan dalam proses denoising dengan scheduler yang mendukung argumensigmasdalam metodeset_timestepsmereka. Jika tidak didefinisikan, perilaku default saatnum_inference_stepsditeruskan akan digunakan. - num_videos_per_prompt (
int, opsional, default 1) — Jumlah video yang akan dihasilkan per prompt. - generator (
torch.Generatorataulist[torch.Generator], opsional) —torch.Generatoruntuk membuat generasi menjadi deterministik. - latents (
torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya dan diambil dari distribusi Gaussian, untuk digunakan sebagai input untuk generasi video. Dapat digunakan untuk menyesuaikan generasi yang sama dengan prompt yang berbeda. Jika tidak disediakan, tensor latents akan dibuat dengan pengambilan sampel menggunakangeneratoracak yang diberikan. - prompt_embeds (
torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks (penimbangan prompt). Jika tidak disediakan, embedding teks akan dihasilkan dari argumen inputprompt. - prompt_embeds_mask (
torch.Tensor, opsional) — Maska yang telah dibuat sebelumnya untuk embedding prompt. - negative_prompt_embeds (
torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen inputnegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, opsional) — Maska yang telah dibuat sebelumnya untuk embedding prompt negatif. - prompt_embeds_2 (
torch.Tensor, opsional) — Embedding teks yang telah dibuat sebelumnya dari pengkode teks kedua. Dapat digunakan untuk dengan mudah menyesuaikan input teks. - prompt_embeds_mask_2 (
torch.Tensor, opsional) — Maska yang telah dibuat sebelumnya untuk prompt embeddings dari text encoder kedua. - negative_prompt_embeds_2 (
torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya dari pengkode teks kedua. - negative_prompt_embeds_mask_2 (
torch.Tensor, opsional) — Maska yang telah dibuat sebelumnya untuk embedding prompt negatif dari text encoder kedua. - output_type (
str, opsional, default"np") — Format output dari video yang dihasilkan. Pilih antara “np”, “pt”, atau “latent”. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikanHunyuanVideo15PipelineOutputalih-alih tuple biasa. - attention_kwargs (
dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan keAttentionProcessorseperti yang didefinisikan di bawahself.processordalam diffusers.models.attention_processor.
Mengembalikan
~HunyuanVideo15PipelineOutput atau tuple
Jika return_dict adalah True, maka HunyuanVideo15PipelineOutput yang dikembalikan, selain itu sebuah tuple yang dikembalikan di mana elemen pertama adalah daftar berisi video yang dihasilkan.
Fungsi panggilan untuk pipeline pada generasi.
Contoh:
>>> import torch
>>> from diffusers import HunyuanVideo15Pipeline
>>> from diffusers.utils import export_to_video
>>> model_id = "hunyuanvideo-community/HunyuanVideo-1.5-480p_t2v"
>>> pipe = HunyuanVideo15Pipeline.from_pretrained(model_id, torch_dtype=torch.float16)
>>> pipe.vae.enable_tiling()
>>> pipe.to("cuda")
>>> output = pipe(
... prompt="A cat walks on the grass, realistic",
... num_inference_steps=50,
... ).frames[0]
>>> export_to_video(output, "output.mp4", fps=15)encode_prompt
< source >( prompt: str | list[str]device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = Nonebatch_size: int = 1num_videos_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Noneprompt_embeds_2: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask_2: typing.Optional[torch.Tensor] = None )
Parameter
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - device — (
torch.device): perangkat torch - batch_size (
int) — ukuran batch dari prompt, defaultnya 1 - num_videos_per_prompt (
int) — jumlah gambar yang harus dihasilkan per prompt - prompt_embeds (
torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen inputprompt. - prompt_embeds_mask (
torch.Tensor, opsional) — Mask teks yang telah dibuat sebelumnya. Jika tidak disediakan, mask teks akan dibuat dari argumen inputprompt. - prompt_embeds_2 (
torch.Tensor, opsional) — Embedding teks glyph yang telah dibuat sebelumnya dari ByT5. Jika tidak disediakan, akan dibuat dari argumen inputpromptmenggunakan self.tokenizer_2 dan self.text_encoder_2. - prompt_embeds_mask_2 (
torch.Tensor, opsional) — Mask teks glyph yang telah dibuat sebelumnya dari ByT5. Jika tidak disediakan, akan dibuat dari argumen inputpromptmenggunakan self.tokenizer_2 dan self.text_encoder_2.
prepare_cond_latents_and_mask
< source >( latentsdtype: typing.Optional[torch.dtype]device: typing.Optional[torch.device] ) → tuple
Siapkan latens kondisional dan mask untuk generasi t2v.
HunyuanVideo15ImageToVideoPipeline
kelas diffusers.HunyuanVideo15ImageToVideoPipeline
< source >( text_encoder: Qwen2_5_VLTextModeltokenizer: Qwen2Tokenizertransformer: HunyuanVideo15Transformer3DModelvae: AutoencoderKLHunyuanVideo15scheduler: FlowMatchEulerDiscreteSchedulertext_encoder_2: T5EncoderModeltokenizer_2: ByT5Tokenizerguider: ClassifierFreeGuidanceimage_encoder: SiglipVisionModelfeature_extractor: SiglipImageProcessorPil )
Parameter
- transformer (HunyuanVideo15Transformer3DModel) — Arsitektur Conditional Transformer (MMDiT) untuk mendenoise latens video yang telah dienkod.
- scheduler (FlowMatchEulerDiscreteScheduler) —
Scheduler yang digunakan bersama
transformeruntuk menghilangkan noise pada latens video yang telah dikodekan. - vae (AutoencoderKLHunyuanVideo15) — Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan video ke dan dari representasi laten.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, khususnya varian Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — Tokenizer dari kelas [Qwen2Tokenizer]. - text_encoder_2 (
T5EncoderModel) — varian T5EncoderModel. - tokenizer_2 (
ByT5Tokenizer) — Tokenizer dari kelas [ByT5Tokenizer] - guider (ClassifierFreeGuidance) — [ClassifierFreeGuidance]untuk classifier free guidance.
- image_encoder (
SiglipVisionModel) — varian SiglipVisionModel. - feature_extractor (
SiglipImageProcessor) — varian SiglipImageProcessor.
Pipeline untuk generasi gambar-ke-video menggunakan HunyuanVideo1.5.
Model ini mewarisi dari DiffusionPipeline. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan untuk semua pipeline (mengunduh, menyimpan, menjalankan pada perangkat tertentu, dll.).
__call__
< source >( image: Imageprompt: str | list[str] = Nonenegative_prompt: str | list[str] = Nonenum_frames: int = 121num_inference_steps: int = 50sigmas: list[float] = Nonenum_videos_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_mask: typing.Optional[torch.Tensor] = Noneprompt_embeds_2: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask_2: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_2: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_mask_2: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'np'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = None ) → ~HunyuanVideo15PipelineOutput or tuple
Parameter
- image (
PIL.Image.Image) — Gambar input untuk mengondisikan generasi video. - prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi video. Jika tidak didefinisikan, Anda harus meneruskanprompt_embedssebagai gantinya. - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi video. Jika tidak didefinisikan, Anda harus meneruskannegative_prompt_embedssebagai gantinya. - num_frames (
int, defaultnya121) — Jumlah frame dalam video yang dihasilkan. - num_inference_steps (
int, defaultnya50) — Jumlah langkah denoising. Semakin banyak langkah denoising, biasanya menghasilkan video dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat. - sigmas (
list[float], opsional) — Sigmas kustom untuk digunakan dalam proses denoising dengan scheduler yang mendukung argumensigmasdalam metodeset_timestepsmereka. Jika tidak didefinisikan, perilaku default saatnum_inference_stepsditeruskan akan digunakan. - num_videos_per_prompt (
int, opsional, default 1) — Jumlah video yang akan dihasilkan per prompt. - generator (
torch.Generatorataulist[torch.Generator], opsional) —torch.Generatoruntuk membuat generasi menjadi deterministik. - latents (
torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya dan diambil dari distribusi Gaussian, untuk digunakan sebagai input untuk generasi video. Dapat digunakan untuk menyesuaikan generasi yang sama dengan prompt yang berbeda. Jika tidak disediakan, tensor latents akan dibuat dengan pengambilan sampel menggunakangeneratoracak yang diberikan. - prompt_embeds (
torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks (penimbangan prompt). Jika tidak disediakan, embedding teks akan dihasilkan dari argumen inputprompt. - prompt_embeds_mask (
torch.Tensor, opsional) — Maska yang telah dibuat sebelumnya untuk embedding prompt. - negative_prompt_embeds (
torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen inputnegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, opsional) — Maska yang telah dibuat sebelumnya untuk embedding prompt negatif. - prompt_embeds_2 (
torch.Tensor, opsional) — Embedding teks yang telah dibuat sebelumnya dari pengkode teks kedua. Dapat digunakan untuk dengan mudah menyesuaikan input teks. - prompt_embeds_mask_2 (
torch.Tensor, opsional) — Maska yang telah dibuat sebelumnya untuk prompt embeddings dari text encoder kedua. - negative_prompt_embeds_2 (
torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya dari pengkode teks kedua. - negative_prompt_embeds_mask_2 (
torch.Tensor, opsional) — Maska yang telah dibuat sebelumnya untuk embedding prompt negatif dari text encoder kedua. - output_type (
str, opsional, default"np") — Format output dari video yang dihasilkan. Pilih antara “np”, “pt”, atau “latent”. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikanHunyuanVideo15PipelineOutputalih-alih tuple biasa. - attention_kwargs (
dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan keAttentionProcessorseperti yang didefinisikan di bawahself.processordalam diffusers.models.attention_processor.
Mengembalikan
~HunyuanVideo15PipelineOutput atau tuple
Jika return_dict adalah True, maka HunyuanVideo15PipelineOutput yang dikembalikan, selain itu sebuah tuple yang dikembalikan di mana elemen pertama adalah daftar berisi video yang dihasilkan.
Fungsi panggilan untuk pipeline pada generasi.
Contoh:
>>> import torch
>>> from diffusers import HunyuanVideo15ImageToVideoPipeline
>>> from diffusers.utils import export_to_video
>>> model_id = "hunyuanvideo-community/HunyuanVideo-1.5-480p_i2v"
>>> pipe = HunyuanVideo15ImageToVideoPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
>>> pipe.vae.enable_tiling()
>>> pipe.to("cuda")
>>> image = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/wan_i2v_input.JPG")
>>> output = pipe(
... prompt="Summer beach vacation style, a white cat wearing sunglasses sits on a surfboard. The fluffy-furred feline gazes directly at the camera with a relaxed expression. Blurred beach scenery forms the background featuring crystal-clear waters, distant green hills, and a blue sky dotted with white clouds. The cat assumes a naturally relaxed posture, as if savoring the sea breeze and warm sunlight. A close-up shot highlights the feline's intricate details and the refreshing atmosphere of the seaside.",
... image=image,
... num_inference_steps=50,
... ).frames[0]
>>> export_to_video(output, "output.mp4", fps=24)encode_prompt
< source >( prompt: str | list[str]device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = Nonebatch_size: int = 1num_videos_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Noneprompt_embeds_2: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask_2: typing.Optional[torch.Tensor] = None )
Parameter
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - device — (
torch.device): perangkat torch - batch_size (
int) — ukuran batch dari prompt, defaultnya 1 - num_videos_per_prompt (
int) — jumlah gambar yang harus dihasilkan per prompt - prompt_embeds (
torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen inputprompt. - prompt_embeds_mask (
torch.Tensor, opsional) — Mask teks yang telah dibuat sebelumnya. Jika tidak disediakan, mask teks akan dibuat dari argumen inputprompt. - prompt_embeds_2 (
torch.Tensor, opsional) — Embedding teks glyph yang telah dibuat sebelumnya dari ByT5. Jika tidak disediakan, akan dibuat dari argumen inputpromptmenggunakan self.tokenizer_2 dan self.text_encoder_2. - prompt_embeds_mask_2 (
torch.Tensor, opsional) — Mask teks glyph yang telah dibuat sebelumnya dari ByT5. Jika tidak disediakan, akan dibuat dari argumen inputpromptmenggunakan self.tokenizer_2 dan self.text_encoder_2.
prepare_cond_latents_and_mask
< source >( latents: Tensorimage: Imagebatch_size: intheight: intwidth: intdtype: dtypedevice: device ) → tuple
Siapkan latens kondisional dan mask untuk generasi t2v.
HunyuanVideo15PipelineOutput
kelas diffusers.pipelines.hunyuan_video1_5.pipeline_output.HunyuanVideo15PipelineOutput
< source >( frames: Tensor )
Parameter
- frames (
torch.Tensor,np.ndarray, atau list[list[PIL.Image.Image]]) — Daftar output video - Dapat berupa daftar bersarang dengan panjangbatch_size,di mana setiap sub-daftar berisi urutan gambar PIL yang telah didenois dengan panjangnum_frames.Dapat juga berupa array NumPy atau tensor Torch dengan bentuk(batch_size, num_frames, channels, height, width).
Kelas output untuk pipeline HunyuanVideo1.5.