{"record":{"id":"a96549174c06e8b3","repo":"sgl-project/sglang","slug":"minimax-h3-requires-ffmpeg-and-ffprobe-for-media-p","errorCode":null,"errorMessage":"MiniMax H3 requires ffmpeg and ffprobe for media processing and validated output delivery; missing executables: {', '.join(missing_media_tools)}. Install the ffmpeg system package before starting SGLang.","messagePattern":"MiniMax H3 requires ffmpeg and ffprobe for media processing and validated output delivery; missing executables: (.+?)\\. Install the ffmpeg system package before starting SGLang\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"critical","filePath":"python/sglang/multimodal_gen/runtime/pipelines/minimax_h3_pipeline.py","lineNumber":62,"sourceCode":"        \"audio_vae\",\n        # scheduler intentionally absent: model_index carries scheduler=null;\n        # per-modality sigma schedules are generated in TimestepPreparation\n        # from the task profile, and the loop scheduler math lives in\n        # scheduling_minimax_h3_euler_ancestral (stages accept scheduler=None).\n        \"transformer\",\n    ]\n\n    def __init__(self, *args, **kwargs):\n        # TODO: Enable this check on ROCm after adding ffmpeg to the AMD Docker\n        # image and CI dependency installer.\n        if not current_platform.is_rocm():\n            missing_media_tools = [\n                executable\n                for executable in (\"ffmpeg\", \"ffprobe\")\n                if shutil.which(executable) is None\n            ]\n            if missing_media_tools:\n                raise RuntimeError(\n                    \"MiniMax H3 requires ffmpeg and ffprobe for media processing \"\n                    \"and validated output delivery; missing executables: \"\n                    f\"{', '.join(missing_media_tools)}. Install the ffmpeg system \"\n                    \"package before starting SGLang.\"\n                )\n        super().__init__(*args, **kwargs)\n\n    @staticmethod\n    def model_subfolder_for_variant(variant: str) -> str:\n        if not isinstance(variant, str) or not variant.strip():\n            raise ValueError(\"MiniMax H3 model variant must be a non-empty string\")\n        normalized = variant.strip().lower()\n        subfolders = {\n            \"fl2va\": \"FL2VA\",\n            \"ref2va\": \"Ref2VA\",\n        }\n        try:\n            return subfolders[normalized]","sourceCodeStart":44,"sourceCodeEnd":80,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/pipelines/minimax_h3_pipeline.py#L44-L80","documentation":"Raised by MiniMaxH3Pipeline.__init__ when either ffmpeg or ffprobe is not found on PATH (checked with shutil.which). The pipeline uses ffmpeg for media demux/decode and ffprobe to validate generated output before delivery, so it refuses to start without both.","triggerScenarios":"Starting the MiniMax H3 server in a container or venv image that omits the ffmpeg package; PATH scoped to a conda/venv that shadows or excludes system ffmpeg; slim Docker images (python:*-slim, distroless) without multimedia libs.","commonSituations":"Kubernetes/Docker deployments with minimal base images; CI runners lacking system packages; systems where ffmpeg exists only as a Python package (imageio-ffmpeg) rather than a binary on PATH.","solutions":["Install ffmpeg via the system package manager (apt-get install -y ffmpeg / apk add ffmpeg / yum install ffmpeg) in the image or host before starting SGLang","Verify both binaries resolve: `which ffmpeg ffprobe` from the exact environment/PATH the server will run under","If using Docker, add the ffmpeg install to the image rather than relying on the host"],"exampleFix":"# before (slim image, no ffmpeg)\ndocker run sglang:slim ... --model minimax-h3\n\n# after\nRUN apt-get update && apt-get install -y --no-install-recommends ffmpeg\ndocker build ... && docker run ... --model minimax-h3","handlingStrategy":"validation","validationCode":"import shutil\nmissing = [x for x in ('ffmpeg', 'ffprobe') if shutil.which(x) is None]\nif missing:\n    raise SystemExit(f'install ffmpeg; missing: {missing}')","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Bake ffmpeg into serving Docker images explicitly","Add a preflight which() check to launch scripts for media pipelines"],"tags":["minimax-h3","ffmpeg","missing-system-dependency","docker","sglang"],"backgroundTag":"missing-system-dependency","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}