BigQ / locomote-video-player

Media Player in Adobe Flash with RTSP support

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Locomote Video Player Build Status

Getting started

Building Locomote

To compile the project, nodejs and npm is required. Since npm is bundled with nodejs, you only need to download and install nodejs.

To build Locomote, simply run npm install in the root directory. This will download Adobe Flex SDK, and other required modules and build the SWF file to build/.

Running Locomote

To run Locomote in a web page, you need to host both the SWF (Player.swf in example below), and the javascript library (locomote.js in example below). Use a simple page like:

<html>
  <head>
    <title>Locomote</title>
    <style type="text/css">
      #player {
        width: 320px;
        height: 240px;
      }
    </style>
    <script src="locomote.js"></script>
    <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
    <script type="text/javascript">

      $(document).ready(function() {
        /* Instansiate Locomote. First argument is the id of the DOM
           element where Locomote should embed the player. The second
           argument is the URL to the player SWF */
        var locomote = new Locomote('player', 'Player.swf');

        /* Set up a listener for when the API is ready to be used */
        locomote.on('apiReady', function() {
          console.log('API is ready. `play` can now be called');

          /* Tell Locomote to play the specified media */
          locomote.play('rtsp://server.com/stream');
        });

        /* Start listening for streamStarted event */
        locomote.on('streamStarted', function() {
          console.log('stream has started');
        });

        /* If any error occurs, we should take action */
        locomote.on('streamError', function(err) {
          console.log(err);
        });
      });

    </script>
  </head>
  <body>
    <div id="player" class="player"></div>
  </body>
</html>

API Specification

NB: This API is only a draft, and parts of it are not implemented. Do not use this yet.

Actions

play(url:String)

Starts playing video from url. Protocol is determined by url. Example: rtsp://server:port/stream.

Supported protocols:

stop()

Stops video stream.

pause()

Pauses video stream.

resume()

Resumes video from paused state.

seek(timestamp)

Seeks to timestamp ms from start of stream. The current stream state is preserved - paused or playing.

playbackSpeed(speed)

Fast forward video stream with playback speed multiplied with speed.

streamStatus()

Returns a status object with the following data:

  • fps - frames per second.
  • resolution (object) - the stream size { width, height }.
  • playback speed - current playback speed. 1.0 is normal stream speed.
  • current time - ms from start of stream.
  • protocol - which high-level transport protocol is in use.
  • audio (bool) - if the stream contains audio.
  • video (bool) - if the stream contains video.
  • state - current playback state (playing, paused, stopped).
  • isSeekable (bool) - if it is possible to seek in the stream.
  • isPlaybackSpeedChangeable (bool) - if the playback speed can be altered.
  • streamURL - the source of the current media.

playerStatus()

Returns a status object with the following data:

  • microphoneVolume - the volume of the microphone when capturing audio
  • speakerVolume - the volume of the speakers (i.e. the stream volume).
  • microphoneMuted (bool) - if the microphone is muted.
  • speakerMuted (bool) - if the speakers are muted.
  • fullScreen (bool) - if the player is currently in fullscreen mode.

speakerVolume(vol)

Sets speaker volume from 0-100. The default value is 50.

muteSpeaker()

Mutes the speaker volume. Remembers the current volume and resets to it if the speakers are unmuted.

unmuteSpeaker()

Resets the volume to previous unmuted value.

microphoneVolume(vol)

Sets microphone volume from 0-100. The default value is 50.

muteMicrophone()

Mutes the microphone. Remembers the current volume and resets to it if the microphone is unmuted.

unmuteMicrophone()

Resets the volume to previous unmuted value.

startAudioTransmit(url, type)

Starts transmitting microphone input to the camera speaker. The optional type parameter can be used for future implementations of other protocols, currently only the Axis audio transmit api is supported. For Axis cameras the url parameter should be in the format - http://server:port/axis-cgi/audio/transmit.cgi.

stopAudioTransmit()

Stops transmitting microphone input to the camera speaker.

config(config)

Sets configuration values of the player. config is a JavaScript object that can have the following optional values:

  • buffer - The number of seconds that should be buffered. The default value is 1.
  • scaleUp - Specifies if the video can be scaled up or not. The default value is false.
  • allowFullscreen - Specifices if fullscreen mode is allowed or not. The default value is true.

on(eventName:String, callback:Function)

Starts listening for events with eventName. Calls callback when event triggers.

off(eventName:String, callback:Function)

Stops listening for events with eventName. Calls callback when event triggers.

Events

streamStarted

Dispatched when video streams starts.

streamPaused(result)

Dispatched when video stream is paused. result is an object with a single property reason that can have the following values:

  • user - stream was paused by user.
  • buffering - stream has stopped for buffering.

streamStopped

Dispatched when stream stops.

streamEnded

Dispatched when fixed length video stream reaches end of stream. The streamStopped event is also dispatched just before this event.

streamError(error)

Dispatched when video stream fails. error can be either protocol error (rtsp etc) or Locomote internal error. Includes socket and seek errors.error is a generic object.

seekCompleted

Dispatched when seek has completed.

fullscreenEntered

Dispatched when the player enters fullscreen mode.

fullscreenExited

Dispatched when the player exits fullscreen mode.

About

Media Player in Adobe Flash with RTSP support

License:GNU General Public License v2.0