Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Updated as per DOCS-1213

The audio object is a JavaScript object for use with roNodeJs that allows the playback of audio by replicating functionality from the HTML5 audio element.

audio IDL

Code Block
languagejs
titleaudio IDL
interface Audio {
  // error state
  readonly attribute MediaError error;
 
  // network state
           attribute String src;
  readonly attribute String currentSrc;
  readonly attribute unsigned short networkState;
  const unsigned short NETWORK_EMPTY = 0;
  const unsigned short NETWORK_IDLE = 1;
  const unsigned short NETWORK_LOADING = 2;
  const unsigned short NETWORK_NO_SOURCE = 3;
 
  void load();
  String canPlayType(String type);
 
  // ready state
  readonly attribute unsigned short readyState;
  const unsigned short HAVE_NOTHING = 0;
  const unsigned short HAVE_METADATA = 1;
  const unsigned short HAVE_CURRENT_DATA = 2;
  const unsigned short HAVE_FUTURE_DATA = 3;
  const unsigned short HAVE_ENOUGH_DATA = 4;
 
  readonly attribute boolean seeking;
 
  // playback state
           attribute double currentTime;
  readonly attribute double duration;
  readonly attribute boolean paused;
           attribute double defaultPlaybackRate;
           attribute double playbackRate;
  readonly attribute boolean ended;
           attribute boolean autoplay;
           attribute boolean loop;
  void play();
  void pause();
 
  void setSyncParams(String domain, String sync_id, String iso_timestamp);
 
  // controls
           attribute double volume;
           attribute boolean muted;
 
  // BrightSign extensions
           attribute String pcmaudio;
           attribute String compaudio;
 
           attribute int x-bs-stream-timeout;
           attribute String x-bs-audio-mode;
 
  // Present but unimplemented
           attribute String preload;
  readonly attribute TimeRanges buffered;
  readonly attribute double initialTime;
  readonly attribute Date startOffsetTime;
           attribute boolean controls;
  readonly attribute TimeRanges played;
  readonly attribute TimeRanges seekable;
 
  readonly attribute TextTrack[] tracks;
  MutableTextTrack addTrack(String kind, optional String label, optional String language);
 
};
Panel
borderColor#3D3D3D
bgColor#F4F4F4
titleColor#3D3D3D
borderWidth0
titleBGColor#3D3D3D
borderStylesolid

ON THIS PAGE

Table of Contents
minLevel1
maxLevel5
outlinefalse
indent20px
typelist
printablefalse



Object Creation

To create an audio object, first load the brightsign/audio module using the require() method. Then create an instance of the audio class using the following example:

Code Block
languagejs
var audio_class = require("@brightsign/audio");
var audio_player = new audio_class();

Audio

Use this interface to create audio objects.

Event

seeked: This event is fired when media loops back to the start.

Methods

load() 
Code Block
languagejs
void load()

Triggers processing of the src. load starts up playback to the point of being ready to play the first frame. If autoplay is set, then it also starts playback. readyState and networkState are altered, and multiple events fire as playback starts.

canPlayType() 
Code Block
languagejs
 String canPlayType(String type)

Returns whether the passed MIME type can be displayed on the BrightSign player.

play() 
Code Block
languagejs
void play()

Starts or resumes playback.

pause() 
Code Block
languagejs
void pause()

Pauses playback.

setSyncParams()
Code Block
languagejs
 void setSyncParams(String domain, String sync_id, String iso_timestamp)

This BrightSign extension is documented here.

Audio Parameters

[String] 
  • src string:

Contains
  • Contains the URL of a media resource to use in the element. Only file URLs are supported currently, including relative URLs to the current script and file:/// URI with an absolute filesystem path on the player. The URL returned when reading this value back is always absolute with file: protocol on the front.

[
  • currentSrc string

] currentSrc
  • :

 Contains
  • Contains the URL of the media resource in use by the element.

