KJNodes/imagegenerated

解码并保存视频(DecodeAndSaveVideo)

从Latent表示中解码视频帧和音频,合并后保存为视频文件,无需在内存中保留中间图像。

Decode And Save Video

video_latent
audio_latent
video_vae
audio_vae
tiling
fps
25.00
filename_prefix
video/ComfyUI
format
auto
codec
auto
tile_size
512
overlap
64
temporal_size
4096
temporal_overlap
16
KJNodes

描述

解码并保存视频节点从Latent表示中解码视频帧和可选的音频,合并后直接将生成的视频保存到文件。它专为内存效率设计:解码的帧会即时写入磁盘,无需将所有中间图像存储在RAM中。因此,它适用于本来会超出可用内存的长视频或高分辨率视频。

该节点期望接收视频帧的Latent表示(通常由视频扩散模型生成)以及可选的音频Latent表示。必须提供两个独立的VAE模型:一个用于解码视频Latent(video_vae),另一个用于解码音频Latent(audio_vae——仅当提供了audio_latent时才需要)。节点还支持分块解码(空间和时间),以进一步减少内存使用,可通过分块参数配置。

将此节点用作视频生成流程的最终步骤,将结果导出为常见的视频容器格式。

输入

输入类型必填默认值备注
video_latentLATENT视频帧的Latent表示。通常从兼容的视频扩散模型获得。
audio_latentLATENT音频帧的Latent表示。如果提供,则必须同时连接一个audio_vae。保持断开连接可输出静音视频。
fpsFLOAT25.0输出视频的帧率。范围:0 – 999(间距0.01)。
filename_prefixSTRINGvideo/ComfyUI保存视频文件的前缀。可包含格式化令牌,如%date:yyyy-MM-dd%或节点值引用,如%Empty Latent Image.width%。节点会自动附加唯一后缀以避免覆盖。
formatCOMBOauto输出容器格式。选项取决于系统可用的编码器(例如mp4avimkvwebm)。auto选择最广泛支持的格式(通常是MP4)。
codecCOMBOauto要使用的视频编解码器。选项取决于系统安装的编码器(例如libx264libx265libvpxlibaom-av1)。auto选择常用的编解码器(通常是H.264)。
video_vaeVAE用于将video_latent解码为像素帧的VAE模型。必须与Latent表示兼容。
audio_vaeVAE用于将audio_latent解码为音频样本的VAE模型。当audio_latent已连接时为必填
tilingDYNAMICCOMBO视频解码的分块模式。动态选项可能包括disable(全帧解码)、spatial(仅空间分块)、temporal(仅时间分块)或both。具体选择取决于节点实现和连接的VAE。
tile_sizeINT512每个空间块的宽度/高度。较小的值降低峰值内存使用,但增加解码时间。范围:64 – 4096(间距32)。仅在空间分块激活时使用。
overlapINT64相邻空间块之间的重叠(像素)。较高的重叠减少块边界的可见接缝,但会消耗更多内存和处理时间。范围:0 – 4096(间距32)。
temporal_sizeINT4096启用时间分块时一次性解码的帧数。大于总帧数的值实际上禁用了时间分块。仅与支持时间分块的视频VAE相关。范围:8 – 4096(间距4)。
temporal_overlapINT16连续时间块之间的重叠帧数。较高的重叠可以平滑时间接缝,但使用更多内存并增加解码时间。范围:4 – 4096(间距4)。

分块行为

  • tiling禁用时,整个帧一次性解码——这占用最多内存。
  • 空间分块(tiling = "spatial""both")将每个帧拆分为大小为tile_size×tile_size的更小块,独立解码并混合重叠区域。
  • 时间分块(tiling = "temporal""both")将帧序列拆分为大小为temporal_size的块,每个块重叠temporal_overlap帧。仅适用于支持时间分解的VAE(例如某些视频VAE)。
  • 节点自动处理重叠区域和块边界的混合。

输出

此节点没有输出连接。解码后的视频直接根据filename_prefix构造的路径写入磁盘。节点不向工作流返回任何数据。

使用说明

  • 内存管理:节点在生成解码帧时即时将其流式写入磁盘。即使禁用了分块,也不会同时将所有帧累积在内存中。分块进一步降低峰值内存,但会降低解码速度。
  • 音频:要包含音频,请同时提供audio_latentaudio_vae。音频VAE必须匹配音频Latent空间(例如来自音频扩散模型)。如果未连接音频Latent,输出视频将为静音。
  • 格式和编解码器支持:可用的格式和编解码器取决于系统上安装的FFmpeg(或其他编码器)。使用auto可获得无忧体验;如果需要特定编解码器或容器,请确保安装了所需的编码器。
  • 文件名前缀令牌:您可以使用ComfyUI的格式化语法来包含日期、时间或节点值。例如:
    video/ComfyUI_%empty_latent_image.width%x%empty_latent_image.height%_%date:yyyy-MM-dd%
    将生成类似video/ComfyUI_512x512_2025-01-15_0001.mp4的文件名。
  • 块大小调优:对于大多数用例,tile_size为512、overlap为64可在内存和速度之间取得良好平衡。如果内存允许,可以增大tile_size;如果VRAM不足,则减小它。
  • 时间分块:仅对原生支持时间分块的VAE有效。如果您的VAE不支持,设置时间参数将不起作用。
  • 间距递增:所有整数块参数都强制执行节点中定义的间距(空间为32,时间为4)。未对齐间距的值会自动四舍五入。

评论

使用 GitHub 登录后即可参与讨论。

评论加载中…
解码并保存视频 (DecodeAndSaveVideo) - ComfyUI-KJNodes | ComfyUI Wiki