[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81493":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":14,"forks30d":14,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":14,"starSnapshotCount":14,"syncStatus":12,"lastSyncTime":28,"discoverSource":29},81493,"ComfyUI-Easy-Media","yolain\u002FComfyUI-Easy-Media","yolain","A ComfyUI custom node package for streamlined media loading and video pipeline assembly. Provides intuitive nodes that simplify media resource loading with user-friendly parameters, making it easier to build and configure video processing workflows.",null,"TypeScript",83,2,1,0,3,42,55,13,72.93,"GNU General Public License v3.0",false,"main",true,[],"2026-06-12 04:01:34","# ComfyUI Easy Media\n\n\u003Cdiv align=\"center\">\n\u003Ca href=\".\u002FREADME.md\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F🇬🇧English-0b8cf5\">\u003C\u002Fa>\n\u003Ca href=\".\u002FREADME_CN.md\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F🇨🇳中文简体-e9e9e9\">\u003C\u002Fa>\n\u003Cbr>\n\u003C\u002Fdiv>\n\n![Poster](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F6c76433e-1893-4709-8738-acbed4438757)\n\nA ComfyUI custom node package for streamlined media loading and video pipeline assembly. Provides intuitive nodes that simplify media resource editing and loading with user-friendly parameters, making it easier to build and configure video processing workflows.\n\n\n## Installation\n\n```bash\ncd Your_ComfyUI_Path\u002Fcustom_nodes\ngit clone https:\u002F\u002Fgithub.com\u002Fyolain\u002FComfyUI-Easy-Media.git\n```\n\n## Example Workflows\n\nAfter installing, open ComfyUI and find the bundled example workflows in the **Templates** panel on the left sidebar — look for entries under **ComfyUI-Easy-Media**.\n\n## Changelog\n\n### v1.0.2\n\n- **[Timeline Editor: App Mode]** Fixed an issue where, if `prompt_override` was not written strictly according to the prompt format, the default duration was not evenly distributed across clips\n- **[Timeline Editor: App Mode]** Fixed an issue where filling the entire timeline with a single audio clip required filtering out empty audio before making a determination\n- **[Timeline Editor: UI Mode]** Fixed an issue where the output resources and sorting were incorrect when a single clip contained different formats\n\n### v1.0.1\n\n- **[Workflow]** Added wan2.2 loop segment example workflow\n- **[Frontend Optimization]** Added + button to insert segments before or after the selected segment, and fixed some known bugs\n- **[Bug Fix]** Fixed incorrect image import paths from output and subdirectories, which caused images and outputs to be filtered out in the editor\n\n### v1.0.0\n\n- **Important Changes** `Duration and frame rate` input only takes effect after `blur` (i.e., press Enter or click outside to confirm changes, reducing errors)\n- **Important Changes** Duration input step changes: `4` when format is frames, `1` when format is seconds\n- **Important Changes** Segment duration editing no longer affects other segments; if the total exceeds the timeline length, the timeline will auto-expand to fit all segments\n- The automatic height adjustment of tracks in the Timeline Editor has been adjusted; users must now double-click image and audio clips to open the media selection interface, thereby preventing frequent pop-ups caused by accidental operations.\n- Added dynamic parameter injection support for prompt template format + media input using the timeline editor\n\n## Features\n\n### Timeline Editor\n\n> I believe the media timeline editor component is better suited as a standalone module node for greater versatility. This node focuses on media import\u002Fediting and timeline-related functionality, providing better support for video pipeline creation across different models.\u003Cbr>\nThe editor can be used for single video segment generation (e.g., combined with PromptRelay), as well as segmented generation. Each segment can be combined with different model video pipelines for text-only generation, single image generation, first\u002Flast frame generation, multi-frame generation, reference-based generation, etc.\n\n![timelineEditor](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fd7c9e894-6e7e-488c-90fb-d3aa8310419d)\n\n#### Track Types\n\n| Type       | Description                              |\n| ---------- | ---------------------------------------- |\n| Main Track | Supports multi-segment editing with images and prompts |\n| Audio Track | Can load multiple audio segments, merged for final export |\n\n#### Dynamic Parameter Injection (05-23)\n\n> If you want to dynamically invoke the timeline editor via `agents` or `app`, a method is available: input media assets into the corresponding input ports of the timeline editor (`prompt_override`, `image`, `audio`). When `prompt_override` is injected, it will override the segment data in the timeline editor. However, compared to directly editing segment content via the visual interface, the dynamic parameter injection method has limitations—for example, it is not convenient to control audio duration and ranges. `prompt_override` provides a prompt formatting template specification, similar to `promptRelay + seedance2.0` dynamic prompts. See the example below for details.\n\n![dynamicInput](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Feef6798e-a68d-4724-8e72-69b1a13825dd)\n\n**Optional Parameters**:\n\n- `prompt_override`: Due to ComfyUI's force_input compatibility issues, when force_input exists, custom widgets cannot be accessed. Therefore, the parameter type is currently set to `AnyType`. It is recommended to connect using a regular string type node.\n- `image`: Input image resource list; it is recommended to use the newly added `easy makeImageList` node to create image lists.\n- `audio`: Input audio resource list; if a segment only needs one audio, connect the audio directly to the audio input port. If multiple audio segments are needed, it is recommended to use the newly added `easy makeAudioList` node to create audio lists.\n\n**Prompt Example**:\n\n```text\n@image1 @audio1 镜头晃动，老者正望着光亮处神色慌张地喊话：别学那玩意，别连线啊。[0-120]|@image2 @audio2 镜头缓慢推进，男人正在操作电脑，说道：有意思，这ComfyUI能火，我指定得学它 [121-296]\n```\n\n- `[0-120]` and `[121-296]` represent the start and end frame ranges of segments on the timeline, in frames. If no time range is specified, the total duration set on the original timeline editor will be equally distributed.\n- Segments are separated by `|`, representing different time periods. Each segment can contain `media placeholder`, `text prompt`, and `start-end frame range`.\n- Image injection: Supports `@image{n}`, `@img{n}`, `@图{n}`, `@图片{n}`, `@图像{n}` as placeholders to inject image resources, where `{n}` represents the n-th image in the image list (starting from 1). For example, `@image1` will inject the first image from the image list.\n- Audio injection: Supports `@audio{n}`, `@音频{n}` as placeholders to inject audio resources, where `{n}` represents the n-th audio in the audio list (starting from 1). For example, `@audio1` will inject the first audio from the audio list.\n\n**Adding Media via Timeline Editor Input Ports**:\n> If you only want to pass parameters via the `image` or `audio` input ports and do not want to use `prompt_override`, you can use the `slot` method to associate media in the image or audio adding section with the media from the corresponding input port. This way, when executing workflow tasks, the input media resources will automatically be associated with the corresponding segments in the timeline editor.\n(Note: The preview displayed on the timeline editor traces back to the resources of the corresponding nodes that initially loaded the images or audio. If you use cropping or truncation nodes between the loading and timeline editor workflow to process the original media, the backend will also execute this processing; however, the frontend preview display shows the initial state.)\n\n![dynamicInput2](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F6dd84d52-1fd3-4b27-a890-2a0e22cecda4)\n\n### SaveVideo\n\n![SaveVideo](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F30e2dcc3-9ed3-4d5f-bb15-69e50c3e8fca)\n> Integrated and enhanced the video saving node from the SaveVideoRGBA node package. Supports video export with customizable output path, filename prefix, frame rate, and other parameters.\n\n### Merge Videos From Paths\n\n> Load video files from a list of file paths (or URLs) and concatenate them into a single video output.\n\n**Installing FFmpeg** is recommended for best performance and transition quality:\n\n```bash\n# macOS (Homebrew)\nbrew install ffmpeg\n\n# Windows — download a full build (includes xfade filter):\n# https:\u002F\u002Fffmpeg.org\u002Fdownload.html\n# Recommended: BtbN or gyan.dev full builds\n\n# Linux (Ubuntu\u002FDebian)\nsudo apt install ffmpeg\n```\n\n### MultiTrack Editor\n\n> Planned...\n\n\n## Development & Testing\n\n1. Create a `config.yaml` file in the ComfyUI-Easy-Media directory and add the following content to enable frontend development mode:\n\n```yaml\nWEB_VERSION: dev\n```\n\n2. Navigate to the frontend directory and compile the development code for debugging:\n\n```shell\ncd frontend && bun install && bun run dev\n```\n\n3. After modifying the code, compile for production:\n\n```shell\nbun run build:release\n```\n\n## Node List\n\n| Node ID | Description |\n| ------- | ----------- |\n| easy timelineEditor | Load media timeline (prompt, image, audio tracks) and output structured data |\n| easy timelineInfoOutput | Output timeline info including formatted prompt, dimensions, and image indexes |\n| easy timelineSegmentOutput | Output specific segment data from the timeline |\n| easy timelineSegmentCount | Output the total number of segments in the timeline |\n| easy makeImageList | Combine multiple image inputs into an image list |\n| easy makeAudioList | Combine multiple audio inputs into an audio list |\n| easy imageIndexesToIntList | Convert comma-separated image index string to integer list |\n| easy saveVideo | Save images and optional audio as video file |\n| easy mergeVideos | Concatenate multiple compatible VIDEO segments |\n| easy mergeVideosFromPaths | Load and concatenate videos from file path list |\n| LTXVAddGuidesFromBatchIndexes | Add guide images from batch images to specified frame indexes of latent variables |\n\n## Source of Inspiration\n\n- [WhatDreamsCost-ComfyUI](https:\u002F\u002Fgithub.com\u002FWhatDreamsCost\u002FWhatDreamsCost-ComfyUI)\n- [ComfyUI-PromptRelay](https:\u002F\u002Fgithub.com\u002Fkijai\u002FComfyUI-PromptRelay)","ComfyUI-Easy-Media 是一个用于简化媒体加载和视频处理流程组装的ComfyUI自定义节点包。它提供了直观易用的节点，通过友好的参数设置简化了媒体资源的编辑和加载过程，使得构建和配置视频处理工作流变得更加容易。项目采用TypeScript开发，具备如时间线编辑器等核心功能，支持动态参数注入、媒体导入\u002F编辑以及时间线相关操作，并持续优化前端交互体验与修复已知问题。适用于需要高效创建或调整视频处理流程的各种场景，特别是对用户体验有较高要求的应用场合。","2026-06-11 04:05:15","CREATED_QUERY"]