{"record":{"id":"5ce968f102bc3606","repo":"sgl-project/sglang","slug":"ffprobe-is-required-to-validate-final-minimax-h3-o","errorCode":null,"errorMessage":"ffprobe is required to validate final MiniMax H3 output","messagePattern":"ffprobe is required to validate final MiniMax H3 output","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/video_adapter.py","lineNumber":387,"sourceCode":"                \"-v\",\n                \"error\",\n                \"-show_entries\",\n                \"stream=codec_type,codec_name,pix_fmt,width,height,avg_frame_rate,nb_frames,duration,sample_rate,channels:format=format_name,duration\",\n                \"-of\",\n                \"json\",\n                str(path),\n            ],\n            check=True,\n            capture_output=True,\n            text=True,\n            timeout=30,\n        )\n    except subprocess.TimeoutExpired as exc:\n        raise RuntimeError(\n            \"MiniMax H3 final output ffprobe timed out after 30 seconds\"\n        ) from exc\n    except FileNotFoundError as exc:\n        raise RuntimeError(\n            \"ffprobe is required to validate final MiniMax H3 output\"\n        ) from exc\n    except subprocess.CalledProcessError as exc:\n        detail = (exc.stderr or \"\").strip()\n        suffix = f\": {detail}\" if detail else \"\"\n        raise RuntimeError(\n            f\"ffprobe failed for final MiniMax H3 output{suffix}\"\n        ) from exc\n\n    try:\n        payload = json.loads(probe.stdout)\n    except (TypeError, ValueError) as exc:\n        raise RuntimeError(\n            \"ffprobe returned invalid JSON for MiniMax H3 output\"\n        ) from exc\n    if not isinstance(payload, dict):\n        raise RuntimeError(\"ffprobe returned invalid JSON for MiniMax H3 output\")\n    streams = payload.get(\"streams\") or []","sourceCodeStart":369,"sourceCodeEnd":405,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/video_adapter.py#L369-L405","documentation":"Final-output validation requires the ffprobe binary, which was not found on PATH (subprocess raised FileNotFoundError). Without ffprobe the adapter cannot verify the generated MP4's streams, resolution, or frame rate, so it refuses to return unvalidated output.","triggerScenarios":"Running the SGLang server/container in an image that does not include ffmpeg/ffprobe; PATH not including the ffmpeg install directory.","commonSituations":"Minimal Docker images (python:slim) without ffmpeg; slim CI environments; conda envs where ffmpeg is installed but not on the server's PATH.","solutions":["Install ffmpeg (provides ffprobe): apt-get install -y ffmpeg (Debian/Ubuntu) or apk add ffmpeg (Alpine)","Verify with `ffprobe -version` using the same user/env as the server","If using conda: conda install -c conda-forge ffmpeg","Rebuild your Docker image with ffmpeg added"],"exampleFix":"# Dockerfile\nRUN apt-get update && apt-get install -y --no-install-recommends ffmpeg && rm -rf /var/lib/apt/lists/*","handlingStrategy":"validation","validationCode":"import shutil\nif shutil.which(\"ffprobe\") is None:\n    raise EnvironmentError(\"install ffmpeg before running MiniMax H3 validation\")","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Add `apt-get install -y ffmpeg` to Dockerfiles and CI images","Add a startup health check for ffprobe availability"],"tags":["minimax-h3","ffprobe","missing-binary","environment"],"backgroundTag":"missing-system-dependency","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}