mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-12-14 11:26:23 +00:00
Create NIP 44 for Video Events
Nip for video events to enable dedicated video clients (e.g. Netflix, YouTube) to be built on nostr.
This commit is contained in:
parent
ef106eccca
commit
7646386956
98
44.md
Normal file
98
44.md
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
NIP-44
|
||||||
|
======
|
||||||
|
|
||||||
|
Video Events
|
||||||
|
---------------
|
||||||
|
|
||||||
|
`draft` `optional`
|
||||||
|
|
||||||
|
This specification defines video events representing a dedicated post of externally hosted content. These video events are _parameterized replaceable_ and deletable per [NIP-09](09.md).
|
||||||
|
|
||||||
|
Unlike a `kind 1` event with a video attached, Video Events are meant to contain all necessary metadata concerning the media and to be surfaced in media specific clients rather than general micro-blogging clients. The thought is for events of this kind to be referenced in a YouTube like nostr client where the video itself is at the center of the experience.
|
||||||
|
|
||||||
|
## Video Events
|
||||||
|
|
||||||
|
#### Format
|
||||||
|
|
||||||
|
The format uses a parameterized replaceable event kind `34235`.
|
||||||
|
|
||||||
|
The `.content` of these events is optional and should be a summary of the video's contents.
|
||||||
|
|
||||||
|
The list of tags are as follows:
|
||||||
|
* `d` (required) universally unique identifier (UUID). Generated by the client creating the video event.
|
||||||
|
* `title` (required) title of the video
|
||||||
|
* `src` (required) a link to the video data
|
||||||
|
* `m` (optional) the MIME type of the video data in the `src` tag
|
||||||
|
* `summary` (optional) summary/description of the video (same as content)
|
||||||
|
* `image` (optional) thumbnail or preview image for the video
|
||||||
|
* `text-track` (optional, repeated) link to WebVTT file for video, type of supplementary information (captions/subtitles/chapters/metadata), optional language code
|
||||||
|
* `content-warning` (optional) warning about content of NSFW video
|
||||||
|
* `t` (optional, repeated) hashtag to categorize video
|
||||||
|
* `p` (optional, repeated) 32-bytes hex pubkey of a participant in the video, optional recommended relay URL
|
||||||
|
* `r` (optional, repeated) references / links to web pages.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": <32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>,
|
||||||
|
"pubkey": <32-bytes lowercase hex-encoded public key of the event creator>,
|
||||||
|
"created_at": <Unix timestamp in seconds>,
|
||||||
|
"kind": 34235,
|
||||||
|
"content": "<summary of video>",
|
||||||
|
"tags": [
|
||||||
|
["d", "<UUID>"],
|
||||||
|
|
||||||
|
["title", "<title of video>"],
|
||||||
|
["summary", "<summary of video>"],
|
||||||
|
["image", "<thumbnail image for video>"],
|
||||||
|
|
||||||
|
// Video Data
|
||||||
|
["src", "<url>"],
|
||||||
|
["m", "<MIME type>"],
|
||||||
|
["text-track", "<url>", "<text track type>", "<optional language>"],
|
||||||
|
["content-warning", "<reason>"],
|
||||||
|
|
||||||
|
// Participants
|
||||||
|
["p", "<32-bytes hex of a pubkey>", "<optional recommended relay URL>"],
|
||||||
|
["p", "<32-bytes hex of a pubkey>", "<optional recommended relay URL>"],
|
||||||
|
|
||||||
|
// Hashtags
|
||||||
|
["t", "<tag>"],
|
||||||
|
["t", "<tag>"],
|
||||||
|
|
||||||
|
// Reference links
|
||||||
|
["r", "<url>"],
|
||||||
|
["r", "<url>"]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Video View
|
||||||
|
|
||||||
|
A video event view is a response to a video event to track a user's view or progress viewing the video.
|
||||||
|
|
||||||
|
### Format
|
||||||
|
|
||||||
|
The format uses a parameterized replaceable event kind `34236`.
|
||||||
|
|
||||||
|
The `.content` of these events is optional and could be a free-form note that acts like a bookmark for the user.
|
||||||
|
|
||||||
|
The list of tags are as follows:
|
||||||
|
* `a` (required) reference tag to kind `34235` video event being viewed
|
||||||
|
* `d` (required) universally unique identifier. Generated by the client creating the video event view
|
||||||
|
* `progress` (optional) timestamp of the user's progress in format `HH:MM:SS.sss`
|
||||||
|
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": <32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>,
|
||||||
|
"pubkey": <32-bytes lowercase hex-encoded public key of the event creator>,
|
||||||
|
"created_at": <Unix timestamp in seconds>,
|
||||||
|
"kind": 34236,
|
||||||
|
"content": "<note>",
|
||||||
|
"tags": [
|
||||||
|
["a", "<34235>:<calendar event author pubkey>:<d-identifier of video event>", "<optional relay url>"],
|
||||||
|
["d", "<UUID>"],
|
||||||
|
["progress", "00:08:31.520"],
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user