roAudioPlayer
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
La interfaz siIdentity ha quedado obsoleta. Recomendamos usar la interfaz ifUserData en su lugar.
ifMediaTransport
Consulte roVideoPlayer 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 .
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.
NOTA: también debe llamar a SetAudioMode con el parámetro establecido en 0, es decir, sonido envolvente AC3.
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.
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 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 HDMI® y SPDIF.
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)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:
analog3 = CreateObject("roAudioOutput", "analog:3")
video = CreateObject("roVideoPlayer")
video.SetPcmAudioOutputs(analog3)Este script configura múltiples salidas para un reproductor de audio:
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:
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:
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")