Live video on the AT Protocol
at next 107 lines 2.9 kB view raw
1{ 2 "lexicon": 1, 3 "id": "place.stream.segment", 4 "defs": { 5 "main": { 6 "type": "record", 7 "description": "Media file representing a segment of a livestream", 8 "key": "tid", 9 "record": { 10 "type": "object", 11 "required": ["id", "signingKey", "startTime", "creator"], 12 "properties": { 13 "id": { 14 "type": "string", 15 "description": "Unique identifier for the segment" 16 }, 17 "signingKey": { 18 "type": "string", 19 "description": "The DID of the signing key used for this segment" 20 }, 21 "startTime": { 22 "type": "string", 23 "format": "datetime", 24 "description": "When this segment started" 25 }, 26 "duration": { 27 "type": "integer", 28 "description": "The duration of the segment in nanoseconds" 29 }, 30 "creator": { 31 "type": "string", 32 "format": "did" 33 }, 34 "video": { 35 "type": "array", 36 "items": { 37 "type": "ref", 38 "ref": "#video" 39 } 40 }, 41 "audio": { 42 "type": "array", 43 "items": { 44 "type": "ref", 45 "ref": "#audio" 46 } 47 }, 48 "size": { 49 "type": "integer", 50 "description": "The size of the segment in bytes" 51 }, 52 "contentWarnings": { 53 "type": "ref", 54 "ref": "place.stream.metadata.contentWarnings" 55 }, 56 "contentRights": { 57 "type": "ref", 58 "ref": "place.stream.metadata.contentRights" 59 }, 60 "distributionPolicy": { 61 "type": "ref", 62 "ref": "place.stream.metadata.distributionPolicy" 63 } 64 } 65 } 66 }, 67 "audio": { 68 "type": "object", 69 "required": ["codec", "rate", "channels"], 70 "properties": { 71 "codec": { "type": "string", "enum": ["opus"] }, 72 "rate": { "type": "integer" }, 73 "channels": { "type": "integer" } 74 } 75 }, 76 "video": { 77 "type": "object", 78 "required": ["codec", "width", "height"], 79 "properties": { 80 "codec": { "type": "string", "enum": ["h264"] }, 81 "width": { "type": "integer" }, 82 "height": { "type": "integer" }, 83 "framerate": { 84 "type": "ref", 85 "ref": "#framerate" 86 }, 87 "bframes": { "type": "boolean" } 88 } 89 }, 90 "framerate": { 91 "type": "object", 92 "required": ["num", "den"], 93 "properties": { 94 "num": { "type": "integer" }, 95 "den": { "type": "integer" } 96 } 97 }, 98 "segmentView": { 99 "type": "object", 100 "required": ["cid", "record"], 101 "properties": { 102 "cid": { "type": "string", "format": "cid" }, 103 "record": { "type": "unknown" } 104 } 105 } 106 } 107}