Player

The Editframe Player is a web-based video player that allows you to play videos that can also be rendered by Editframe. It is a great way to allow users to preview their videos before downloading or rendering them, and can be incorporated into your own application.

Quickstart

Getting started with the Editframe Player on the web is easy. Simply install the Typescript-based package and import the Player class.

Installation

npm install @editframe/embed

Usage

import { Player } from '@editframe/embed'

const player = new Player({
  applicationId: 'MY_APP_ID', // Your Editframe application ID
  containerId, // The ID of the container element
  config, // The Editframe composition configuration
  dimensions, // The dimensions of the player; defaults to 100% width and 100% height
  hideControls, // Whether to hide the player controls; defaults to false
})

Common use cases

The Editframe Player is a great way to present multimedia in realtime. It can be used in a variety of ways, including:

  • Displaying a video preview before rendering with Editframe
  • Providing pseudo-video experiences without ever rendering a video
  • Allowing users to customize a video before rendering with other rendering programs or services

Example

Let's take a look at a simple example of how to use the Editframe Player. You would like to build an app that allows users to create a video slideshow from three existing videos. These videos should also have audio and you're interested in including a company watermark. Most importantly you want users to preview the video before downloading it. You can use the Editframe Player to build an interface for this.

Setting up configuration

The Player can be configured with a composition configuration, which is a JSON object that describes the video composition. This is the same configuration that can optionally be used to render videos with Editframe.

Establishing the canvas

We begin by creating a the main parameters of the composition. We set the dimensions to 1080x1080, the background color to black, and the duration to 9 seconds.

Blank video composition

{
  "backgroundColor": "#000000FF",
  "dimensions": { "height": 1080, "width": 1080 },
  "duration": 9,
  "layers": [
    
  ]
}

Adding the first video

Let's insert our first layer into the composition. We'll add a video layer that starts at the beginning of the composition and lasts for 3 seconds.

Composition with one video

{
  "backgroundColor": "#000000FF",
  "dimensions": { "height": 1080, "width": 1080 },
  "duration": 9,
  "layers": [
    {
      "id": "eb5afc",
      "type": "video",
      "audio": { "volume": 1 },
      "position": {
        "angle": 0,
        "angleX": 0,
        "angleY": 0,
        "isRelative": false,
        "origin": "center",
        "x": "center",
        "y": "center"
      },
      "size": { "format": null, "height": null, "scale": 1, "width": null },
      "timeline": { "start": 0 },
      "transitions": [],
      "trim": { "end": 3, "start": 0 },
      "source": "https://efapisplat.nyc3.digitaloceanspaces.com/templates/wrapped/smiley-balloons.mp4"
    },
  ]
}

Adding the second video

Now that we have our first video, we'll add a second video layer that starts where the last left off, and lasts for 3 seconds.

Composition with two videos

{
  "backgroundColor": "#000000FF",
  "dimensions": { "height": 1080, "width": 1080 },
  "duration": 9,
  "layers": [
    { ... },
    {
      "type": "video",
      "audio": { "volume": 1 },
      "position": {
        "angle": 0,
        "angleX": 0,
        "angleY": 0,
        "isRelative": false,
        "origin": "center",
        "x": "center",
        "y": "center"
      },
      "size": { "format": null, "height": null, "scale": 1, "width": null },
      "timeline": { "start": 3, "end": 6 },
      "transitions": [],
      "trim": { "end": 3, "start": 0 },
      "source": "https://efapisplat.nyc3.digitaloceanspaces.com/templates/wrapped/book.mp4"
    },
  ]
}

Adding the third video

The third video works the same way as the first and second. It'll start at the end of the second video, and last for 3 seconds.

Composition with all three videos

{
  "backgroundColor": "#000000FF",
  "dimensions": { "height": 1080, "width": 1080 },
  "duration": 9,
  "layers": [
    { ... },
    { ... },
    {
      "id": "a76e84",
      "type": "video",
      "audio": { "volume": 1 },
      "position": {
        "angle": 0,
        "angleX": 0,
        "angleY": 0,
        "isRelative": false,
        "origin": "center",
        "x": "center",
        "y": "center"
      },
      "size": { "format": null, "height": null, "scale": 1, "width": null },
      "timeline": { "start": 6, end: 9 },
      "transitions": [],
      "trim": { "end": 3, "start": 0 },
      "source": "https://efapisplat.nyc3.digitaloceanspaces.com/templates/wrapped/rollercoaster.mp4"
    }
  ]
}

Adding a company logo/watermark

Phew! The videos are in place, but we still need to add a company logo or watermark. We'll add it to the very center of the composition, so it can't be missed. Let's add a new layer to the composition with a type of image.

Composition with all three videos

{
  "backgroundColor": "#000000FF",
  "dimensions": { "height": 1080, "width": 1080 },
  "duration": 9,
  "layers": [
    { ... }, // video 1
    { ... }, // video 2
    { ... }, // video 3
    {
      "type": "image",
      "position": {
        "angle": 0,
        "angleX": 0,
        "angleY": 0,
        "isRelative": false,
        "origin": "center",
        "x": "center",
        "y": "center"
      },
      "size": { "format": null, "height": null, "scale": 1, "width": 700 },
      "timeline": { "start": 0, end: null },
      "transitions": [],
      "trim": { "end": null, "start": 0 },
      "source": "https://cdn.editframe.com/web/logo_white.png"
    }
  ]
}

Adding an audio track

We're almost done! The last thing we need to do is add an audio track to our composition. We can do this by adding a new layer with a type of audio.

Composition with all layers

{
  "backgroundColor": "#000000FF",
  "dimensions": { "height": 1080, "width": 1080 },
  "duration": 9,
  "layers": [
    { ... }, // video 1
    { ... }, // video 2
    { ... }, // video 3
    { ... }, // logo
    {
      "type": "audio",
      "volume": 1 ,
      "timeline": { "start": 0, end: null },
      "trim": { "end": null, "start": 0 },
      "source": "https://editframe.com/docs/composition/layers/audio/audio-example.mp3"
    }
  ]
}