๐น๐ Video details (FFmpeg) โ
Ffprobe a video file straight into your graph
- filename
- video_path
- width
- height
- fps
- total_frames
- duration_seconds
- video_codec
- video_bitrate
- pixel_format
- audio_codec
- audio_bitrate
- container_format
- duration_seconds_float
- full_info
- FFMPEG_CONFIG_JSON
If you're doing anything with video in ComfyUI beyond generating one clip and calling it done - syncing audio, concatenating clips, converting formats - you'll eventually need to know a video's actual fps, resolution, or duration instead of guessing. Video details is justUmen's answer: point it at a file on disk and it probes the file with ffprobe and hands you back every stat you'd normally have to check manually in a terminal, wired straight into your workflow.
It's one of a small cluster of ffmpeg-flavored nodes in the Bjornulf_custom_nodes pack - sits alongside FFmpeg Configuration, Convert Video, and the Concat Videos nodes, all of which share a common FFMPEG_CONFIG_JSON payload so you don't have to re-enter codec and format settings in five different places.
How it works
Under the hood this is a thin wrapper around ffprobe, the metadata-inspection half of ffmpeg. Give it a path to a video file and it shells out to the ffprobe binary (or, if you flip use_python_ffmpeg, goes through the python-ffmpeg wrapper library instead of calling the binary directly) and parses the result into a pile of individual outputs you can wire wherever you need them.
The inputs and outputs that matter
video_path- the file to inspect. This has to be a real path on disk; there's no browse/upload here, you're typically feeding it the output of another Bjornulf video node (like "Images to Video path") or a path you've typed in yourself.ffprobe_path(default"ffprobe") - where to find the ffprobe executable. Leave it as-is if ffmpeg is installed and on your system PATH; only change it if you've got a non-standard install location.use_python_ffmpeg(defaultfalse) - switches the extraction method from shelling out to the binary to going through the Python wrapper library instead.
The output list is long because it's genuinely comprehensive: filename, video_path passed through, width, height, fps, total_frames, duration_seconds (INT) and duration_seconds_float (FLOAT) if you need sub-second precision, video_codec, video_bitrate, pixel_format, audio_codec, audio_bitrate, container_format, a catch-all full_info STRING dump, and - the one that matters most if you're chaining this into other Bjornulf video nodes - FFMPEG_CONFIG_JSON, a pre-packaged config blob that Convert Video and the Concat nodes can consume directly.
How to install it
Via ComfyUI Manager: search "Bjornulf_custom_nodes," install, restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/justUmen/Bjornulf_custom_nodes
then restart ComfyUI. The pack's requirements.txt includes ffmpeg-python and opencv-python among others (pip install -r requirements.txt from inside the custom node folder, ideally with a venv active on Linux; on Windows portable, run the install through python_embeded\python.exe).
Common issues & troubleshooting
ffmpeg-python being installed does not mean ffmpeg is installed. This is the single most likely thing to trip people up: the pack's requirements.txt pulls in the Python wrapper for ffmpeg, but that wrapper still needs the real ffmpeg/ffprobe binaries present on the system and reachable on PATH - it doesn't bundle them. If this node fails with something about ffprobe not being found, that's your answer: install ffmpeg system-wide (apt install ffmpeg on Linux, brew install ffmpeg on macOS, or grab a Windows build and add it to PATH), don't just re-check your pip packages.
Wrong or relative video_path. Since there's no file browser, a typo or a relative path that doesn't resolve the way you expect will fail silently or point at the wrong file. Double-check with an absolute path if you're not sure.
Windows users specifically. justUmen's own README flags that the pack's video-related nodes were primarily developed and tested on Linux; if you're on Windows and something in the ffmpeg chain misbehaves, that's a known rough edge rather than something unique to your setup - worth trying use_python_ffmpeg toggled the other way as a first thing to test if the default path isn't working for you.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| video_path | STRING | โ | |
| ffprobe_path | STRING | ffprobe | โ |
| use_python_ffmpeg | BOOLEAN | false | โ |
Outputs (16)
| Name | Type | Description |
|---|---|---|
| filename | STRING | โ |
| video_path | STRING | โ |
| width | INT | โ |
| height | INT | โ |
| fps | FLOAT | โ |
| total_frames | INT | โ |
| duration_seconds | INT | โ |
| video_codec | STRING | โ |
| video_bitrate | STRING | โ |
| pixel_format | STRING | โ |
| audio_codec | STRING | โ |
| audio_bitrate | STRING | โ |
| container_format | STRING | โ |
| duration_seconds_float | FLOAT | โ |
| full_info | STRING | โ |
| FFMPEG_CONFIG_JSON | STRING | โ |