nips/44.md
zmeyer44 7646386956
Create NIP 44 for Video Events
Nip for video events to enable dedicated video clients (e.g. Netflix, YouTube) to be built on nostr.
2023-12-07 20:09:08 -05:00

3.5 KiB

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.

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