[
  • networkState unsigned short

] networkState 
  • : An enum that indicates the current state of the fetching of media. This attribute moves through the states as src is selected and playback begins, but because support is currently for files only, it is not as dynamic as when used with HTTP.

 Possible
  •  Possible values are:

    • NETWORK_EMPTY = 0,

    • NETWORK_IDLE,

    • NETWORK_LOADING,

    • NETWORK_NO_

SOURCE
    • SOURCE 

  • readyState 

[
  • unsigned short

] readyState
  • :

 Indicates
  • Indicates the readiness state of media. This attribute moves through the states as src is selected and playback begins. Possible values are:

    • HAVE_NOTHING = 0,

    • HAVE_METADATA,

    • HAVE_CURRENT_DATA,

    • HAVE_FUTURE_DATA,

    • HAVE_ENOUGH_DATA

[
  • seeking boolean

] seeking
  • :  Indicates if the media is seeking to a new position.

[
  • currentTime double

] currentTime
  • : Specifies the current playback time in seconds as a floating point. Currently seeking is not supported, and setting this attribute has no effect. If playback is completed, this returns the same value as duration.

[
  • duration double

] duration
  • : Specifies the current duration of the media in seconds as a floating point.

[
  • paused boolean

] paused
  • : Reflects whether the media playback is currently paused.

[
  • defaultPlaybackRate double

] defaultPlaybackRate
  • : This cannot be set to anything other than 1.0, and always returns 1.0 (only normal speed playback is supported).

[
  • playbackRate double

] playbackRate
  • : This cannot be set to anything other than 1.0, and always returns 1.0 (only normal speed playback is supported).

[bool] ended: Reflects
  • ended  boolean: Reflects where the media playback has reached the end of the media.

[
  • autoplay boolean

] autoplay
  • : Indicates whether playback should automatically begin when media is available to play without interruption.

[
  • loop boolean

] loop
  • : Sets whether the playback should loop or not. The value is used when load is called. Setting it once playback has started will have no effect.

[
  • volume double

] volume
  • : Controls the volume of playback

[
  • muted boolean

] muted
  • :

 Controls
  • Controls the muting and unmuting of the audio

[String] pcmaudio: Route
  • pcmaudio string: Route decoded PCM audio to the outputs in the string. Outputs available are analogearc, or a USB output (for example, usb:A.0). Multiple outputs can be specified by using a semi-colon delimeter (for example, earc; analog)

[String] compaudio: Routes
  • compaudio string: Routes compressed audio direct to eARC without decoding. Can be set to earc only.

[int] 
  • x-bs-stream-timeout int: Controls timeouts when streaming.

[String] x
  • x-bs-audio-modestring:

 
  • Controls the downmix of audio to mono. Possible values are MonoLeftMixdown, MonoRightMixdown, and the default which

is 
  • is Stereo. Using this, two audio players can output to a single stereo output, one to the left channel, and the other to the right channel.

Unimplemented Methods and Properties

  • preload

  • buffered

  • initialTime

  • startOffsetTime

  • controls

  • played

  • seekable

  • tracks

Examples

Code Block
languagejs
const audio_class = require("@brightsign/audio");
let audio_player = new audio_class();
audio_player.src = "/storage/sd/file.mp4"
audio_player.volume = .5;
audio_player.load();
audio_player.play();

Code Block
languagejs
let setupAudio = (audio, setupObj) => {
   for (let [key, val] of Object.entries(setupObj)) {
      audio[key] = val;
   }
}

let interval = setInterval(()=>{}, 10000);
const audio_class = require("@brightsign/audio");
let audio = new audio_class();
let settings = {
   src: '/storage/sd/file.mp4',
   autoplay: true,
   loop: false,
   volume: .5,
   

pcmAudio

pcmaudio: "analog"
};
setupAudio(audio, settings);
audio.load();
audio.addEventListener("ended", () => {
   audio.src = '';
   audio = null;
   clearInterval(interval);
   process.exit(0);
});