nips/44.md

99 lines
3.5 KiB
Markdown
Raw Normal View History

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"],
]
}
```