sxyazi/yazi · error
err
Error message
err
What it means
video.lua's spot_base calls ffprobe via list_meta with a format/stream spec; if ffprobe fails or emits nothing, meta is nil, ya.err reports the error, and the spot falls back to an empty rows table. This is the ffmpeg/ffprobe metadata-extraction path failing for the video file.
Source
Thrown at yazi-plugin/preset/plugins/video.lua:106
local rows = self:spot_base(job)
rows[#rows + 1] = ui.Row {}
ya.spot_table(
job,
ui.Table(ya.list_merge(rows, require("file"):spot_base(job)))
:area(ui.Pos { "center", w = 60, h = 20 })
:row(1)
:col(1)
:col_style(th.spot.tbl_col)
:cell_style(th.spot.tbl_cell)
:widths { ui.Constraint.Length(14), ui.Constraint.Fill(1) }
)
end
function M:spot_base(job)
local meta, err = self.list_meta(job.file.path, "format=duration:stream=codec_name,codec_type,width,height")
if not meta then
ya.err(err)
return {}
end
local dur = meta.format.duration or 0
local rows = {
ui.Row({ "Video" }):style(ui.Style():fg("green")),
ui.Row { " Duration:", string.format("%d:%02d", math.floor(dur / 60), math.floor(dur % 60)) },
}
for i, s in ipairs(meta.streams) do
if s.codec_type == "video" then
rows[#rows + 1] = ui.Row { string.format(" Stream %d:", i), "video" }
rows[#rows + 1] = ui.Row { " Codec:", s.codec_name }
rows[#rows + 1] = ui.Row { " Size:", string.format("%dx%d", s.width, s.height) }
elseif s.codec_type == "audio" then
rows[#rows + 1] = ui.Row { string.format(" Stream %d:", i), "audio" }
rows[#rows + 1] = ui.Row { " Codec:", s.codec_name }
endView on GitHub (pinned to 5f901b886b)
Solutions
- Install ffmpeg (provides ffprobe) and confirm `ffprobe -version` works
- Verify the file with `ffprobe -show_format -show_streams <file>` to reproduce the error outside yazi
- Re-download/re-encode the file if it is corrupt
Example fix
// before $ ffprobe clip.mp4 # ffprobe: command not found // after sudo apt install ffmpeg
Defensive patterns
Strategy: validation
Validate before calling
if os.execute("command -v ffprobe >/dev/null 2>&1") ~= 0 then
print("ffprobe not found: install ffmpeg for video spot info")
end Prevention
- Install ffmpeg wherever yazi is used for video
- Validate media files before deep inspection
- Re-test with `ffprobe -show_format <file>` when spot rows are empty
When it happens
Trigger: Spotting a video when ffprobe is not installed, not on PATH, or rejects the file (corrupt/unrecognized container, probe output missing format.duration).
Common situations: ffmpeg not installed; probing exotic codecs; truncated files; ffprobe too old to parse the container.
Related errors
AI-assisted analysis of sxyazi/yazi@5f901b886b (2026-09-02).
Data as JSON: /api/errors/ca4080896262d616.
Report an issue: GitHub.