timmydoza / twilio-media-extensions-quickstart

A quickstart and code samples for Twilio Live Media Extensions. https://www.twilio.com/docs/live/media-extensions-overview

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Twilio Media Extensions

A Media Extension is a web-compliant JavaScript application executed within a Twilio Live MediaProcessor. Media Extensions perform specific actions commonly used in a Twilio Live streaming solution such as composing a Twilio Video Room's Participants.

Twilio hosts two Media Extensions: a Video Composer and an Audio Mixer.

You can also create your own Custom Composer Media Extension to customize the look of your livestream. This repository contains examples of Media Extension code.

Getting Started

πŸ““ Requirements

  • Node.js v16+
  • NPM v7+ (upgrade from NPM 6 with npm install --global npm)

πŸš€ Usage

To use a Twilio Media Extension, specify the Media Extension name your application would like to use when creating a MediaProcessor and any additional extension context. The following snippet demonstrates how to use a custom Video Composer to compose a Room's Participants.

curl -X POST 'https://media.twilio.com/v1/MediaProcessors' \
  -u 'SKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_api_key_secret' \
  -d 'Extension="https://video-composer-5226-dev.twil.io"' \
  -d 'ExtensionContext={"room": {"name": "RM123"}, "outputs": ["VJXXX"]}'

βš™οΈ Selecting and Configuring an Extension

Twilio Media Extensions are selected and configured via the MediaProcessor ExtensionContext parameter with a JSON object. The snippet below expands on the previous example by describing the object's structure.

{
  /**
    * This object contains any extension parameters required to perform
    * a media processing action. Reference each Twilio Media Extension's
    * documentation to understand what parameters are required or optional.
    */

  // Room Parameters (required)
  "room": {
      "name": "RM123", // required
  },

  // Extension Identity (optional)
  "identity": "my-video-composer",

  // Media destinations (required)
  "outputs": ["VJXXX"]
}

πŸ“š Project Structure

This project contains examples of Twilio Media Extensions. While each Extension performs specific media actions, the project is structured as a monorepo to enable the following:

  • Sharing code between Extensions (ex. Connecting to a Room)
  • Providing unified documentation

This repository contains the following sample Media Extension applications:

πŸ‘·β€β™€οΈ Development

The project uses npm workspaces to build each project. To get started, run npm install at the top-level project directory and reference each Extension's respective documentation for more details.

About

A quickstart and code samples for Twilio Live Media Extensions. https://www.twilio.com/docs/live/media-extensions-overview

License:Apache License 2.0


Languages

Language:TypeScript 74.9%Language:JavaScript 17.3%Language:SCSS 3.6%Language:CSS 2.0%Language:HTML 1.7%Language:Shell 0.4%