---
title: roAudioPlayer
slug: develop/es/roaudioplayer
docTags: 
createdAt: 2025-03-11T07:07:18.732Z
---

Se utiliza un reproductor de audio para reproducir archivos de audio mediante la interfaz genérica *ifMediaTransport* . Si el puerto de mensajes está configurado, el objeto enviará eventos del tipo *roAudioEvent*. Todas las llamadas al objeto son asíncronas. En otras palabras, la reproducción de audio se maneja en un hilo diferente del script. El script puede continuar ejecutándose mientras se reproduce el audio. El equivalente en JavaScript es usar la etiqueta de audio HTML.

## ifMessagePort

### SetPort(port As roMessagePort) As Void

Publica mensajes del tipo *roAudioEvent* en el puerto de mensajes adjunto.

## ifUserData

### SetUserData(user\_data As Object)

Configura los datos del usuario que se devolverán cuando se generen eventos.

### GetUserData() As Object

Devuelve los datos del usuario que se configuraron previamente mediante SetUserData(). Devolverá Invalid si no se ha configurado ningún dato.

## IfIdentity

### GetIdentity() As Integer

:::hint{type="info"}
La interfaz *siIdentity* ha quedado obsoleta. Recomendamos usar la interfaz *ifUserData* en su lugar.
:::

## ifMediaTransport 

Consulte [roVideoPlayer](docId\:OSZbyfPamAsbWnD6w7JSh) para obtener una descripción de los métodos *ifMediaTransport* .

## ifAudioControl

### SetPcmAudioOutputs(outputs As Dynamic) As Boolean

Especifica qué conectores de audio deben emitir audio PCM. Este método acepta una instancia de *roAudioOutput* o una matriz de instancias de *roAudioOutput*.

### SetCompressedAudioOutputs(outputs As Dynamic) As Boolean

Especifica qué conectores de audio deben emitir audio comprimido (por ejemplo, audio codificado Dolby AC3). Este método acepta una instancia de *roAudioOutput* o una matriz de instancias de *roAudioOutput* . 

:::hint{type="info"}
Cuando se llama al método `SetPcmAudioOutputs()`, `SetMultichannelAudioOutputs()`,  o `SetCompressedAudioOutputs()` , se invalidarán las configuraciones de los siguientes métodos de *ifAudioControl* : `SetAudioOutput()`, `MapStereoOutput()`, `SetUsbAudioPort()`, `MapDigitalOutput()`.
:::

### SetMultichannelAudioOutputs(array As Object) As Boolean

Especifica qué conectores de audio deben emitir audio PCM multicanal. Está
diseñado para reproducir contenido de audio que tenga más de dos canales estéreo, como
sonido envolvente 5.1 o 7.1. El método acepta un *roAudioOutput* o una matriz
de instancias de *roAudioOutput*. &#x20;

NOTA: también debe llamar a *SetAudioMode* con el parámetro establecido en 0, es decir, sonido envolvente AC3.&#x20;

:::CodeblockTabs
Example

```none
video_player = CreateObject("roVideoPlayer")
output = CreateObject("roAudioOutput", "hdmi")
video_player.SetMultichannelAudioOutputs(output)
video_player.SetAudioMode(0)
```
:::

### SetAudioMode(audio\_mode As Integer) As Boolean

Configura el modo de audio del objeto *roAudioPlayer* . Este método acepta los siguientes valores:

- `0`: Sonido envolvente AC3 
- `1`: AC3 mezclado a estéreo 
- `2`: Sin audio
- `3`: Izquierdo
- `4`: Derecho 

Las opciones 0 y 1 solo se aplican a archivos de video, mientras que las opciones 2, 3 y 4 se aplican a todas las fuentes de audio.

### SetVolume(volume As Dynamic) As Boolean

Especifica el volumen de la salida de audio como un porcentaje o una cantidad en decibelios. Para usar una medición porcentual, pase un valor entero entre `0` y `100`. Para usar una medición en decibelios, pase un *roAssociativeArray* que contenga un único parámetro `{db:<value As Float>}` . La medición en decibelios es un valor absoluto: pasar `0` no especifica ningún cambio en la salida de audio, y el rango efectivo de mediciones es de aproximadamente -80 a 20 decibelios.

El valor del volumen se recorta antes de usarse (es decir, `SetVoume(101)` establecerá el volumen en 100 y devolverá `Verdadero`). El volumen es el mismo para todas las salidas asignadas y USB/SPDIF/analógicas.

:::hint{type="info"}
Se almacenan niveles de volumen separados para *roAudioPlayer* y *roVideoPlayer*.
:::

### SetChannelVolumes(channel\_mask As Integer, volume As Integer) As Boolean

Puede controlar el volumen de canales de audio individuales. Este comando de volumen toma una máscara de canal hexadecimal, que determina los canales a los que aplicar el volumen, y un nivel, que es un porcentaje de la escala completa. El control de volumen funciona según el canal de audio en lugar de la salida. La máscara de canal es una máscara de bits con los siguientes bits para la salida MP3:

- `&H01`: Izquierdo
- `&H02`: Derecho
- `&H03`: Ambos, izquierdo y derecho

### SetPreferredAudio(description As String) As Boolean

Selecciona qué pista de audio usar si hay múltiples pistas de audio en el flujo. Consulte [Flujos preferidos](docId\:OSZbyfPamAsbWnD6w7JSh) para obtener más detalles.

### ConfigureAudioResources() As Boolean

### SetAudioDelay(delay\_in\_milliseconds As Integer) As Boolean

