roVideoPlayer
Este objeto se utiliza para reproducir archivos de video (mediante la interfaz genérica ifMediaTransport ). Si el puerto de mensajes está configurado, el objeto enviará eventos del tipo roVideoEvent. Todas las llamadas de objeto son asíncronas. Es decir, la reproducción de video se maneja en un hilo diferente del script, y el script continuará ejecutándose mientras se reproduce el video. El video decodificado se escalará a la resolución de salida especificada por roVideoMode. El equivalente en JavaScript es usar elementos <video> con propiedades de BrightSign.
Para mostrar video en una zona/ventana, debe llamar a SetRectangle(). En las versiones de firmware 6.0.x y posteriores, la compatibilidad con zonas está habilitada de forma predeterminada.
ifVideoControl
PlayStaticImage(filename As String) As Boolean
Usa el decodificador de video para mostrar una imagen. En los modelos 4Kx42, XT3, XD3, HD4, XD4, XT4, XC5, XT5, XD5, HD5 y LS445, puede usar el decodificador de video para mostrar imágenes 4K.
PlayStaticImage(parameters As roAssociativeArray) As Boolean
Usa el decodificador de video para mostrar una imagen. La matriz asociativa pasada puede contener los siguientes parámetros:
- Nombre de archivo: El nombre del archivo de imagen
- EncryptionAlgorithm: El algoritmo de cifrado de archivos. Actualmente las opciones son "AesCtr" y "AesCtrHmac".
- Clave de cifrado: La clave para descifrar el archivo de imagen. Esta es una matriz de bytes compuesta por 128 bits de clave, seguidos por 128 bits de IV.
Consulte esta página para obtener detalles sobre cómo mostrar imágenes cifradas.
El reproductor de video ya no acepta claves de cifrado AES "{A|A}" (es decir, donde los 64 bits superiores e inferiores de la clave son idénticos).
SetViewMode(mode As String) As Boolean
Configura la escala del video en relación con la ventana de video. La cadena pasada puede ser uno de los siguientes valores:
- "Ajustar a escala": Escala el video para llenar la ventana. La relación de aspecto del video de origen se ignora, por lo que el video puede aparecer estirado/comprimido.
- "LetterboxedAndCentered": Aplica bandas negras y centra la ventana. Se mantiene la relación de aspecto de la ventana de origen.
- "FillScreenAndCentered": Escala el video para llenar la ventana. Se mantiene la relación de aspecto, por lo que el video puede aparecer recortado. Este es el comportamiento predeterminado.
- "Centrado": Centra la ventana.
Los modos de visualización dependen de que los archivos de video tengan marcas correctas de relación de aspecto, y algunos archivos pueden estar marcados incorrectamente.
SetRectangle(r As roRectangle) As Void
Especifica la ubicación y las dimensiones de la ventana de video usando una instancia roRectangle pasada.
Ocultar() como booleano
Oculta la ventana de video.
Show() como Boolean
Muestra la ventana de video.
EnableSafeRegionTrimming(enable As Boolean) As Boolean
AdjustVideoColor(parameters As roAssociativeArray) As Boolean
Ajusta la salida de video y gráficos del reproductor usando los siguientes parámetros, que pueden pasarse al método como una matriz asociativa: "brightness", "hue", "contrast", "saturation". Cada parámetro tiene un valor predeterminado de 0 y puede aceptar un rango de valores entre -1000 y 1000.
EstablecerValorDeClave(keying_settings As roAssociativeArray) As booleano
Aplica una máscara a cada píxel en la ventana de video. Si el valor del píxel cae dentro del rango especificado de valores clave de crominancia y luminancia, el píxel aparecerá transparente, permitiendo que el video y los gráficos detrás de él se vean a través. Si el valor del píxel no cae dentro del rango especificado, el píxel no se modifica. Los valores clave de crominancia y luminancia se configuran usando enteros contenidos en la matriz asociativa pasada:
- luma
- cr
- cb
Cada valor entero se organiza de la siguiente manera: [8 bits de máscara][8 bits de rango superior][8 bits de rango inferior]. Por ejemplo, un valor 0xff8040 para luma enmascararía luma en 0xff (sin cambios) y luego aplicaría un rango de 0x40 a 0x80 para cambiar a alfa transparente. Tenga en cuenta que la incrustación por crominancia y luminancia funciona bien con formas y patrones simples, mientras que patrones complejos como cabello o césped no se enmascararán de manera efectiva.
SetTransform(transform As String) As Boolean
Aplica una de ocho transformaciones al plano de video. Este método funciona igual de bien con todas las fuentes de video (archivos, streams, entrada HDMI®) y se puede llamar por separado en múltiples instancias de roVideoPlayer . Las llamadas a este método solo surten efecto cuando se reproduce el siguiente archivo/fuente, y las transiciones a un video transformado no ocurren de forma fluida.
- "identidad": Sin transformación (comportamiento predeterminado)
- "rot90": Rotación de 90 grados en sentido antihorario
- "rot180": Rotación de 180 grados en sentido antihorario
- "rot270": Rotación de 270 grados en sentido antihorario
- "espejo": Transformación de espejo horizontal
- "mirror_rot90": Rotación reflejada de 90 grados en sentido horario
- "mirror_rot180": Rotación reflejada de 180 grados en sentido horario
- "mirror_rot270": Rotación reflejada de 270 grados en sentido horario
Las coordenadas y dimensiones de la instancia de roRectangle que contiene el video no se ven afectadas por la rotación.
GetFilePlayability(filename As String) As roAssociativeArray
Devuelve un associative array que indica la capacidad de reproducción del archivo de video. Para las siguientes claves, un valor "jugable" indica que el componente es reproducible, mientras que un valor "sin medios" indica que no hay contenido multimedia; cualquier otro valor indica que el contenido multimedia no es reproducible.
- audio: El archivo de audio asociado con el video
- video: El archivo de video asociado con el video
- archivo: El archivo contenedor de video
GetProbePlayability(probe_string As String) As roAssociativeArray
Devuelve un associative array que indica la capacidad de reproducción de la cadena probe. Para las siguientes claves, un valor "jugable" indica que el componente es reproducible, mientras que un valor "sin medios" indica que no hay contenido multimedia; cualquier otro valor indica que el contenido multimedia no es reproducible.
- audio: El archivo de audio asociado con el video
- video: El archivo de video asociado con el video
- archivo: El archivo contenedor de video
GetStreamInfo() As roAssociativeArray
Devuelve un associative array que contiene información sobre el video actual. Para recuperar metadatos sobre un archivo de video que no se está reproduciendo actualmente, utilice el método ProbeFile() en su lugar. El associative array puede contener los siguientes parámetros:
- Fuente string: El URI del archivo de video
- SrcAddress string: La dirección IP de origen del stream de video
- Dirección de destino string: La dirección multicast en la que se transmite el stream IP. Este valor puede estar ausente si el servicio RTSP no ha redirigido el stream (en este caso, puede mostrarse la dirección IP del reproductor en su lugar).
- Encapsulación string: La encapsulación del video. Este valor puede ser "ES" (elementary stream), "TS" (transport stream) o "UNKNOWN" para video en streaming.
- Formato de audio string: El formato del archivo de audio
- AudioSampleRate int: La frecuencia de muestreo de audio (en hercios)
- Cantidad de canales de audio int: El número de canales de audio
- Duración del audio int: La duración de la pista de audio (en milisegundos)
- Formato de video string: El formato del archivo de video
- VideoFramerate int: La velocidad de fotogramas del video (en fotogramas por segundo)
- Profundidad de color de video int: La profundidad de color del video (en bits)
- Ancho del video int: El ancho del video (en píxeles)
- Altura del video int: La altura del video (en píxeles)
- Relación de aspecto del video float: La relación de aspecto del video
- Duración del video int: La duración del video (en milisegundos)
- VídeoPreferido int: La pista de video preferida actual, según lo determinado por el método SetPreferredVideo()
- Audio preferido int: La pista de audio preferida actual, según lo determinado por el método SetPreferredAudio()
- Subtítulo preferido int: La pista de subtítulos preferida actual, según lo determinado por el método SetPreferredCaptions()
- Programas roArray: Una lista de programas que forman parte del video. Cada entrada contiene el ID del programa, junto con índices de pistas de video, audio y subtítulos que forman parte del programa. Estas listas de pistas pueden utilizarse, junto con los parámetros Vídeo, Audio, y Subtítulo y los métodos SetPreferred<>() para escanear y seleccionar pistas. Cada entrada puede contener los siguientes parámetros:
- ProgramId int: El ID del programa
- Vídeo roArray: Un índice de enteros correspondiente a las pistas de video que forman parte del programa
- Audio roArray: Un índice de enteros correspondiente a las pistas de audio que forman parte del programa
- Subtítulo roArray: Un índice de enteros correspondiente a las pistas de subtítulos que forman parte del programa. Para recuperar más información sobre una pista individual de video/audio/subtítulos, utilice el valor entero para buscar el índice asociado de Vídeo/Audio/Subtítulo (por ejemplo, print streaminfo.subtitle[streaminfo.programs[0].subtitle[1]])
- Vídeo roArray: Una lista de pistas de video que forman parte del video. Cada entrada de la lista es un arreglo asociativo con los siguientes parámetros:
- Relación de aspecto float: La relación de aspecto de la pista de video
- Nombre string: El nombre de la pista de video
- Ancho int: El ancho del video (en píxeles)
- Altura int: La altura del video (en píxeles)
- Profundidad de color int: La relación de aspecto de la pista de video
- Duración int: La duración de la pista de video (en milisegundos)
- Programa int: El ID del programa al que pertenece la pista de video
- FrameRate float: La velocidad de fotogramas de la pista de video
- Pid int: El identificador de paquete (PID) de la pista de video
- Formato string: El formato de la pista de video
- Audio roArray: Una lista de pistas de audio que forman parte del video. Cada entrada de la lista es un arreglo asociativo con los siguientes parámetros:
- Nombre string: El nombre de la pista de audio
- Cantidad de canales int: El número de canales de audio
- Formato string: El formato de la pista de audio
- Pid int: El identificador de paquete (PID) de la pista de audio
- Programa int: El ID del programa al que pertenece la pista de audio
- Duración int: La duración de la pista de audio (en milisegundos)
- Frecuencia de muestreo int: La frecuencia de muestreo de audio (en hercios)
- Idioma string: Un código que especifica el idioma de la pista de audio (p. ej., "eng", "spa"). Los códigos de idioma se especifican en el estándar ISO 639-2.
- Subtítulo roArray: Una lista de pistas de subtítulos que forman parte del video. Cada entrada de la lista es un arreglo asociativo con los siguientes parámetros:
- Idioma string: Un código que especifica el idioma de la pista de subtítulos (p. ej., "eng", "spa"). Los códigos de idioma se especifican en el estándar ISO 639-2.
- Programa int: El ID del programa al que pertenece la pista de subtítulos
- Pid int: El identificador de paquete (PID) de la pista de subtítulos
- Tipo string: El estándar de codificación de los subtítulos (p. ej., "CEA708", "DVB")
GetStreamStatistics() As roAssociativeArray
Devuelve un array asociativo que contiene estadísticas asociadas con el flujo IP. El array asociativo contiene los siguientes parámetros:
Todos los contadores se restablecen cada vez que se llama a PlayFile(). Las claves de audio no se incluirán en el array asociativo si no hay audio en el flujo.
- Tasa de bits int: La tasa de bits del video
- NumDisplayed int: El número de fotogramas de video mostrados. Esto se basa en la frecuencia de actualización del monitor.
- NumUnderflowed int: El número de veces que el FIFO de video tuvo un subdesbordamiento. Esto normalmente indica que el tamaño del búfer debe aumentarse.
- NumDecodeErrors int: El número de fotogramas de video con errores de decodificación
- NumDecoded int: El número total de fotogramas de video decodificados
- NumAudioDecoded int: El número total de fotogramas de audio decodificados
- NumAudioDecodeErrors int: El número de fotogramas de audio con errores de decodificación
- NumAudioDummy int: El número total de fotogramas de audio faltantes. Este valor se incrementará cuando falte un fotograma de audio o una marca de tiempo sea incorrecta. A menudo se registrarán un par de fotogramas cuando comience la transmisión.
- NumAudioUnderflows int: El número de veces que el FIFO de audio tuvo un subdesbordamiento. Esto normalmente indica que el tamaño del búfer debe aumentarse.
- FotogramasPorSegundo int: La velocidad de fotogramas del video (en fotogramas por segundo)
- Vídeo entrelazado int: Indica si los fotogramas de video son entrelazados o progresivos
- HardwareDecode bool: Indica si el reproductor está utilizando aceleración por hardware o no. Esto siempre es verdadero para los reproductores Series 4, pero los reproductores Series 5 pueden informar falso si el reproductor no puede usar aceleración por hardware para el medio. La decodificación por software no se recomienda y solo se utiliza cuando el reproductor no puede usar aceleración por hardware para un archivo multimedia.
Tenga en cuenta que GetStreamStatistics() solo devuelve datos válidos después de que el evento PLAYING se haya enviado a un script.
GetCrc() como entero
Devuelve el CRC de las señales Y y Cb como un único entero. Este método permite al script comparar dos momentos en la salida de la ventana de video: si los valores devueltos difieren, entonces la salida no es idéntica.
SetPreferredVideo(description As String) As Boolean
Selecciona un flujo de video de la entrada de video según los parámetros de la cadena pasada.
SetPreferredAudio(descripción As String) As Boolean
Selecciona un flujo de audio de la entrada de video según los parámetros de la cadena pasada.
SetPreferredCaptions(description As String) As Boolean
Selecciona un flujo de datos de la entrada de video según los parámetros de la cadena pasada.
SetOpacity(opacity As Integer) As Boolean
El rango de opacidades va de 0 a 255 (totalmente transparente a totalmente opaco).
ifMediaTransport
PlayFile(source As Object) As Boolean
Reproduce un archivo de video o una entrada HDMI. Para reproducir un archivo, pase una cadena que especifique el nombre y la ruta del archivo. Para reproducir una entrada HDMI, pase una instancia de roVideoInput .
PlayFile(parameters As roAssociativeArray) As Boolean
Reproduce video utilizando los parámetros pasados como una matriz asociativa. Todas las configuraciones especificadas con este método son transitorias: solo durarán durante la reproducción del archivo/stream. Para especificar configuraciones persistentes, utilice el método SetProperties() o los métodos "Set" equivalentes (SetTransform(), SetViewMode(), etc.).
- Retardo de audio: Un retraso controlable por el usuario para el audio en milisegundos.
- Decodificador: El decoder_hint utilizado por el modo mosaico para sugerir qué decodificador utilizar.
- EncryptionAlgorithm: El algoritmo de cifrado que se utilizará para la reproducción cifrada
- Clave de cifrado: La clave de cifrado que se utilizará para la reproducción cifrada
- FadeInLength: La duración (en milisegundos) del fundido de entrada al comienzo del medio
- FadeOutLength: La duración (en milisegundos) del fundido de salida al final del medio
- Nombre de archivo: El nombre/ruta de un archivo que se utilizará para la reproducción
- LoopMode: El modo de bucle para la reproducción multimedia. Consulte la entrada de SetLoopMode() para obtener una lista de valores aplicables.
- NoForceCapture: Un valor booleano. Si es true, la captura de video a DRAM se omite cuando no se requiere conversión de frecuencia de cuadros. Esto reduce la latencia de decodificación a visualización, pero introduce las siguientes limitaciones:
- Los valores de Transform distintos de "identity" no funcionarán.
- Es posible que las capturas de pantalla no sean correctas.
- NoReordering: Mejora la latencia, pero deshabilita la reproducción de B-slices
- Precargar: Inicia la reproducción pausada al comienzo.
- ProbeString: Utilizado por BrightSign Author para proporcionar una sugerencia de sondeo que puede acelerar el inicio del stream en algunos casos.
- StreamFadeIn: La duración (en milisegundos) del fundido de entrada de audio/video para streams. Esto funciona independientemente de HWZ "fade".
- Transformar: La rotación del video. Consulte la entrada de SetTransform() para obtener una lista de valores aplicables.
- Retraso de video: Un retraso controlable por el usuario para el video en milisegundos.
- Modo de vista: El modo de visualización de la ventana de video. Consulte la entrada de SetViewMode() para obtener una lista de valores aplicables.
- ZIndex: Controla el z-index de las capas de video.
Estos parámetros se utilizan específicamente para streaming:
- AudioFifoSize: Establece el tamaño de FIFO de audio (ACDB).
- StreamBufferSize: Tamaño del búfer de entrada de demux (en bytes).
- StreamJitter: El umbral de jitter para el stream en milisegundos. Si la temporización de los paquetes entrantes supera este valor, entonces el STC del stream se volverá a centrar para mantenerse sincronizado.
- LatenciaDeTransmisión: La cantidad de desviación (en milisegundos) respecto al valor de latencia predeterminado: por ejemplo, un valor de -500 reducirá la latencia en medio segundo; un valor de 500 aumentará la latencia en medio segundo; y un valor de 0 especificará la latencia predeterminada. Especificar un valor negativo no cambiará el tamaño del búfer; en su lugar, dará al búfer menos tiempo para llenarse antes de que comience la reproducción. Los valores utilizables se extienden aproximadamente hasta -750, aunque este valor puede diferir según el entorno de red. Reducir demasiado la latencia provocará interrupciones evidentes en la reproducción.
- StreamLowLatency: Modo de baja latencia para streams RTSP. Establecer este parámetro en True logrará la menor latencia posible para un stream, pero con una tasa de bits máxima reducida.
- StreamMaxBitrate: Establece la tasa de bits máxima permitida (en bytes) para la reproducción adaptativa (HLS).
- Intervalo de sondeo de transmisión: Proporciona un control preciso de la frecuencia con la que se sondean los streams (se verifica si se congelan)
- StreamProbe: El tipo de sondeo del stream. Este parámetro puede establecerse en "deep" (para incluir dimensiones de video, frecuencia de muestreo de audio, etc.) o "shallow".
- StreamTimeout: Detiene la búsqueda del stream después de este período de tiempo (en milisegundos).
- StreamTrace: Activa la depuración del stream
- StreamUsePcrClock: Utiliza el PCR recuperado como base de tiempo para protocolos de stream no reconocidos. Esto debe seleccionarse cuando se utiliza un componente externo de GStreamer donde los PCR llegan en el momento correcto de manera similar a RTP o UDP.
- URL: La URL del stream de video que se utilizará para la reproducción
- VideoFifoSize: Establece el tamaño FIFO del video (VCDB).
Estos parámetros son solo para MJPEG:
- Escala de grises: Booleano. Establece el stream MJPEG en escala de grises.
- Rotar: 0, 90, 180 o 270 grados. Si es posible, utilice Transformar en su lugar.
Estos parámetros se utilizan para establecer el valor de keying del video (consulte la entrada EstablecerValorDeKeying() para obtener más detalles)
- CbKey
- CrKey
- LumaKey
Estos parámetros se utilizan para reproducir video cifrado:
- EncryptionAlgorithm
- Clave de cifrado
Estos parámetros se utilizan para analizar streams preferidos:
- Audio preferido
- Subtítulos preferidos
- VídeoPreferido
Estos parámetros se utilizan junto con el objeto roSyncManager para sincronizar la reproducción:
- SyncDomain
- SyncId
- SyncIsoTimestamp
Estos parámetros se utilizan para la reproducción multipantalla :
- Altura de múltiples pantallas
- AnchoMultiventana
- MultiscreenX
- MultiscreenY
- Altura de origen
- Ancho de origen
- SourceX
- SourceY
DropErrorFrames() As Boolean
Configura si se deben mostrar los frames con errores o descartarlos (lo que puede provocar pausas). De forma predeterminada, estos errores se muestran en reproductores Series 4 y anteriores. En reproductores Series 5 y posteriores, los errores están ocultos de forma predeterminada. El rendimiento de la ocultación de errores (extrapolación entre frames correctos) varía entre plataformas. Este método está disponible a partir de BOS 9.1.137.
SetProperties(parameters As roAssociativeArray) As Boolean
Establece propiedades persistentes para la reproducción de video. Estas propiedades pueden reemplazarse temporalmente mediante los parámetros en una llamada a PlayFile() . Consulte la entrada de PlayFile() para obtener una lista de los parámetros disponibles.
GetProperties() As roAssociativeArray
Devuelve las propiedades actuales de reproducción de video como un arreglo asociativo. Consulte la entrada de PlayFile() para obtener una descripción de los parámetros.
SetPropertiesString(parameters As String) As Boolean
Establece propiedades persistentes para la reproducción de video mediante una lista separada por comas. Estas propiedades pueden reemplazarse temporalmente mediante los parámetros en una llamada a PlayFile() . Consulte la entrada de PlayFile() para obtener una lista de los parámetros disponibles.
Ejemplo
GetPropertiesString() As String
Devuelve las propiedades actuales de reproducción de video como una cadena (p. ej., "<clave>=<valor>, <clave>=<valor>"). Consulte la entrada de PlayFile() para obtener una descripción de los parámetros.
SetPlaybackSpeed(speed como Float) como Boolean
Modula la velocidad de reproducción del video, utilizando el valor float 1.0 como velocidad de reproducción estándar. Para avanzar rápidamente el video, pase un valor mayor que 1.0; para rebobinar el video, pase un valor negativo. Un valor entre 0 y 1.0 reproducirá el video en cámara lenta.
PreloadFile(parameters As roAssociativeArray) As Boolean
Consulte la entrada de PlayFile() para obtener una descripción de los parámetros.
Play() como booleano
Reproduce el archivo o flujo actualmente cargado.
Stop() como booleano
Detiene la reproducción del archivo o flujo actualmente cargado.
StopClear() As Boolean
Detiene la reproducción de video y borra el archivo o flujo actualmente cargado.
Pausa(parameters As roAssociativeArray) As Boolean
Pausa el archivo de video o flujo. Este método acepta un arreglo asociativo opcional que contiene el siguiente parámetro:
- SyncIsoTimeStamp: La marca de tiempo para pausar video sincronizado. Este valor es proporcionado por el método roSyncManager.Synchronize() en la unidad líder y el método roSyncManagerEvent.GetIsoTimeStamp() en la(s) unidad(es) seguidora(s).
Resume(parameters As roAssociativeArray) As Boolean
Reanuda un archivo de video o flujo pausado. Este método acepta un arreglo asociativo opcional que contiene el siguiente parámetro:
- SyncIsoTimeStamp: La marca de tiempo para reanudar video sincronizado. Este valor es proporcionado por el método roSyncManager.Synchronize() en la unidad líder y el método roSyncManagerEvent.GetIsoTimeStamp() en la(s) unidad(es) seguidora(s).
SetLoopMode(mode As Dynamic) As Boolean
Especifica el modo de bucle para la reproducción multimedia. Este método también puede aceptar una de las siguientes cadenas:
- "NoLoop": El bucle está deshabilitado en todos los casos. Este es el comportamiento predeterminado, que permite la reproducción de múltiples archivos en una lista de reproducción, con interrupciones perceptibles entre el final y el inicio del archivo.
- "AlwaysLoop": El video se reproduce en bucle sin interrupciones si es posible; de lo contrario, se reproduce en bucle con interrupciones.
- "SeamlessLoopOrNotAtAll": El video se reproduce en bucle sin interrupciones si es posible; de lo contrario, no se reproduce en bucle en absoluto.
- "LoopButNotSeamless": El video se reproduce en bucle con interrupciones.
Como alternativa, este método puede aceptar un argumento Boolean:
- verdadero: Un único archivo multimedia se reproducirá en bucle sin interrupciones si es posible. Si el archivo de video no puede reproducirse en bucle sin interrupciones, entonces el video se reproducirá en bucle con interrupciones.
- falso: El bucle está deshabilitado en todos los casos. Este es el comportamiento predeterminado, que permite la reproducción de múltiples archivos en una lista de reproducción, con pausas perceptibles entre el final y el inicio del archivo.
Los eventos Media End solo se envían si el bucle continuo está deshabilitado, o si el modo está configurado en "SeamlessLoopOrNotAtAll" y el archivo no puede reproducirse en bucle continuo.
AddEvent(user_data As Integer, time_in_ms As Integer) As Boolean
Agrega un desencadenador que generará un roVideoEvent cuando alcance el tiempo especificado. Los datos del usuario se pasarán con el evento y se pueden recuperar usando el método roVideoEvent.GetData() Consulte la sección Eventos de código de tiempo de video a continuación para obtener más detalles.
ClearEvents() As Boolean
Elimina todos los eventos de código de tiempo que se hayan agregado mediante el método AddEvent() .
GetEvents() As roArray
Devuelve un arreglo de eventos de código de tiempo agregados a la instancia de roVideoPlayer mediante el método AddEvent() . Cada entrada del arreglo consiste en un arreglo asociativo con los siguientes valores:
- id: El user_data del evento (como un Integer)
- marca de tiempo: La marca de tiempo (en milisegundos)
PlayEx(a As Object) As Boolean
Este objeto ha quedado obsoleto. Sugerimos usar el método PlayFile() para la reproducción de video.
GetPlaybackPosition() como entero
Devuelve la cantidad de tiempo que el archivo actual o flujo IP ha estado reproduciéndose (en milisegundos). Si SetLoopMode() está configurado como true, el valor no se restablecerá cuando la reproducción vuelva al inicio. Si la reproducción en bucle o el flujo IP continúan sin interrupción durante aproximadamente 25 días, el valor se desbordará y se volverá negativo.
GetDuration() como entero
Devuelve la duración total de reproducción (en milisegundos) del archivo actual.
Seek(position As Integer) As Boolean
Busca la posición especificada en el archivo de audio/video (medida en milisegundos). Si el archivo se está reproduciendo actualmente, continuará reproduciéndose; de lo contrario, permanecerá en pausa después de la búsqueda. Este método solo admite el contenedor de video MP4/MOV; todos los formatos de audio estándar son compatibles.
SetFade(parameters As roAssociativeArray) As Boolean
Atenúa tanto el video como el audio cuando se llama al método. Cuando se completa la atenuación, un objeto roVideoEvent con el valor 18 – Desvanecimiento se publicará en el puerto de mensajes. Este método acepta un arreglo asociativo, que actualmente solo puede contener un parámetro:
- FadeOutLength: La duración de tiempo (en milisegundos) durante la cual el audio/video se atenúa.
ProbeFile(filename As String) As roAssociativeArray
Devuelve un arreglo asociativo que contiene metadatos sobre el archivo de video especificado. Para recuperar metadatos sobre un archivo que se está reproduciendo actualmente, use el método GetStreamInfo() en su lugar. El arreglo asociativo devuelto puede contener los siguientes parámetros:
- Fuente: El URI del archivo
- Encapsulación: La encapsulación del video
- Formato de audio: El formato del archivo de audio
- AudioSampleRate: La frecuencia de muestreo de audio (en hercios)
- Cantidad de canales de audio: El número de canales de audio
- Duración del audio: La duración de la pista de audio (en milisegundos)
- Formato de video: El formato del archivo de video
- Profundidad de color de video: La profundidad de color del video (en bits)
- Ancho del video: El ancho del video (en píxeles)
- Altura del video: La altura del video (en píxeles)
- Relación de aspecto del video: La relación de aspecto del video
- Duración del video: La duración del video (en milisegundos)
ifZorderControl
ToFront() como booleano
Coloca la capa de video de la instancia roVideoPlayer delante del otro reproductor de video.
ToBack() As Boolean
Coloca la capa de video de la instancia roVideoPlayer detrás del otro reproductor de video.
Esta función no está disponible en los reproductores HD/LS, que solo admiten un único reproductor de video. Para obtener más información sobre el orden de las capas de video en relación con la capa gráfica, consulte la entrada roVideoMode.SetGraphicsZOrder() .
ifAudioControl
Consulte roAudioPlayer para obtener documentación sobre ifAudioControl.
ifAudioAuxControl
MapStereoOutputAux(mapping As Integer) As Boolean
SetVolumeAux(a As Integer) As Boolean
SetChannelVolumesAux(channel_mask As Integer, b As Integer) As Boolean
SetAudioOutputAux(audio_output As Integer) As Boolean
SetAudioModeAux(audio_mode As Integer) As Boolean
SetAudioStreamAux(stream_index As Integer) As Boolean
SetUsbAudioPortAux(a As Integer) As Boolean
ifUserData
EstablecerDatosUsuario(user_data como objeto)
Establece los datos de usuario que se devolverán cuando se generen eventos.
GetUserData() como objeto
Devuelve los datos de usuario que se establecieron previamente mediante SetUserData(). Devolverá Invalid si no se han establecido datos.
ifIdentity
GetIdentity() As Integer
La interfaz siIdentidad ha quedado obsoleta. Recomendamos utilizar la interfaz ifUserData en su lugar.
ifMessagePort
SetPort(port As roMessagePort)
Publica mensajes de tipo roVideoEvent en el puerto de mensajes adjunto.
Eventos de Timecode
Puede utilizar el método AddEvent() para agregar activadores para eventos roVideoEvent , que generarán el valor 12 – Golpe de código de tiempo en los tiempos de milisegundos especificados en un archivo de video. Utilice el método roVideoEvent.GetData() para recuperar los datos de usuario pasados con AddEvent().
El siguiente script de ejemplo utiliza eventos de timecode. El script imprime 2, 5 y 10 a los 2 segundos, 5 segundos y 10 segundos del video, respectivamente. El "msg" se aproxima a una precisión de fotograma.
v = CreateObject("roVideoPlayer")
p = CreateObject("roMessagePort")
v.SetPort(p)
ok = v.AddEvent(2, 2000) ' Add timed events to video
ok = v.AddEvent(5, 5000)
ok = v.AddEvent(10, 10000)
ok = v.AddEvent(100, 100000)
ok = v.PlayFile("SD:/C5_d5_phil.vob")
waitloop:
msg = Wait(0,p) ' Wait for all events
if msg.GetInt() = 8 then stop ' End of file
if msg.GetInt() <> 12 goto waitloop ' I only care about time events
print msg.GetData() ' Print out index when the time event happens
goto waitloopReproducción de video en múltiples pantallas
Los métodos PreloadFile() y PlayFile() pueden utilizarse junto con roSyncManager para extender una imagen a través de múltiples pantallas en una matriz o mostrar partes de un video en ventanas.
El siguiente script de ejemplo utiliza el método PreloadFile() para la visualización en múltiples pantallas:
v=CreateObject("roVideoPlayer")
a=CreateObject("roAssociativeArray")
a["Filename"] = "test.ts"
a["MultiscreenWidth"] = 3
a["MultiscreenHeight"] = 2
a["MultiscreenX"] = 0
a["MultiscreenY"] = 0
v.PreloadFile(a)
...
...
v.Play()Los valores de AnchoMultiventana y Altura de múltiples pantallas especifican el ancho y la altura de la matriz de múltiples pantallas. Por ejemplo, 3x2 sería 3 pantallas de ancho y 2 de alto. MultiscreenX y MultiscreenY especifican la posición de la pantalla actual dentro de esa matriz. En el caso anterior, en promedio solo se dibuja 1/6 del video en cada pantalla (aunque el modo de vista sigue aplicándose), por lo que, dependiendo de la forma del video, puede tener barras negras en las pantallas laterales. De esta manera, es relativamente sencillo para un reproductor de video mostrar parte de una imagen según su posición en la matriz multipantalla.
PreloadFile() realiza todo el trabajo preliminar para prepararse para reproducir el clip de video especificado, incluida la detención de la reproducción del archivo de video anterior. La llamada a "Play" inicia la reproducción. Esto es útil para sincronizar video entre múltiples reproductores, ya que todos pueden prepararse para reproducirse y luego comenzarán a reproducirse inmediatamente cuando se emita el comando "Play". Esto reduce las latencias de sincronización.
Los siguientes son los valores predeterminados de los parámetros:
- AnchoMultiventana= 1
- Altura de múltiples pantallas= 1
- MultiscreenX= 0
- MultiscreenY= 0
Este script usa PlayFile() para mostrar una parte de un video. Esto muestra una porción en ventana del archivo de video test.ts comenzando en las coordenadas SourceX, SourceY, y con un tamaño de SourceWidth por SourceHeight. La configuración de SetViewMode() sigue respetándose como si se estuviera mostrando el archivo completo.
v=CreateObject("roVideoPlayer")
a=CreateObject("roAssociativeArray")
a["Filename"] = "test.ts"
a["SourceX"] = 100
a["SourceY"] = 100
a["SourceWidth"] = 1000
a["SourceHeight"] = 500
v.PlayFile(a)Multipantalla con modo vertical
Para crear una matriz multipantalla en modo vertical, llame a SetTransform("rot90") o SetTransform("rot270") antes de llamar a PlayFile().
Este script crea una pantalla multipantalla en modo vertical de 2x1:
v1=CreateObject("roVideoPlayer")
v1.SetViewMode("LetterboxedAndCentered")
r=CreateObject("roRectangle", 0, 0, 1920, 1080)
v1.SetRectangle(r)
v1.SetTransform("rot90")
aa1=CreateObject("roAssociativeArray")
aa1.MultiscreenWidth = 2
aa1.MultiscreenHeight = 1
aa1.MultiscreenX = 1
aa1.MultiscreenY = 0
aa1.Filename = "example.mp4"
v1.PlayFile(aa1)Escaneo de canales RF
El método PlayFile() puede utilizarse para funcionalidades de escaneo y manejo de canales similares a roChannelManager. Para usar PlayFile() para el escaneo de canales, pase un roAssociativeArray con los siguientes parámetros posibles:
- VirtualChannel
- RfChannel
- SpectralInversion
- INVERSION_ON
- INVERSION_OFF
- INVERSION_AUTO
- ModulationType
- QAM_64
- QAM_256
- QAM_AUTO
- 8VSB
- VideoCodec
- MPEG1-Video
- MPEG2-Video
- MPEG4Part2-Video
- H264
- H264-SVC
- H264-MVCAVSC
- AudioCodec
- MPEG-Audio
- AAC
- AAC+
- AC3AC3+DTS
- VideoPid
- AudioPid
- PcrPid
Los parámetros Canal virtual y RfChannel deben estar presentes para que PlayFile() explore correctamente. Si especifica solo estos parámetros, el reproductor explorará el canal RF para detectar una señal QAM/ATSC e intentará recuperar el canal virtual especificado de los resultados. Los resultados de esta acción se almacenan en caché para que las llamadas posteriores a PlayFile() requieran mucho menos tiempo. Proporcionar los parámetros SpectralInversion y/o ModulationType acelerará aún más el proceso de exploración.
Si se proporcionan todos los parámetros, no se requiere exploración y el reproductor puede sintonizar el canal inmediatamente. Si falta uno o más de los parámetros opcionales, el reproductor debe analizar los metadatos del flujo de transporte para encontrar los valores apropiados para los parámetros Canal virtual y RfChannel proporcionados.
Descifrado de video
El objeto roVideoPlayer puede utilizarse para reproducir archivos o flujos de audio/video que hayan sido cifrados usando AES.
El descifrado de streaming requiere la versión de firmware 6.2.x y actualmente solo es compatible con el protocolo UDP y el protocolo HTTP (cuando HTTP se combina con un flujo de transporte MPEG2). Si utiliza un flujo de transporte MPEG2 multicast UDP, uno de los flujos elementales debe proporcionar el PCR al reproductor.
La matriz asociativa pasada al método PlayFile() puede aceptar dos parámetros para el descifrado de archivos:
- EncryptionAlgorithm: El algoritmo de cifrado del archivo. Las siguientes son las opciones actuales:
- "AesCtr": El algoritmo AES en modo CTR
- "AesCtrHmac": El algoritmo AES en modo CTR con HMAC
- "TsAesEcb": El algoritmo AES en modo ECB (por ejemplo, con un Harmonic Prostream). Este algoritmo se utiliza para cifrado/descifrado de streaming.
- "TsAesEcbRrt": El algoritmo AES en modo ECB (por ejemplo, con un Harmonic Prostream) con terminación residual trasera. Este algoritmo se utiliza para cifrado/descifrado de streaming. Disponible desde la versión 9.1.164 en todos los reproductores excepto LS3, HD3, HS3, HO3, XD3, XT3, LS4, HS4 y HD4.
- "TsAesCbcRbt": El algoritmo AES en modo CBC con terminación de bloque residual. Este algoritmo se utiliza para cifrado/descifrado de streaming.
- "TsAesCbcCbt": El algoritmo AES en modo CBC con terminación de bloque claro. Este algoritmo se utiliza para cifrado/descifrado de streaming.
- Clave de cifrado: Una matriz de bytes compuesta por 128 bits de clave. Si el algoritmo de cifrado es AES-CTR o AES-CTR-HMAC, a esto le siguen 128 bits de IV.
Póngase en contacto con [email protected] para obtener más información sobre cómo generar una clave para ofuscación y almacenarla en el reproductor.
El reproductor de video ya no acepta claves de cifrado AES "{A|A}" (es decir, donde los 64 bits superiores e inferiores de la clave son idénticos).
v = CreateObject("roVideoPlayer")
aa=CreateObject("roAssociativeArray")
aa.filename = "wall-sync2.mp4"
aa.encryptionalgorithm = "AesCtr"
aa.encryptionkey = CreateObject("roByteArray")
aa.encryptionkey.fromhexstring("01030507090b0d0f00020406080a0c0e00000000000000000000000000000000")
v.PlayFile(aa)Flujos preferidos
Si varios flujos de video, audio o datos están encapsulados en la entrada de video, puede utilizar los métodos SetPreferredVideo(), SetPreferredAudio() y SetPreferredCaptions() para determinar qué flujo usar. Por ejemplo, si un video puede contener pistas de audio en inglés y español, puede llamar a SetPreferredAudio() para especificar que se debe reproducir la pista en español si existe, y que el video use inglés de forma predeterminada en caso contrario.
Los flujos preferidos se eligen haciendo coincidir los patrones de las cadenas pasadas con la descripción textual del flujo:
- La cadena pasada es una lista de plantillas separadas por punto y coma.
- Cada plantilla es una lista de patrones separados por comas.
- Cada patrón es un par [field_name]=[field_value] que se compara directamente con la descripción del flujo.
SetPreferredVideo(description As String) As Boolean
Cada plantilla en la cadena de descripción de video pasada puede contener los siguientes patrones:
- pid=[integer]: El identificador de paquete (PID) del flujo de video que desea mostrar
- program=[entero]: El número de programa del flujo de video
- codec=[video_codec]: El códec de video preferido, que puede ser cualquiera de los siguientes:
- MPEG1
- MPEG2
- MPEG4Part2
- H263
- H264
- VC1
- H265
- width=[integer]: El ancho de video preferido
- altura=[entero]: La altura de video preferida
- aspect=[float(x.yy)]: La relación de aspecto preferida del flujo de video como un número de punto flotante con dos dígitos fraccionarios.
- profundidaddecolor=[entero]: La profundidad de color preferida del video.
Ejemplo:
SetPreferredAudio(descripción As String) As Boolean
Cada plantilla en la cadena de descripción pasada puede contener los siguientes patrones:
- pid=[integer]: El identificador de paquete (PID) del flujo de audio que desea reproducir
- program=[entero]: El número de programa del flujo de audio
- codec=[audio_codec]: El códec de audio preferido, que puede ser cualquiera de los siguientes:
- MPEG
- MP3
- AAC
- AAC-PLUS
- AC3
- AC3-PLUS
- DTS
- PCM
- FLAC
- Vorbis
- channels=[entero]: El número preferido de canales de audio (de 1 a 8)
- freq=[frecuencia]: La frecuencia de muestreo preferida de la pista de audio, que puede ser cualquiera de las siguientes:
- 32000
- 44100
- 48000
- idioma=[language]: Un código que determina el idioma preferido de la pista de audio (p. ej. eng, spa). Los códigos de idioma están especificados en el estándar ISO 639-2.
- type=[audio_type]: El tipo de audio preferido, que puede ser uno de los siguientes:
- Audio principal
- Efectos limpios
- Personas con discapacidad auditiva
- Comentarios para personas con discapacidad visual
Ejemplo:
SetPreferredCaptions(description As String) As Boolean
Cada plantilla en la cadena de descripción pasada puede contener los siguientes patrones:
- pid=[integer]: El identificador de paquete (PID) del flujo de subtítulos que desea reproducir
- type=[subtitle_type]: El estándar de codificación de los subtítulos. Este valor puede ser uno de los siguientes:
- CEA708: Si el estándar CEA-708 no está presente, subtitle_type usará por defecto CEA-608 (si está presente).
- CEA608
- DVB
- idioma=[language]: Un código que determina el idioma preferido de los subtítulos (p. ej. eng, spa). Los códigos de idioma están especificados en el estándar ISO 639-2.
- service=[integer]: El número de servicio preferido del flujo de subtítulos
Ejemplo:
Reglas de coincidencia de patrones
Tenga en cuenta las siguientes reglas al hacer coincidir plantillas con descripciones de flujos de video, audio o subtítulos:
- Para que una plantilla coincida con una descripción de flujo, cada patrón dentro de la plantilla debe coincidir.
- Se utilizará la primera plantilla listada que coincida con la descripción del flujo (si existe alguna).
- Una cadena de plantilla vacía coincidirá con cualquier descripción de flujo.
- Todas las comparaciones de valores no distinguen entre mayúsculas y minúsculas.
- Los valores numéricos deben coincidir exactamente con la descripción del flujo (sin ceros a la izquierda). Por ejemplo, el patrón pid=016 nunca coincidirá con el valor PID del flujo de 16.
- Para indicar negación lógica, aplique el signo de exclamación "!" al inicio de un patrón. Por ejemplo, especificar SetPreferredVideo("!codec=H265") coincidirá solo con flujos que no estén codificados usando H.265.
- Aplique el símbolo de mayor que ">" antes de un entero para indicar que, para una coincidencia exitosa, el valor en la descripción del flujo debe ser mayor que el valor que sigue al símbolo. Por ejemplo, especificar SetPreferredVideo("width=<1921,height=<1081") coincidirá solo con videos que no sean mayores que full-HD.
- Aplique el símbolo de menor que "<" antes de un entero para indicar que, para una coincidencia exitosa, el valor en la descripción del flujo debe ser menor que el valor que sigue al símbolo.
Ejemplos de coincidencia de patrones
Los siguientes ejemplos ilustran algunos de los comportamientos de coincidencia de patrones descritos anteriormente:
- La siguiente lista de plantillas contiene tres patrones: lang=eng, lang=spa, y una plantilla vacía. El primer patrón especifica un canal en inglés; si el canal en inglés no existe, el segundo patrón especifica un canal en español. El tercer patrón especifica cualquier otro canal si los dos primeros no existen (la plantilla vacía coincide con cualquier cosa).
- Dado que la siguiente lista de plantillas está vacía, no se especifican subtítulos. Esto puede usarse para deshabilitar completamente los subtítulos.
- La siguiente lista de plantillas contiene una plantilla vacía. Dado que una plantilla vacía coincide con cualquier cosa, se reproducirá el primer flujo de video encontrado. Este es el comportamiento predeterminado de todos los atributos.
- La siguiente lista de plantillas especifica un flujo de audio de 48KHz si existe uno; de lo contrario, no se reproducirá ningún flujo de audio. Observe que la lista no termina correctamente con un punto y coma; en este caso, el punto y coma se agrega implícitamente.
- La siguiente lista de plantillas contiene dos plantillas. Tenga en cuenta que todos los patrones dentro de una plantilla deben coincidir con la descripción del flujo para que toda la plantilla coincida. En este ejemplo, se prefiere una pista en inglés codificada con AAC; una pista en inglés codificada con MP3 se designa como la segunda opción; y se elegirá cualquier pista si ninguna de las plantillas coincide.
Ejemplos
El siguiente script selecciona un programa de un video y establece pistas de video y audio preferidas para la reproducción:
v1 = CreateObject("roVideoPlayer")
v1.PlayFile("example.ts")
si = v1.GetStreamInfo()
' Pick the program
prog = si.Programs[2].ProgramId
v1 = CreateObject("roVideoPlayer")
' Select the program
v1.SetPreferredVideo("prog=" + prog.ToStr() + ";")
v1.SetPreferredAudio("prog=" + prog.ToStr() + ";")
' Play the stream/file
v1.PlayFile("example.ts")Este script habilita solo HDMI-4 a 3840x2160x60p:
mode=CreateObject("roVideoMode")
sm = CreateObject("roArray", 1, 1)
sm[0] = CreateObject("roAssociativeArray")
sm[0].name = "HDMI-4"
sm[0].video_mode="3840x2160x60p"
sm[0].transform="normal"
sm[0].display_x=0
sm[0].display_y=0
sm[0].enabled=true
mode.SetScreenModes(sm)
' Play full screen video with audio going to HDMI-4
rect = createobject("roRectangle",0,0,3840,2160)
output = createObject("roAudioOutput", "hdmi:4")
vplayer = createobject("roVideoPlayer")
vplayer.setrectangle(rect)
vplayer.setcompressedaudiooutputs(output)
vplayer.playfile("Example.mp4")