Comfy-Org / Comfy-Org/ComfyUI

# Title Regression: Audio-less videos fail with `VHS failed to extract audio` after updating to ComfyUI 0.29.0

Open
#15,140 4 comments 4 reactions 0 assignees View on GitHub
Potential Bug
Dominant language
Python
Stars
133k
Forks
15.7k
Avg merge
1d 7h
Merged PRs (30d)
158

Description

### Custom Node Testing

- [ ] I have tried disabling custom nodes and the issue persists (see [how to disable custom nodes](https://docs.comfy.org/troubleshooting/custom-node-issues#step-1%3A-test-with-all-custom-nodes-disabled) if you need help)

### Expected Behavior

## Description

After updating from **ComfyUI 0.28.x** to **ComfyUI 0.29.0**, an existing workflow that had been working correctly now fails when loading videos that do **not** contain an audio track.

The exact same workflow and the exact same video files worked correctly before the update.

## Environment

* OS: Windows 10
* GPU: NVIDIA RTX 5070 Ti (16 GB)
* ComfyUI: 0.29.0
* PyTorch: 2.9.1 + cu130
* VideoHelperSuite: Latest version (updated through ComfyUI Manager)
* FFmpeg: Latest Gyan build

## Steps to Reproduce

1. Update ComfyUI from 0.28.x to 0.29.0.
2. Update custom nodes (including VideoHelperSuite).
3. Load a video that contains **no audio stream**.
4. Execute the workflow.

## Expected Behavior

If a video does not contain an audio stream, the workflow should continue normally, just as it did in ComfyUI 0.28.x.

## Actual Behavior

The workflow stops immediately with the following error:

```text
VHS failed to extract audio

Output file does not contain any stream
Error opening output file -.
Error opening output files: Invalid argument
```

The FFmpeg output clearly shows that the input file contains only a video stream:

```text
Stream #0:0: Video: prores (HQ)
```

There is no audio stream in the source file.

## Additional Information

Disabling audio extraction (or removing the audio output from the video loading node) allows the workflow to run successfully.

This appears to be a regression introduced after updating to ComfyUI 0.29.0 and/or the latest VideoHelperSuite, because the identical workflow worked correctly in ComfyUI 0.28.x with the same silent video files.

Could this be a regression in VideoHelperSuite's handling of videos without an audio track?

### Actual Behavior

Image

### Steps to Reproduce

VideoHelperSuite

### Debug Logs

```powershell
[INFO] Detail log: C:\ComfyUI\comfyui_detail.log
[INFO] setup plugin alembic.autogenerate.schemas
[INFO] setup plugin alembic.autogenerate.tables
[INFO] setup plugin alembic.autogenerate.types
[INFO] setup plugin alembic.autogenerate.constraints
[INFO] setup plugin alembic.autogenerate.defaults
[INFO] setup plugin alembic.autogenerate.comments
[INFO] Setting output directory to: F:\output
[START] Security scan
[DONE] Security scan
## ComfyUI-Manager: installing dependencies done.
** ComfyUI startup time: 2026-07-29 20:53:19.902
** Platform: Windows
** Python version: 3.13.9 (tags/v3.13.9:8183fa5, Oct 14 2025, 14:09:13) [MSC v.1944 64 bit (AMD64)]
** Python executable: C:\ComfyUI\python_embeded\python.exe
** ComfyUI Path: C:\ComfyUI\ComfyUI
** ComfyUI Base Folder Path: C:\ComfyUI\ComfyUI
** User directory: C:\ComfyUI\ComfyUI\user
** ComfyUI-Manager config path: C:\ComfyUI\ComfyUI\user\__manager\config.ini
** Log path: C:\ComfyUI\ComfyUI\user\comfyui.log
[INFO]
Prestartup times for custom nodes:
[INFO] 0.0 seconds: C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-Easy-Use
[INFO] 1.6 seconds: C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-Manager
[INFO]
[INFO] Found triton 3.6.0. Enabling comfy-kitchen triton backend.
[INFO] Found comfy_kitchen backend triton: {'available': True, 'disabled': False, 'unavailable_reason': None, 'capabilities': ['adaln', 'apply_rope', 'apply_rope1', 'apply_rope1_', 'apply_rope_', 'apply_rope_split_half', 'apply_rope_split_half1', 'apply_rope_split_half1_', 'apply_rope_split_half_', 'dequantize_nvfp4', 'dequantize_per_tensor_fp8', 'int8_linear', 'quantize_and_rotate_rowwise', 'quantize_int8_rowwise', 'quantize_mxfp8', 'quantize_nvfp4', 'quantize_per_tensor_fp8', 'rms_adaln', 'rms_rope', 'rms_rope1', 'rms_rope1_', 'rms_rope_', 'rms_rope_split_half', 'rms_rope_split_half1', 'rms_rope_split_half1_', 'rms_rope_split_half_']}
[INFO] Found comfy_kitchen backend cuda: {'available': True, 'disabled': False, 'unavailable_reason': None, 'capabilities': ['adaln', 'apply_rope', 'apply_rope1', 'apply_rope1_', 'apply_rope_', 'apply_rope_split_half', 'apply_rope_split_half1', 'apply_rope_split_half1_', 'apply_rope_split_half_', 'convrot_w4a4_linear', 'dequantize_convrot_w4a4_weight', 'dequantize_int8_convrot_weight', 'dequantize_int8_convrot_weight_dtype', 'dequantize_int8_simple', 'dequantize_int8_simple_dtype', 'dequantize_nvfp4', 'dequantize_per_tensor_fp8', 'gemv_awq_w4a16', 'int8_linear', 'prepare_int4_weight_for_int8_linear', 'quantize_and_rotate_rowwise', 'quantize_convrot_w4a4_weight', 'quantize_int8_convrot_weight', 'quantize_int8_rowwise', 'quantize_int8_tensorwise', 'quantize_mxfp8', 'quantize_nvfp4', 'quantize_per_tensor_fp8', 'quantize_svdquant_w4a4', 'rms_adaln', 'rms_rope', 'rms_rope1', 'rms_rope1_', 'rms_rope_', 'rms_rope_split_half', 'rms_rope_split_half1', 'rms_rope_split_half1_', 'rms_rope_split_half_', 'scaled_mm_nvfp4', 'scaled_mm_svdquant_w4a4', 'stochastic_rounding_fp8']}
[INFO] Found comfy_kitchen backend eager: {'available': True, 'disabled': False, 'unavailable_reason': None, 'capabilities': ['adaln', 'apply_rope', 'apply_rope1', 'apply_rope1_', 'apply_rope_', 'apply_rope_split_half', 'apply_rope_split_half1', 'apply_rope_split_half1_', 'apply_rope_split_half_', 'convrot_w4a4_linear', 'dequantize_convrot_w4a4_weight', 'dequantize_int8_convrot_weight', 'dequantize_int8_convrot_weight_dtype', 'dequantize_int8_embedding', 'dequantize_int8_simple', 'dequantize_int8_simple_dtype', 'dequantize_mxfp8', 'dequantize_nvfp4', 'dequantize_per_tensor_fp8', 'gemv_awq_w4a16', 'int8_linear', 'prepare_int4_weight_for_int8_linear', 'quantize_and_rotate_rowwise', 'quantize_convrot_w4a4_weight', 'quantize_int8_convrot_weight', 'quantize_int8_rowwise', 'quantize_int8_tensorwise', 'quantize_mxfp8', 'quantize_nvfp4', 'quantize_per_tensor_fp8', 'quantize_svdquant_w4a4', 'rms_adaln', 'rms_rope', 'rms_rope1', 'rms_rope1_', 'rms_rope_', 'rms_rope_split_half', 'rms_rope_split_half1', 'rms_rope_split_half1_', 'rms_rope_split_half_', 'scaled_mm_mxfp8', 'scaled_mm_nvfp4', 'scaled_mm_svdquant_w4a4', 'stochastic_rounding_fp8']}
[INFO] Checkpoint files will always be loaded safely.
[INFO] Total VRAM 16303 MB, total RAM 98060 MB
[INFO] pytorch version: 2.9.1+cu130
[INFO] xformers version: 0.0.33+c2407a6.d20251023
[INFO] Set vram state to: HIGH_VRAM
[INFO] Device: cuda:0 NVIDIA GeForce RTX 5070 Ti : cudaMallocAsync
[INFO] Using async weight offloading with 2 streams
[INFO] Enabled pinned memory 39224.0
[INFO] working around nvidia conv3d memory bug.
[INFO] Using sage attention
[INFO] Python version: 3.13.9 (tags/v3.13.9:8183fa5, Oct 14 2025, 14:09:13) [MSC v.1944 64 bit (AMD64)]
[INFO] ComfyUI version: 0.29.0
[INFO] comfy-aimdo version: 0.4.10
[INFO] comfy-kitchen version: 0.2.23
[INFO] comfyui-frontend-package version: 1.47.10
[INFO] comfyui-workflow-templates version: 0.11.19
[INFO] comfyui-embedded-docs version: 0.5.9
[INFO] comfy-kitchen version: 0.2.23
[INFO] comfy-aimdo version: 0.4.10
[INFO] [Prompt Server] web root: C:\ComfyUI\python_embeded\Lib\site-packages\comfyui_frontend_package\static
[INFO] Asset seeder disabled
[INFO] No OpenGL_accelerate module loaded: No module named 'OpenGL_accelerate'
C:\ComfyUI\python_embeded\Lib\site-packages\timm\models\layers\__init__.py:49: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
[ComfyUI-Easy-Use] server: v1.3.7 Loaded
[ComfyUI-Easy-Use] web root: C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-Easy-Use\web_version/v2 Loaded
[INFO] ### Loading: ComfyUI-Manager (V3.41)
[INFO] [ComfyUI-Manager] network_mode: public
[INFO] [ComfyUI-Manager] ComfyUI per-queue preview override detected (PR #11261). Manager's preview method feature is disabled. Use ComfyUI's --preview-method CLI option or 'Settings > Execution > Live preview method'.
[INFO] ### ComfyUI Version: v0.29.0-7-ge651b7bef | Released on '2026-07-28'
[INFO] [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/alter-list.json
[INFO] [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/model-list.json
⚡ SeedVR2 optimizations check: SageAttention ✅ | Flash Attention ✅ | Triton ✅
🔧 Conv3d workaround active: PyTorch 2.9.1, cuDNN 91200 (fixing VAE 3x memory bug)
VRAM Info: Initial CUDA memory: 14.63GB free / 15.92GB total
[INFO] [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/github-stats.json
[INFO]
Import times for custom nodes:
[INFO] 0.0 seconds: C:\ComfyUI\ComfyUI\custom_nodes\websocket_image_save.py
[INFO] 0.0 seconds: C:\ComfyUI\ComfyUI\custom_nodes\ComfyMath
[INFO] 0.0 seconds: C:\ComfyUI\ComfyUI\custom_nodes\comfyui-dream-video-batches
[INFO] 0.0 seconds: C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-VideoHelperSuite
[INFO] 0.0 seconds: C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-S3-IO
[INFO] 0.1 seconds: C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-DDColor
[INFO] 0.1 seconds: C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-Manager
[INFO] 0.2 seconds: C:\ComfyUI\ComfyUI\custom_nodes\seedvr2_videoupscaler
[INFO] 0.3 seconds: C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI_StarNodes
[INFO] 1.7 seconds: C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-Easy-Use
[INFO]
[INFO] Context impl SQLiteImpl.
[INFO] Will assume non-transactional DDL.
[INFO] Using RAM pressure cache.
[INFO] Starting server

[INFO] To see the GUI go to: http://0.0.0.0:8188
[INFO] To see the GUI go to: http://[::]:8188
[INFO] [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/extension-node-map.json
[INFO] [ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json
[WARNING] [DEPRECATION WARNING] Detected import of deprecated legacy API: /scripts/ui.js. This is likely caused by a custom node extension using outdated APIs. Please update your extensions or contact the extension author for an updated version.
[WARNING] [DEPRECATION WARNING] Detected import of deprecated legacy API: /extensions/core/groupNode.js. This is likely caused by a custom node extension using outdated APIs. Please update your extensions or contact the extension author for an updated version.
[WARNING] [DEPRECATION WARNING] Detected import of deprecated legacy API: /extensions/core/widgetInputs.js. This is likely caused by a custom node extension using outdated APIs. Please update your extensions or contact the extension author for an updated version.
[WARNING] [DEPRECATION WARNING] Detected import of deprecated legacy API: /scripts/ui/components/buttonGroup.js. This is likely caused by a custom node extension using outdated APIs. Please update your extensions or contact the extension author for an updated version.
[WARNING] [DEPRECATION WARNING] Detected import of deprecated legacy API: /scripts/ui/components/button.js. This is likely caused by a custom node extension using outdated APIs. Please update your extensions or contact the extension author for an updated version.
FETCH ComfyRegistry Data: 5/165
FETCH ComfyRegistry Data: 10/165
FETCH ComfyRegistry Data: 15/165
FETCH ComfyRegistry Data: 20/165
FETCH ComfyRegistry Data: 25/165
FETCH ComfyRegistry Data: 30/165
[INFO] got prompt
pop F:\video\12\split\output_part_001.mov
[ERROR] !!! Exception during processing !!! VHS failed to extract audio from F:\video\12\split\output_part_001.mov:
ffmpeg version 2026-07-20-git-c23123630e-essentials_build-www.gyan.dev Copyright (c) 2000-2026 the FFmpeg developers
built with gcc 16.1.0 (Rev2, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-cairo --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-openal --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
libavutil 61. 5.100 / 61. 5.100
libavcodec 63. 6.101 / 63. 6.101
libavformat 63. 5.101 / 63. 5.101
libavdevice 63. 2.100 / 63. 2.100
libavfilter 12. 3.101 / 12. 3.101
libswscale 10. 2.100 / 10. 2.100
libswresample 7. 2.100 / 7. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'F:\video\12\split\output_part_001.mov':
Metadata:
major_brand : qt
minor_version : 512
compatible_brands: qt
encoder : Lavf63.5.101
Duration: 00:03:00.00, start: 0.000000, bitrate: 6396 kb/s
Stream #0:0[0x1]: Video: prores (HQ) (apch / 0x68637061), yuv422p10le(tv, progressive), 320x240, 6395 kb/s, SAR 1:1 DAR 4:3, 15 fps, 15 tbr, 15360 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : FFMP
encoder : Lavc63.6.101 prores_ks
Output #0, f32le, to 'pipe:':
[out#0/f32le @ 0000023dea2d8780] Output file does not contain any stream
Error opening output file -.
Error opening output files: Invalid argument

[ERROR] Traceback (most recent call last):
File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-VideoHelperSuite\videohelpersuite\utils.py", line 232, in get_audio
res = subprocess.run(args + ["-f", "f32le", "-"],
capture_output=True, check=True)
File "subprocess.py", line 577, in run
subprocess.CalledProcessError: Command '['C:\\Program Files\\FFmpeg\\ffmpeg.EXE', '-i', 'F:\\video\\12\\split\\output_part_001.mov', '-f', 'f32le', '-']' returned non-zero exit status 4294967274.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\ComfyUI\ComfyUI\execution.py", line 616, in execute
execution_list.cache_update(unique_id, cache_entry)
~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ComfyUI\ComfyUI\comfy_execution\graph.py", line 236, in cache_update
self.output_link_callback(value.outputs[from_socket])
~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ComfyUI\ComfyUI\comfy\model_patcher.py", line 65, in add
self.add(output)
~~~~~~~~^^^^^^^^
File "C:\ComfyUI\ComfyUI\comfy\model_patcher.py", line 63, in add
for output in outputs:
^^^^^^^
File "", line 917, in __iter__
File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-VideoHelperSuite\videohelpersuite\utils.py", line 262, in __iter__
self._dict = get_audio(self.file, self.start_time, self.duration)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-VideoHelperSuite\videohelpersuite\utils.py", line 237, in get_audio
raise Exception(f"VHS failed to extract audio from {file}:\n" \
+ e.stderr.decode(*ENCODE_ARGS))
Exception: VHS failed to extract audio from F:\video\12\split\output_part_001.mov:
ffmpeg version 2026-07-20-git-c23123630e-essentials_build-www.gyan.dev Copyright (c) 2000-2026 the FFmpeg developers
built with gcc 16.1.0 (Rev2, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-cairo --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-openal --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
libavutil 61. 5.100 / 61. 5.100
libavcodec 63. 6.101 / 63. 6.101
libavformat 63. 5.101 / 63. 5.101
libavdevice 63. 2.100 / 63. 2.100
libavfilter 12. 3.101 / 12. 3.101
libswscale 10. 2.100 / 10. 2.100
libswresample 7. 2.100 / 7. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'F:\video\12\split\output_part_001.mov':
Metadata:
major_brand : qt
minor_version : 512
compatible_brands: qt
encoder : Lavf63.5.101
Duration: 00:03:00.00, start: 0.000000, bitrate: 6396 kb/s
Stream #0:0[0x1]: Video: prores (HQ) (apch / 0x68637061), yuv422p10le(tv, progressive), 320x240, 6395 kb/s, SAR 1:1 DAR 4:3, 15 fps, 15 tbr, 15360 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : FFMP
encoder : Lavc63.6.101 prores_ks
Output #0, f32le, to 'pipe:':
[out#0/f32le @ 0000023dea2d8780] Output file does not contain any stream
Error opening output file -.
Error opening output files: Invalid argument
```

### Other

_No response_

Contributor guide

Open the contributing guide

Research direction

Start with the ComfyUI-VideoHelperSuite video-loading node and reproduce the workflow using the silent .mov file with audio extraction enabled. Inspect the VideoHelperSuite audio-extraction path and its FFmpeg invocation; done means a video with no audio stream loads successfully while workflows that request audio continue to work.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
audio-video-rtc
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.