Skip to content

madoo.media-technical-info/v1

Madoo media technical information — Normalized technical facts for a storage-backed image, audio, or video asset.

Reference madoo.media-technical-info/v1
Schema id urn:madoo:schema:media-technical-info:v1
Version 1.0.0
Served at GET /api/v1/json-schemas/madoo.media-technical-info/v1 · MCP get_json_schema
  • Produced by: media/technical_info → info
  • Read by: utility/dubbing_manifest → final_video_info, utility/dubbing_manifest → master_info
Field Type Required Rules Description
schema "madoo.media-technical-info/v1" yes
mediaKind one of "image", "audio", "video" yes
declaredContentType string or null yes max length 255
detectedContentType string yes min length 1; max length 255
containerFormat string or null yes max length 255
sizeBytes integer yes ≥ 0
durationMilliseconds integer or null yes ≥ 0
bitrateBitsPerSecond integer or null yes ≥ 0
width integer or null yes ≥ 1
height integer or null yes ≥ 1
frameRate number or null yes > 0
rotationDegrees one of 0, 90, 180, 270, null yes
hasAudio boolean yes
videoStreams array of objects yes max items 64
videoStreams[].index integer yes ≥ 0
videoStreams[].codec string yes min length 1; max length 128
videoStreams[].width integer or null yes ≥ 1
videoStreams[].height integer or null yes ≥ 1
videoStreams[].frameRate number or null yes > 0
videoStreams[].rotationDegrees one of 0, 90, 180, 270, null yes
videoStreams[].pixelFormat string or null yes max length 128
videoStreams[].language string or null yes max length 32
videoStreams[].isAttachedPicture boolean yes
videoStreams[].isPrimary boolean yes
audioStreams array of objects yes max items 64
audioStreams[].index integer yes ≥ 0
audioStreams[].codec string yes min length 1; max length 128
audioStreams[].channels integer or null yes ≥ 1
audioStreams[].channelLayout string or null yes max length 128
audioStreams[].sampleRateHz integer or null yes ≥ 1
audioStreams[].bitrateBitsPerSecond integer or null yes ≥ 0
audioStreams[].language string or null yes max length 32
audioStreams[].isPrimary boolean yes
probe object yes no other fields
probe.name string yes min length 1; max length 128
probe.version string yes min length 1; max length 64
warnings array of objects yes max items 256
warnings[].code string yes min length 1; max length 128
warnings[].message string yes min length 1; max length 2000
warnings[].path string or null yes max length 500
madoo.media-technical-info/v1 (JSON Schema)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:madoo:schema:media-technical-info:v1",
"title": "Madoo Media Technical Info v1",
"description": "Normalized technical facts measured from a storage-backed image, audio, or video asset.",
"type": "object",
"required": [
"schema",
"mediaKind",
"declaredContentType",
"detectedContentType",
"containerFormat",
"sizeBytes",
"durationMilliseconds",
"bitrateBitsPerSecond",
"width",
"height",
"frameRate",
"rotationDegrees",
"hasAudio",
"videoStreams",
"audioStreams",
"probe",
"warnings"
],
"properties": {
"schema": {
"const": "madoo.media-technical-info/v1"
},
"mediaKind": {
"type": "string",
"enum": [
"image",
"audio",
"video"
]
},
"declaredContentType": {
"type": [
"string",
"null"
],
"maxLength": 255
},
"detectedContentType": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"containerFormat": {
"type": [
"string",
"null"
],
"maxLength": 255
},
"sizeBytes": {
"type": "integer",
"minimum": 0
},
"durationMilliseconds": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"bitrateBitsPerSecond": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"width": {
"type": [
"integer",
"null"
],
"minimum": 1
},
"height": {
"type": [
"integer",
"null"
],
"minimum": 1
},
"frameRate": {
"type": [
"number",
"null"
],
"exclusiveMinimum": 0
},
"rotationDegrees": {
"type": [
"integer",
"null"
],
"enum": [
0,
90,
180,
270,
null
]
},
"hasAudio": {
"type": "boolean"
},
"videoStreams": {
"type": "array",
"maxItems": 64,
"items": {
"type": "object",
"required": [
"index",
"codec",
"width",
"height",
"frameRate",
"rotationDegrees",
"pixelFormat",
"language",
"isAttachedPicture",
"isPrimary"
],
"properties": {
"index": {
"type": "integer",
"minimum": 0
},
"codec": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"width": {
"type": [
"integer",
"null"
],
"minimum": 1
},
"height": {
"type": [
"integer",
"null"
],
"minimum": 1
},
"frameRate": {
"type": [
"number",
"null"
],
"exclusiveMinimum": 0
},
"rotationDegrees": {
"type": [
"integer",
"null"
],
"enum": [
0,
90,
180,
270,
null
]
},
"pixelFormat": {
"type": [
"string",
"null"
],
"maxLength": 128
},
"language": {
"type": [
"string",
"null"
],
"maxLength": 32
},
"isAttachedPicture": {
"type": "boolean"
},
"isPrimary": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"audioStreams": {
"type": "array",
"maxItems": 64,
"items": {
"type": "object",
"required": [
"index",
"codec",
"channels",
"channelLayout",
"sampleRateHz",
"bitrateBitsPerSecond",
"language",
"isPrimary"
],
"properties": {
"index": {
"type": "integer",
"minimum": 0
},
"codec": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"channels": {
"type": [
"integer",
"null"
],
"minimum": 1
},
"channelLayout": {
"type": [
"string",
"null"
],
"maxLength": 128
},
"sampleRateHz": {
"type": [
"integer",
"null"
],
"minimum": 1
},
"bitrateBitsPerSecond": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"language": {
"type": [
"string",
"null"
],
"maxLength": 32
},
"isPrimary": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"probe": {
"type": "object",
"required": [
"name",
"version"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"version": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"additionalProperties": false
},
"warnings": {
"type": "array",
"maxItems": 256,
"items": {
"type": "object",
"required": [
"code",
"message",
"path"
],
"properties": {
"code": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"path": {
"type": [
"string",
"null"
],
"maxLength": 500
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}