Overview

Sample Chat IO Diagram

What is vidi?

A simple to use live streaming video system designed for web developers. It enables any web developer to add live streaming video into their websites via simple to use API.

Concepts

You will be dealing with the following concepts when using vidi:

Client-side

The following concepts are used in the JavaScriptAPI.

Screen

The screen is a visible area on the web page. screen shows a display of other client’s output. if showing a display from any source is not wanted, screen must be false. (for example in audiochat, screen is not necessary)

Camera

A camera is a part of system which handles sending display from a webcam. Camera is used where a client sends a video from his/her webcam. (For example, localecho needs camera because video from webcam is sent to computer, or two people video chat needs camera.)

Mic

A microphone is the part which publishes sound of client to other client(s). Mic is necessary if sound of client will be sent to other client(s).

Speaker

Speakers enables playing sound to the client. Speakers are necessary to hear other client(s)’ sound.

Server-side

The following concepts are used in the WebServicesAPI.

Room

Room is where "client"s meet. Each room has it's own objects(inputs, outputs etc.) and you can't bind clients in different rooms.

Client

Client is a unique user that connected to the system. Clients can have inputs and outputs.

Input

Inputs are used to stream video from clients to the vidi server.

Output

Outputs are used to stream video from the vidi server to clients.

Binding

Bindings are used to bind two objects (most commonly inputs and outputs) to stream video in one direction (from an input to an output).

Filter

Filters allow modifying streams on the fly. Some examples are adding watermark to video, applying effects (black&white, sephia), resizing, splitting video and audio, tiling more than one video to a single video etc.
To be implemented.

Recorder

Recorders are like outputs but it allows you to record video with a given id.
To be implemented. You can still record video with passing createRoom web service method a record parameter

Player

Players are like inputs but it allows you to play video that is recorded with an id.
To be implemented. You can still play video with using playVideoFromInput web service method

Mux

Mux allows multiplying a given input to multiple outputs without changing the stream. It allows you to change inputs when an input is bounded to a large number of outputs. (It saves you from making API request to change bindings for each output)
To be implemented.

How It Works?

A step by step video chat example

  1. User navigates to a page in your site that contains vidi.
  2. Your web application creates necessary objects (client, input, output etc.) on vidi server via the WebServicesAPI.

  3. User's web browser loads vidi files (vidi.js, vidi.swf etc.) from vidi server.
  4. You pass the parameters (clientid, inputid, outputid) about the user to vidi via the JavaScriptAPI.

  5. Flash object in user's web browser connects to the vidi server (makes an RTMP connection).
  6. Video streaming starts.
  7. vidi flash object notifies your web application via a callback function you defined in JavaScript.

  8. vidi server notifies your web application via doing a Postback.

Overview (last edited 2009-07-23 20:48:21 by ErtugKaramatli)