---
title: audio
slug: develop/es/audio
docTags: 
createdAt: 2025-03-11T07:07:19.526Z
---

El objeto *audio* es un objeto JavaScript para usar con *roNodeJs* que permite la reproducción de audio replicando la funcionalidad del elemento de audio HTML5.

**IDL de audio**

```text
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);
 
};
```

## Creación de objetos

Para crear un objeto *audio*, primero cargue el módulo *brightsign/audio* usando el método require(). Luego cree una instancia de la clase audio usando el siguiente ejemplo:

```javascript
var audio_class = require("@brightsign/audio");
var audio_player = new audio_class();
```

## Audio

Use esta interfaz para crear objetos *audio*.

### Evento

`buscado:` Este evento se activa cuando el medio vuelve en bucle al inicio.

### Métodos

### load() 

```javascript
void load()
```

Activa el procesamiento de `src`. `cargar` inicia la reproducción hasta el punto en que está listo para reproducir el primer fotograma. Si `reproducción automática` está establecido, también inicia la reproducción. `readyState` y `networkState` se modifican y se activan múltiples eventos a medida que comienza la reproducción.

### canPlayType() 

```javascript
 String canPlayType(String type)
```

Devuelve si el tipo MIME pasado puede mostrarse en el reproductor BrightSign.

### play() 

```javascript
void play()
```

Inicia o reanuda la reproducción.

### pause() 

```javascript
void pause()
```

Pausa la reproducción.

### setSyncParams()

```javascript
 void setSyncParams(String domain, String sync_id, String iso_timestamp)
```

Esta extensión de BrightSign está documentada en [esta página](docId\:TqFzr6uwOWkNzTqk9bVQ2).

## Parámetros de audio

- `src` <font color="#6B21A8">string</font>: Contiene la URL de un recurso multimedia que se usará en el elemento. Actualmente solo se admiten URL de archivos, incluidas URL relativas al script actual y un URI file:/// con una ruta absoluta del sistema de archivos en el reproductor. La URL devuelta al leer este valor nuevamente siempre es absoluta con el protocolo file: al inicio.
- `currentSrc` <font color="#6B21A8">string</font>: Contiene la URL del recurso multimedia que está usando el elemento.
- `networkState` <font color="#6B21A8">unsigned short</font>: Un enum que indica el estado actual de la obtención del contenido multimedia. Este atributo pasa por los estados a medida que se selecciona `src` y comienza la reproducción, pero debido a que actualmente el soporte es solo para archivos, no es tan dinámico como cuando se usa con HTTP. Los valores posibles son:
  - `NETWORK_EMPTY = 0,`
  - `NETWORK_IDLE,`
  - `NETWORK_LOADING,`
  - `NETWORK_NO_SOURCE` 
- `readyState` <font color="#6B21A8">unsigned short</font>: Indica el estado de preparación del contenido multimedia. Este atributo pasa por los estados a medida que se selecciona `src` y comienza la reproducción. Los valores posibles son:
  - `HAVE_NOTHING = 0,`
  - `HAVE_METADATA,`
  - `HAVE_CURRENT_DATA,`
  - `HAVE_FUTURE_DATA,`
  - `HAVE_ENOUGH_DATA`
- `buscando` <font color="#6B21A8">boolean</font>:  Indica si el contenido multimedia está buscando una nueva posición.
- `horaActual` <font color="#6B21A8">double</font>: Especifica el tiempo de reproducción actual en segundos como un número de punto flotante. Actualmente la búsqueda no es compatible, y establecer este atributo no tiene efecto. Si la reproducción se completa, esto devuelve el mismo valor que `duration`
- `duración` <font color="#6B21A8">double</font>: Especifica la duración actual del contenido multimedia en segundos como un número de punto flotante.
- `en pausa` <font color="#6B21A8">boolean</font>: Refleja si la reproducción multimedia está actualmente en pausa.
- `defaultPlaybackRate` <font color="#6B21A8">double</font>: Esto no puede establecerse en ningún valor distinto de 1.0, y siempre devuelve 1.0 (solo se admite la reproducción a velocidad normal).
- `velocidad de reproducción` <font color="#6B21A8">double</font>: Esto no puede establecerse en ningún valor distinto de 1.0, y siempre devuelve 1.0 (solo se admite la reproducción a velocidad normal).
- `terminado`  <font color="#6B21A8">boolean</font>: Refleja cuando la reproducción multimedia ha llegado al final del contenido multimedia.
- `reproducción automática` <font color="#6B21A8">boolean</font>: Indica si la reproducción debe comenzar automáticamente cuando el contenido multimedia esté disponible para reproducirse sin interrupciones.
- `bucle` <font color="#6B21A8">boolean</font>: Establece si la reproducción debe repetirse o no. El valor se utiliza cuando se llama a load. Configurarlo una vez que la reproducción ha comenzado no tendrá efecto.
- `volumen` <font color="#6B21A8">double</font>: Controla el volumen de la reproducción
- `silenciado` <font color="#6B21A8">boolean</font>: Controla el silenciamiento y la reactivación del audio
- `pcmaudio` <font color="#6B21A8">string</font>: Enruta audio PCM decodificado a las salidas en la cadena. Las salidas disponibles son `analógico`, `earc`, o una salida USB (por ejemplo, `usb:A.0`). Se pueden especificar múltiples salidas utilizando un delimitador de punto y coma (por ejemplo, `earc; analógico`)
- `compaudio` <font color="#6B21A8">string</font>: Enruta audio comprimido directamente a eARC sin decodificación. Solo puede establecerse en `earc` .
- `x-bs-stream-timeout` <font color="#6B21A8">int</font>: Controla los tiempos de espera durante la transmisión.
- `x-bs-audio-mode` <font color="#6B21A8">string</font>: Controla la mezcla descendente de audio a mono. Los valores posibles son `MonoLeftMixdown`, `MonoRightMixdown`, y el valor predeterminado que es `Estéreo`. Con esto, dos reproductores de audio pueden emitir a una sola salida estéreo, uno al canal izquierdo y el otro al canal derecho.

## Métodos y propiedades no implementados

- `precargar`
- `almacenado en búfer`
- `initialTime`
- `horaDeDesplazamientoInicial`
- `controles`
- `jugado`
- `buscable`
- `pistas`

## Ejemplos

```javascript
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();
```

```javascript
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: "analog"
};
setupAudio(audio, settings);
audio.load();
audio.addEventListener("ended", () => {
   audio.src = '';
   audio = null;
   clearInterval(interval);
   process.exit(0);
});
```