Agrega un desplazamiento de marca de tiempo de presentación (PTS) al audio. Esto permite ajustar las diferencias de multiplexación de archivos. Los retrasos están limitados a 150 ms o menos. Actualmente, el software del sistema solo admite retrasos positivos; por lo tanto, si necesita adelantar el audio respecto al video, deberá usar `SetVideoDelay()` en su lugar.

### SetVideoDelay(delay\_in\_milliseconds As Integer) As Boolean

Agrega un desplazamiento de marca de tiempo de presentación (PTS) al video. Esto permite ajustar las diferencias de multiplexación de archivos. Los retrasos están limitados a 150 ms o menos.

### StoreEncryptionKey(a As String, b As String) As Boolean

### StoreObfuscatedEncryptionKey(a As String, b As String) As Boolean

### Métodos obsoletos

### SetAudioOutput(audio\_output As Integer) As Boolean

### MapStereoOutput(mapping As Integer) As Boolean

### MapDigitalOutput(mapping As Integer) As Boolean

### SetStereoMappingSpan(a As Integer) As Boolean

### SetAudioStream(stream\_index As Integer) As Boolean

### SetSpdifMute(a As Boolean) As Boolean

### SetUsbAudioPort(a As Integer) As Boolean

### SetAudioOutputAux(audio\_output As Integer) As Boolean

### SetAudioModeAux(audio\_mode As Integer) As Boolean

### MapStereoOutputAux(mapping As Integer) As Boolean

SetVolumeAux(volume As Integer) As Boolean

### SetChannelVolumesAux(channel\_mask As Integer, volume As Integer) As Boolean

### SetAudioStreamAux(stream\_index As Integer) As Boolean

## Configuración de salidas de audio

Si se está reproduciendo un archivo de audio/video o se ha reproducido, debe llamar a `Stop()` antes de cambiar la salida de audio.

El siguiente script muestra cómo usar los métodos `SetPcmAudioOutputs()` y `SetCompressedAudioOutputs()` junto con [roAudioOutput](#). El reproductor de audio/video está configurado para emitir audio decodificado a la salida analógica o audio comprimido a las salidas HDM&#x49;**®** y SPDIF.

```text
ao1=CreateObject("roAudioOutput", "Analog")
ao2=CreateObject("roAudioOutput", "HDMI")
ao3=CreateObject("roAudioOutput", "SPDIF")

a1=CreateObject("roAudioPlayer")
a1.SetPcmAudioOutputs(ao1)
 
ar = CreateObject("roArray", 2, true)
ar[0] = ao2
ar[1] = ao3
a1.SetCompressedAudioOutputs(ar)
```

:::hint{type="danger"}
En la mayoría de los casos, redirigir las salidas de audio durante la reproducción de audio/video hará que la reproducción se detenga. El software del sistema seguirá respondiendo, por lo que puede usar comandos para salir de la reproducción durante o después de una modificación de la salida de audio.
:::

Este script establece la salida de audio en el tercer puerto de audio analógico:

```text
analog3 = CreateObject("roAudioOutput", "analog:3")
video = CreateObject("roVideoPlayer")
video.SetPcmAudioOutputs(analog3)
```

Este script configura múltiples salidas para un reproductor de audio:

```text
analogOut = CreateObject("roAudioOutput", "analog")
hdmiOut = CreateObject("roAudioOutput", "hdmi")

audio = CreateObject("roAudioPlayer")
audio.SetPcmAudioOutputs([analogOut, hdmiOut])
```

Este script establece el nivel de volumen para canales individuales:

```text
audio = CreateObject("roAudioPlayer")
audio.SetChannelVolumes(&H01, 60)      'left channel to 60%
audio.SetChannelVolumes(&H02, 75)      'right channel to 75%
audio.SetChannelVolumes(&H03, 65)      'all channels to 65%
```

## Reproducir múltiples archivos de audio simultáneamente

Múltiples archivos MP3, así como la pista de audio de un archivo de video, pueden reproducirse en cualquier combinación de lo siguiente:

- Salidas analógicas
- SPDIF / HDMI
- USB

Solo se puede enviar un único archivo a una salida en un momento dado. Por ejemplo, dos *roAudioPlayers* no pueden reproducir simultáneamente en la salida SPDIF. El segundo que intente realizar una llamada a *ReproducirArchivo* obtendrá un error. Para liberar una salida, se debe detener el flujo de audio o video (mediante las llamadas a *ifMediaTransport* `Detener` o `StopClear`).

Tenga en cuenta lo siguiente sobre la funcionalidad de múltiples archivos de audio:

- La salida de audio analógica integrada y la salida HDMI utilizan el mismo reloj de frecuencia de muestreo. Por lo tanto, si se reproduce contenido diferente en cada una, el contenido debe tener la misma frecuencia de muestreo.
- Actualmente, solo se admite un único conjunto de altavoces USB.
- Cada flujo de audio y video reproducido consume parte de los recursos finitos de CPU. La cantidad consumida depende de las tasas de bits de los flujos. Las pruebas son la única forma de determinar si un conjunto determinado de archivos de audio puede reproducirse al mismo tiempo que un video. El uso máximo recomendado es un archivo de video de 16Mbps con tres flujos MP3 de 160kbps simultáneos.

Este script reproduce un video con audio a través de HDMI y un archivo MP3 en el puerto analógico integrado:

```text
hdmiOut = CreateObject("roAudioOutput", "hdmi")
analogOut = CreateObject("roAudioOutput", "analog")

video = CreateObject("roVideoPlayer")
video.SetPcmAudioOutputs(hdmiOut)

audio = CreateObject("roAudioPlayer")
audio.SetPcmAudioOutputs(analogOut)

video.PlayFile("video.mpg")
audio.PlayFile("audio.mp3")
```

