ffpipe — video conversion, probe & frames
Ce que fait ce MCP
Uses FFmpeg to asynchronously convert video, inspect media metadata, and extract frames from supplied URLs or uploads.
Outils
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'upload': {'type': 'boolean', 'const': True, 'description': 'Set true to upload the bytes yourself instead of giving a sourceUrl (exactly one of the two). The paid result then returns status awaiting_upload plus uploadUrl and uploadExpiresAt: HTTP PUT the raw bytes to uploadUrl before the deadline (201 -> queued). You are charged at acceptance; an abandoned upload window errors with no refund, while a pipeline failure after your upload earns a retryVoucher.'}, 'maxWidth': {'type': 'integer', 'maximum': 4096, 'minimum': 1, 'description': 'Max output width, default 1920'}, 'maxHeight': {'type': 'integer', 'maximum': 4096, 'minimum': 1, 'description': 'Max output height, default 1080'}, 'sourceUrl': {'type': 'string', 'description': 'https URL of the input media (<= 100 MiB). Fetched from datacenter IP ranges - prefer a presigned URL from storage you control; no IP literals, no localhost/.internal/.local. Provide EXACTLY ONE of sourceUrl or upload.'}, 'retryVoucher': {'type': 'string', 'description': "Retry-voucher credential (`uuid.hmac`) from a failed paid job's status - pays for this call instead of x402. Single use, kind-matched."}}}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['mode'], 'properties': {'n': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'every_nth only: keep every Nth DECODED frame (a frame index, not a time).'}, 'fps': {'type': 'number', 'maximum': 120, 'description': 'interval only: frames per second, may be below 1 (0.5 = one frame every two seconds).', 'exclusiveMinimum': 0}, 'mode': {'enum': ['all', 'every_nth', 'interval', 'keyframes', 'evenly_spaced', 'timestamps'], 'type': 'string', 'description': 'How to pick frames (required): "all" every frame; "every_nth" every Nth decoded frame (needs n); "interval" a fixed rate in seconds (needs fps, may be below 1); "keyframes" keyframes only, cheap on long sources; "evenly_spaced" count samples across the window (needs count); "timestamps" one frame per given second (needs timestamps).'}, 'count': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': 'evenly_spaced only: how many frames to spread across the window.'}, 'format': {'enum': ['jpeg', 'jpg', 'webp', 'png'], 'type': 'string', 'description': 'Image format of each frame, default jpeg (small and accepted by every vision API). png is lossless.'}, 'upload': {'type': 'boolean', 'const': True, 'description': 'Set true to upload the bytes yourself instead of giving a sourceUrl (exactly one of the two). The paid result then returns status awaiting_upload plus uploadUrl and uploadExpiresAt: HTTP PUT the raw bytes to uploadUrl before the deadline (201 -> queued). You are charged at acceptance; an abandoned upload window errors with no refund, while a pipeline failure after your upload earns a retryVoucher.'}, 'endTime': {'type': 'number', 'minimum': 0, 'description': 'Window end in seconds (0 or omitted = to the end); must exceed startTime.'}, 'quality': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Encoder quality for jpeg/webp, default 85; ignored for png.'}, 'maxFrames': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': 'Ceiling on frames produced, default and hard limit 1000. A request whose sampling would exceed it fails before any decoding.'}, 'sourceUrl': {'type': 'string', 'description': 'https URL of the input media (<= 100 MiB). Fetched from datacenter IP ranges - prefer a presigned URL from storage you control; no IP literals, no localhost/.internal/.local. Provide EXACTLY ONE of sourceUrl or upload.'}, 'startTime': {'type': 'number', 'minimum': 0, 'description': 'Window start in seconds (default 0).'}, 'timestamps': {'type': 'array', 'items': {'type': 'number', 'minimum': 0}, 'maxItems': 1000, 'description': 'timestamps only: seconds into the source, one accurate frame each. Sorted for you.'}, 'retryVoucher': {'type': 'string', 'description': "Retry-voucher credential (`uuid.hmac`) from a failed paid job's status - pays for this call instead of x402. Single use, kind-matched."}, 'maxOutputWidth': {'type': 'integer', 'maximum': 4096, 'minimum': 0, 'description': "Fit box width applied to the source's DISPLAY dimensions: aspect preserved, never upscaled, oriented to the input. 0 = no limit on this axis."}, 'maxOutputHeight': {'type': 'integer', 'maximum': 4096, 'minimum': 0, 'description': 'Fit box height, same rules as maxOutputWidth.'}}}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['jobId', 'token'], 'properties': {'jobId': {'type': 'string', 'description': 'Job id from the acceptance'}, 'token': {'type': 'string', 'description': 'Ownership token - the `t` query parameter of statusUrl'}}}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['message'], 'properties': {'type': {'enum': ['feature_request', 'bug', 'feedback'], 'type': 'string', 'description': 'What this is: "feature_request" for a capability ffpipe does not offer yet, "bug" for something broken, "feedback" for anything else. Defaults to "feedback".'}, 'jobId': {'type': 'string', 'description': 'Optional job id this relates to. Context only - ownership is NOT checked and no token is needed.'}, 'contact': {'type': 'string', 'maxLength': 200, 'description': 'Optional. An email or handle to reply at, up to 200 characters. Omit it and the submission stays anonymous.'}, 'message': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'What you wanted, what went wrong, or what you think. Plain text, 1 to 2000 characters. Be concrete: "needed a single frame as a jpeg at a given timestamp" is worth more to us than "more features".'}}}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'upload': {'type': 'boolean', 'const': True, 'description': 'Set true to upload the bytes yourself instead of giving a sourceUrl (exactly one of the two). The paid result then returns status awaiting_upload plus uploadUrl and uploadExpiresAt: HTTP PUT the raw bytes to uploadUrl before the deadline (201 -> queued). You are charged at acceptance; an abandoned upload window errors with no refund, while a pipeline failure after your upload earns a retryVoucher.'}, 'summary': {'type': 'boolean', 'description': 'Keep the normalized ffpipe_summary block (json only). Default true; send false for byte-exact raw output.'}, 'sections': {'type': 'array', 'items': {'enum': ['format', 'streams', 'chapters', 'programs'], 'type': 'string'}, 'description': 'Which sections to report. Default: format, streams, chapters.'}, 'sourceUrl': {'type': 'string', 'description': 'https URL of the input media (<= 100 MiB). Fetched from datacenter IP ranges - prefer a presigned URL from storage you control; no IP literals, no localhost/.internal/.local. Provide EXACTLY ONE of sourceUrl or upload.'}, 'showFrames': {'type': 'boolean', 'description': 'Report per-FRAME detail. Large: a bounded window is applied for you unless you send readIntervals. Pair with showEntries to keep only the fields you need.'}, 'countFrames': {'type': 'boolean', 'description': 'Count frames exactly. Requires decoding the whole file - slow on long sources.'}, 'showEntries': {'type': 'string', 'maxLength': 256, 'description': 'Keep only the named fields, e.g. "frame=pict_type,pts_time,key_frame" or "format=duration". Section and field names only.'}, 'showPackets': {'type': 'boolean', 'description': 'Report per-PACKET detail. Same bounded-window treatment as showFrames.'}, 'countPackets': {'type': 'boolean', 'description': 'Count packets exactly. Same cost caveat as countFrames.'}, 'outputFormat': {'enum': ['json', 'xml', 'csv', 'flat', 'ini'], 'type': 'string', 'description': 'Format of the delivered analysis, default json. Only json carries the ffpipe_summary block; the rest are raw. flat is delivered as .txt.'}, 'retryVoucher': {'type': 'string', 'description': "Retry-voucher credential (`uuid.hmac`) from a failed paid job's status - pays for this call instead of x402. Single use, kind-matched."}, 'readIntervals': {'type': 'string', 'maxLength': 256, 'description': 'Limit the analysis to a window, e.g. "%+60" (first 60 seconds), "30%+10" (10 seconds from 0:30), "%+#500" (first 500 packets).'}, 'selectStreams': {'type': 'string', 'maxLength': 256, 'description': 'Restrict the analysis to matching streams, e.g. "v:0" (first video stream) or "a" (all audio).'}}}
Modifications récentes des outils
Serveurs MCP similaires
Andreax
Offers pay-per-call AI services for inference, agent and workflow design, OCR and transcription, code generation and review, clas…
Webflow
Reads Webflow site metadata, CMS collections, and collection items, including stored content and publishing status.
Devto
Retrieves DEV Community articles, including article content, metadata, tags, reactions, and comments.
AVI RIFF check, file discarded
Checks whether binary input has an AVI RIFF container signature and provides other lightweight file-format validation utilities.
RSS/Atom link rel count, markup discarded
Counts link relation values in RSS or Atom markup and provides general URL, HTTP, JSON, and format validation utilities.
Matroska EBML check, file discarded
Checks Matroska EBML structure without retaining the supplied file, alongside basic developer utilities.
Cannon Studio
Manages creative worlds, assets, projects, scenes, and generation requests while providing product, pricing, and developer API in…
Razi Tools
Provides utilities for document and image processing, OCR, screenshots, PDF manipulation, QR generation, text transformation, and…