zone.zephyra.screens.frame
Schema Diff
+2 -2
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 0 non-breaking changes.
Breaking Changes (1)
- KindChanged KindChanged { vertex_id: "zone.zephyra.screens.frame:body.frameRate", old_kind: "object", new_kind: "string" }
Migration Guidance
Additional Notes
- Breaking: KindChanged { vertex_id: "zone.zephyra.screens.frame:body.frameRate", old_kind: "object", new_kind: "string" }
1
1
{
2
2
"id": "zone.zephyra.screens.frame",
3
3
"defs": {
4
4
"main": {
5
5
"key": "tid",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"season",
11
11
"episode",
12
12
"frame",
13
13
"frameRate",
14
14
"resolution",
15
15
"image",
16
16
"createdAt"
17
17
],
18
18
"properties": {
19
19
"frame": {
20
20
"type": "integer",
21
21
"maximum": 524288,
22
22
"minimum": 0,
23
23
"description": "Frame index within the episode video."
24
24
},
25
25
"image": {
26
26
"type": "blob",
27
27
"accept": [
28
28
"image/png"
29
29
],
30
30
"maxSize": 10485760,
31
31
"description": "PNG render of the frame."
32
32
},
33
33
"season": {
34
34
"type": "integer",
35
35
"maximum": 64,
36
36
"minimum": 1,
37
37
"description": "Season number."
38
38
},
39
39
"episode": {
40
40
"type": "integer",
41
41
"maximum": 32,
42
42
"minimum": 1,
43
43
"description": "Episode number within the season."
44
44
},
45
45
"subtitle": {
46
46
"type": "string",
47
47
"description": "Subtitle text active at this frame, if any. Not all frames have subtitles."
48
48
},
49
49
"createdAt": {
50
50
"type": "string",
51
51
"format": "datetime",
52
52
"description": "Timestamp the frame was published."
53
53
},
54
54
"frameRate": {
55
-
"type": "float",
56
-
"description": "Frame rate of the source video in frames per second. Combine with `frame` to derive the time offset."
55
+
"type": "string",
56
+
"description": "Frame rate of the source video as a rational number string (e.g. '24000/1001'). Combine with `frame` to derive the time offset."
57
57
},
58
58
"resolution": {
59
59
"ref": "#resolution",
60
60
"type": "ref",
61
61
"description": "Pixel dimensions of `image`."
62
62
},
63
63
"externalRecords": {
64
64
"type": "array",
65
65
"items": {
66
66
"ref": "#externalRecord",
67
67
"type": "ref"
68
68
},
69
69
"description": "Records on external services or other ATProto collections that disseminate this frame."
70
70
}
71
71
}
72
72
}
73
73
},
74
74
"resolution": {
75
75
"type": "object",
76
76
"required": [
77
77
"width",
78
78
"height"
79
79
],
80
80
"properties": {
81
81
"width": {
82
82
"type": "integer",
83
83
"minimum": 1
84
84
},
85
85
"height": {
86
86
"type": "integer",
87
87
"minimum": 1
88
88
}
89
89
}
90
90
},
91
91
"externalRecord": {
92
92
"type": "object",
93
93
"required": [
94
94
"collection",
95
95
"ref"
96
96
],
97
97
"properties": {
98
98
"ref": {
99
99
"ref": "com.atproto.repo.strongRef",
100
100
"type": "ref",
101
101
"description": "Strong reference to the ATProto record."
102
102
},
103
103
"collection": {
104
104
"type": "string",
105
105
"description": "Identifier of the collection the record belongs to."
106
106
}
107
107
}
108
108
}
109
109
},
110
110
"lexicon": 1,
111
111
"description": "A single frame extracted from a TV show, published alongside disseminated posts on external services."
112
112
}