upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/71.md
diff options
context:
space:
mode:
authorkieran <kieran@harkin.me>2024-05-27 12:18:27 +0100
committerkieran <kieran@harkin.me>2024-05-27 12:18:27 +0100
commit53afaaece61f02e92b5ef9c3e9c32945c7ebf522 (patch)
treea68c5477561a2af46865c6c8919a17d1fcfbbbb4 /71.md
parent85df9b0e89e23ed7c0dee73c29004f23b25020df (diff)
nip71 imeta
Diffstat (limited to '71.md')
-rw-r--r--71.md117
1 files changed, 64 insertions, 53 deletions
diff --git a/71.md b/71.md
index a811434..fa8faa9 100644
--- a/71.md
+++ b/71.md
@@ -20,21 +20,60 @@ The format uses a parameterized replaceable event kind `34235` for horizontal vi
20 20
21The `.content` of these events is a summary or description on the video content. 21The `.content` of these events is a summary or description on the video content.
22 22
23The list of tags are as follows: 23The primary source of video information is the `imeta` tags which is defined in [NIP-92](92.md)
24* `d` (required) universally unique identifier (UUID). Generated by the client creating the video event. 24
25* `url` (required) the url to the video file 25Each `imeta` tag can be used to specify a variant of the video by the `dim` & `m` properties.
26* `m` a string indicating the data type of the file. The [MIME types](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types) format must be used, and they should be lowercase. 26
27Example:
28```json
29[
30 ["imeta",
31 "dim 1920x1080",
32 "url https://myvideo.com/1080/12345.mp4",
33 "x 3093509d1e0bc604ff60cb9286f4cd7c781553bc8991937befaacfdc28ec5cdc",
34 "m video/mp4",
35 "image https://myvideo.com/1080/12345.jpg",
36 "image https://myotherserver.com/1080/12345.jpg",
37 "fallback https://myotherserver.com/1080/12345.mp4",
38 "fallback https://andanotherserver.com/1080/12345.mp4",
39 "service nip96",
40 ],
41 ["imeta",
42 "dim 1280x720",
43 "url https://myvideo.com/720/12345.mp4",
44 "x e1d4f808dae475ed32fb23ce52ef8ac82e3cc760702fca10d62d382d2da3697d",
45 "m video/mp4",
46 "image https://myvideo.com/720/12345.jpg",
47 "image https://myotherserver.com/720/12345.jpg",
48 "fallback https://myotherserver.com/720/12345.mp4",
49 "fallback https://andanotherserver.com/720/12345.mp4",
50 "service nip96",
51 ],
52 ["imeta",
53 "dim 1280x720",
54 "url https://myvideo.com/720/12345.m3u8",
55 "x 704e720af2697f5d6a198ad377789d462054b6e8d790f8a3903afbc1e044014f",
56 "m application/x-mpegURL",
57 "image https://myvideo.com/720/12345.jpg",
58 "image https://myotherserver.com/720/12345.jpg",
59 "fallback https://myotherserver.com/720/12345.m3u8",
60 "fallback https://andanotherserver.com/720/12345.m3u8",
61 "service nip96",
62 ],
63]
64```
65
66Where `url` is the primary server url and `fallback` are other servers hosting the same file, both `url` and `fallback` should be weighted equally and clients are recommended to use any of the provided video urls.
67
68The `image` tag contains a preview image (at the same resolution). Multiple `image` tags may be used to specify fallback copies in the same way `fallback` is used for `url`.
69
70Additionally `service nip96` may be included to allow clients to search the authors NIP-96 server list to find the file using the hash.
71
72### Other tags:
27* `title` (required) title of the video 73* `title` (required) title of the video
28* `"published_at"`, for the timestamp in unix seconds (stringified) of the first time the video was published 74* `published_at`, for the timestamp in unix seconds (stringified) of the first time the video was published
29* `x` containing the SHA-256 hexencoded string of the file.
30* `size` (optional) size of file in bytes
31* `dim` (optional) size of file in pixels in the form `<width>x<height>`
32* `duration` (optional) video duration in seconds 75* `duration` (optional) video duration in seconds
33* `magnet` (optional) URI to magnet file
34* `i` (optional) torrent infohash
35* `text-track` (optional, repeated) link to WebVTT file for video, type of supplementary information (captions/subtitles/chapters/metadata), optional language code 76* `text-track` (optional, repeated) link to WebVTT file for video, type of supplementary information (captions/subtitles/chapters/metadata), optional language code
36* `thumb` (optional) url of thumbnail with same aspect ratio
37* `image` (optional) url of preview image with same dimensions
38* `content-warning` (optional) warning about content of NSFW video 77* `content-warning` (optional) warning about content of NSFW video
39* `alt` (optional) description for accessibility 78* `alt` (optional) description for accessibility
40* `segment` (optional, repeated) start timestamp in format `HH:MM:SS.sss`, end timestamp in format `HH:MM:SS.sss`, chapter/segment title, chapter thumbnail-url 79* `segment` (optional, repeated) start timestamp in format `HH:MM:SS.sss`, end timestamp in format `HH:MM:SS.sss`, chapter/segment title, chapter thumbnail-url
@@ -53,19 +92,23 @@ The list of tags are as follows:
53 ["d", "<UUID>"], 92 ["d", "<UUID>"],
54 93
55 ["title", "<title of video>"], 94 ["title", "<title of video>"],
56 ["thumb", "<thumbnail image for video>"],
57 ["published_at", "<unix timestamp>"], 95 ["published_at", "<unix timestamp>"],
58 ["alt", <description>], 96 ["alt", <description>],
59 97
60 // Video Data 98 // Video Data
61 ["url",<string with URI of file>], 99 ["imeta",
62 ["m", <MIME type>], 100 "dim 1920x1080",
63 ["x",<Hash SHA-256>], 101 "url https://myvideo.com/1080/12345.mp4",
64 ["size", <size of file in bytes>], 102 "x 3093509d1e0bc604ff60cb9286f4cd7c781553bc8991937befaacfdc28ec5cdc",
103 "m video/mp4",
104 "image https://myvideo.com/1080/12345.jpg",
105 "image https://myotherserver.com/1080/12345.jpg",
106 "fallback https://myotherserver.com/1080/12345.mp4",
107 "fallback https://andanotherserver.com/1080/12345.mp4",
108 "service nip96",
109 ],
110
65 ["duration", <duration of video in seconds>], 111 ["duration", <duration of video in seconds>],
66 ["dim", <size of file in pixels>],
67 ["magnet",<magnet URI> ],
68 ["i",<torrent infohash>],
69 ["text-track", "<encoded `kind 6000` event>", "<recommended relay urls>"], 112 ["text-track", "<encoded `kind 6000` event>", "<recommended relay urls>"],
70 ["content-warning", "<reason>"], 113 ["content-warning", "<reason>"],
71 ["segment", <start>, <end>, "<title>", "<thumbnail URL>"], 114 ["segment", <start>, <end>, "<title>", "<thumbnail URL>"],
@@ -83,36 +126,4 @@ The list of tags are as follows:
83 ["r", "<url>"] 126 ["r", "<url>"]
84 ] 127 ]
85} 128}
86``` 129``` \ No newline at end of file
87
88## Video View
89
90A video event view is a response to a video event to track a user's view or progress viewing the video.
91
92### Format
93
94The format uses a parameterized replaceable event kind `34237`.
95
96The `.content` of these events is optional and could be a free-form note that acts like a bookmark for the user.
97
98The list of tags are as follows:
99* `a` (required) reference tag to kind `34235` or `34236` video event being viewed
100* `d` (required) same as `a` reference tag value
101* `viewed` (optional, repeated) timestamp of the user's start time in seconds, timestamp of the user's end time in seconds
102
103
104```json
105{
106 "id": <32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>,
107 "pubkey": <32-bytes lowercase hex-encoded public key of the event creator>,
108 "created_at": <Unix timestamp in seconds>,
109 "kind": 34237,
110 "content": "<note>",
111 "tags": [
112 ["a", "<34235 | 34236>:<video event author pubkey>:<d-identifier of video event>", "<optional relay url>"],
113 ["e", "<event-id", "<relay-url>"]
114 ["d", "<34235 | 34236>:<video event author pubkey>:<d-identifier of video event>"],
115 ["viewed", <start>, <end>],
116 ]
117}
118```