{ "$schema": "../_schema.json", "format": "pptx", "element": "media", "elementAliases": ["video", "audio"], "parent": "slide", "operations": { "add": true, "set": true, "get": true, "query": true, "remove": true }, "paths": { "positional": ["/slide[N]/video[M]", "/slide[N]/audio[M]"] }, "note": "Aliases: video, audio. Video/audio inferred from extension when type=media. Poster image auto-generated when not supplied.", "properties": { "src": { "type": "string", "description": "media source — file path, URL, or data-URI; accepted on add/set only. Get does NOT surface this key (no Format[\"src\"] or Format[\"relId\"] is emitted for media).", "aliases": ["path"], "add": true, "set": true, "get": false, "examples": ["--prop src=/path/to/video.mp4"], "readback": "add-time only; not surfaced in Get.", "enforcement": "report" }, "poster": { "type": "string", "description": "custom thumbnail image path.", "add": true, "set": true, "get": false, "examples": ["--prop poster=/path/to/thumb.png"], "readback": "n/a", "enforcement": "report" }, "x": { "type": "length", "add": true, "set": true, "get": true, "examples": ["--prop x=1in"], "readback": "length in cm (e.g. \"2cm\")", "enforcement": "report" }, "y": { "type": "length", "add": true, "set": true, "get": true, "examples": ["--prop y=1in"], "readback": "length in cm (e.g. \"2cm\")", "enforcement": "report" }, "width": { "type": "length", "add": true, "set": true, "get": true, "examples": ["--prop width=4in"], "readback": "length in cm (e.g. \"2cm\")", "enforcement": "report" }, "height": { "type": "length", "add": true, "set": true, "get": true, "examples": ["--prop height=3in"], "readback": "length in cm (e.g. \"2cm\")", "enforcement": "report" }, "volume": { "type": "int", "description": "playback volume 0-100.", "add": true, "set": true, "get": true, "examples": ["--prop volume=80"], "readback": "volume percent", "enforcement": "report" }, "autoPlay": { "type": "bool", "aliases": ["autoplay", "autoStart", "autostart"], "add": true, "set": true, "get": true, "examples": ["--prop autoPlay=true"], "readback": "true/false", "enforcement": "report" }, "loop": { "type": "bool", "description": "loop until stopped (repeats the clip indefinitely during playback).", "add": true, "set": true, "get": true, "examples": ["--prop loop=true"], "readback": "true/false", "enforcement": "report" }, "trimStart": { "type": "string", "description": "trim from media start. Accepts ms ('200'), seconds ('1.5s'), or 'hh:mm:ss.fff' ('00:00:01.500'); stored as ms-int. Alias: trimstart.", "aliases": ["trimstart"], "add": true, "set": true, "get": true, "examples": ["--prop trimStart=1500", "--prop trimStart=1.5s", "--prop trimStart=00:00:01.500"], "readback": "milliseconds (string)", "enforcement": "report" }, "trimEnd": { "type": "string", "description": "trim from media end. Same input forms as trimStart; stored as ms-int. Alias: trimend.", "aliases": ["trimend"], "add": true, "set": true, "get": true, "examples": ["--prop trimEnd=10000", "--prop trimEnd=10s", "--prop trimEnd=00:00:10.000"], "readback": "milliseconds (string)", "enforcement": "report" } } }