roVideoPlayer
34 min
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 al objeto son asíncronas es decir, la reproducción de video se maneja en un hilo diferente al del script, y el script continuará ejecutándose mientras el video se reproduce el video decodificado se escalará a la resolución de salida especificada por rovideomode el equivalente en javascript es utilizar elementos \<video> con propiedades de brightsign docid\ pdytb1wooqwkyvcd5fjms 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 utiliza el decodificador de video para mostrar una imagen en los modelos 4kx42, xt3, xd3, hd4, xd4, xt4, xc5, xt5, xd5, hd5 y ls445, puede utilizar el decodificador de video para mostrar imágenes 4k playstaticimage(parameters as roassociativearray) as boolean utiliza el decodificador de video para mostrar una imagen el arreglo asociativo pasado puede contener los siguientes parámetros nombre de archivo el nombre del archivo de imagen encryptionalgorithm el algoritmo de cifrado del archivo actualmente las opciones son "aesctr" y "aesctrhmac" encryptionkey la clave para descifrar el archivo de imagen este es un arreglo de bytes que consta de 128 bits de clave, seguidos de 128 bits de iv consulte esta página docid\ z65qez0xwq9c70obegcyi 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 el escalado del video en relación con la ventana de video la cadena pasada puede ser uno de los siguientes valores "scaletofit" 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 barras negras y centra la ventana la relación de aspecto de la ventana de origen se mantiene "fillscreenandcentered" escala el video para llenar la ventana la relación de aspecto se mantiene, por lo que el video puede aparecer recortado este es el comportamiento predeterminado "centrado" centra la ventana los modos de visualización dependen de una marcación correcta de la relación de aspecto en los archivos de video, 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 utilizando una instancia rorectangle pasada hide() as boolean oculta la ventana de video show() as boolean muestra la ventana de video enablesaferegiontrimming(enable as boolean) as boolean ajustarcolordevideo(parameters as roassociativearray) as boolean ajusta la salida de video y gráficos del reproductor utilizando los siguientes parámetros, que pueden pasarse al método como un arreglo asociativo "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) como boolean aplica una máscara a cada píxel en la ventana de video si el valor del píxel se encuentra 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 muestren a través del mismo si el valor del píxel no se encuentra dentro del rango especificado, el píxel no se altera los valores clave de crominancia y luminancia se configuran utilizando enteros contenidos en el arreglo asociativo pasado 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 aplicaría una máscara 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 el keying de crominancia y luminancia funciona bien con formas y patrones simples, mientras que patrones complejos como cabello o césped no se enmascararán eficazmente settransform(transform as string) as boolean aplica una de ocho transformaciones al plano de video este método funciona igualmente bien con todas las fuentes de video (archivos, streams, entrada hdmi®) y puede llamarse por separado en múltiples instancias de rovideoplayer las llamadas a este método solo tienen efecto cuando se reproduce el siguiente archivo/fuente, y las transiciones a un video transformado no se realizan 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 reproducibilidad 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 reproducibilidad de la cadena de sondeo 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, use el método probefile() en su lugar el associative array puede contener los siguientes parámetros fuente \<font color="#704ae0">string\</font> el uri del archivo de video srcaddress \<font color="#704ae0">string\</font> la dirección ip de origen del stream de video dirección de destino \<font color="#704ae0">string\</font> la dirección multicast en la que se está transmitiendo 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 \<font color="#704ae0">string\</font> la encapsulación del video este valor puede ser "es" (elementary stream), "ts" (transport stream) o "unknown" para video en streaming formato de audio \<font color="#704ae0">string\</font> el formato del archivo de audio audiosamplerate \<font color="#704ae0">int\</font> la frecuencia de muestreo de audio (en hercios) número de canales de audio \<font color="#704ae0">int\</font> el número de canales de audio duración del audio \<font color="#704ae0">int\</font> la duración de la pista de audio (en milisegundos) formato de video \<font color="#704ae0">string\</font> el formato del archivo de video velocidad de fotogramas del video \<font color="#704ae0">int\</font> la velocidad de fotogramas del video (en fotogramas por segundo) videocolordepth \<font color="#704ae0">int\</font> la profundidad de color del video (en bits) ancho del video \<font color="#704ae0">int\</font> el ancho del video (en píxeles) altura del video \<font color="#704ae0">int\</font> la altura del video (en píxeles) relacióndeaspectodevídeo \<font color="#704ae0">float\</font> la relación de aspecto del video duración del video \<font color="#704ae0">int\</font> la duración del video (en milisegundos) videopreferido \<font color="#704ae0">int\</font> la pista de video preferida actual, según lo determinado por el método setpreferredvideo() audio preferido \<font color="#704ae0">int\</font> la pista de audio preferida actual, según lo determinado por el método setpreferredaudio() subtítulo preferido \<font color="#704ae0">int\</font> la pista de subtítulos preferida actual, según lo determinado por el método setpreferredcaptions() programas \<font color="#704ae0">roarray\</font> 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 se pueden usar, junto con los parámetros vídeo , audio , y subtítulo y los métodos setpreferred<>() para examinar y seleccionar pistas cada entrada puede contener los siguientes parámetros programid \<font color="#704ae0">int\</font> el id del programa vídeo \<font color="#704ae0">roarray\</font> un índice de enteros correspondiente a pistas de video que forman parte del programa audio \<font color="#704ae0">roarray\</font> un índice de enteros correspondiente a pistas de audio que forman parte del programa subtítulo \<font color="#704ae0">roarray\</font> un índice de enteros correspondiente a pistas de subtítulos que forman parte del programa para recuperar más información sobre una pista individual de video/audio/subtítulos, use el valor entero para buscar el índice asociado de vídeo / audio / subtítulo (p ej print streaminfo subtitle\[streaminfo programs\[0] subtitle\[1]] ) vídeo \<font color="#704ae0">roarray\</font> 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 \<font color="#704ae0">float\</font> la relación de aspecto de la pista de video nombre \<font color="#704ae0">string\</font> el nombre de la pista de video ancho \<font color="#704ae0">int\</font> el ancho del video (en píxeles) altura \<font color="#704ae0">int\</font> la altura del video (en píxeles) profundidaddecolor \<font color="#704ae0">int\</font> la relación de aspecto de la pista de video duración \<font color="#704ae0">int\</font> la duración de la pista de video (en milisegundos) programa \<font color="#704ae0">int\</font> el id del programa al que pertenece la pista de video velocidaddefotogramas \<font color="#704ae0">float\</font> la velocidad de fotogramas de la pista de video pid \<font color="#704ae0">int\</font> el identificador de paquete (pid) de la pista de video formato \<font color="#704ae0">string\</font> el formato de la pista de video audio \<font color="#704ae0">roarray\</font> 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 \<font color="#704ae0">string\</font> el nombre de la pista de audio cantidaddecanales \<font color="#704ae0">int\</font> la cantidad de canales de audio formato \<font color="#704ae0">string\</font> el formato de la pista de audio pid \<font color="#704ae0">int\</font> el identificador de paquete (pid) de la pista de audio programa \<font color="#704ae0">int\</font> el id del programa al que pertenece la pista de audio duración \<font color="#704ae0">int\</font> la duración de la pista de audio (en milisegundos) frecuenciademuestreo \<font color="#704ae0">int\</font> la frecuencia de muestreo del audio (en hercios) idioma \<font color="#704ae0">string\</font> 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 \<font color="#704ae0">roarray\</font> 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 \<font color="#704ae0">string\</font> 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 \<font color="#704ae0">int\</font> el id del programa al que pertenece la pista de subtítulos pid \<font color="#704ae0">int\</font> el identificador de paquete (pid) de la pista de subtítulos tipo \<font color="#704ae0">string\</font> el estándar de codificación de los subtítulos (p ej , "cea708", "dvb") getstreamstatistics() as roassociativearray devuelve un arreglo asociativo que contiene estadísticas asociadas con el flujo ip el arreglo 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 arreglo asociativo si no hay audio en el flujo tasa de bits \<font color="#704ae0">int\</font> la tasa de bits del video numdisplayed \<font color="#704ae0">int\</font> la cantidad de fotogramas de video mostrados esto se basa en la frecuencia de actualización del monitor numunderflowed \<font color="#704ae0">int\</font> la cantidad de veces que el fifo de video tuvo un desbordamiento por debajo del mínimo esto normalmente indica que el tamaño del búfer docid 0tioy9pjdgg4g25ygbnib debe incrementarse numdecodeerrors \<font color="#704ae0">int\</font> la cantidad de fotogramas de video con errores de decodificación numdecoded \<font color="#704ae0">int\</font> la cantidad total de fotogramas de video decodificados numaudiodecoded \<font color="#704ae0">int\</font> la cantidad total de fotogramas de audio decodificados numaudiodecodeerrors \<font color="#704ae0">int\</font> la cantidad de fotogramas de audio con errores de decodificación numaudiodummy \<font color="#704ae0">int\</font> la cantidad total de fotogramas de audio faltantes este valor aumentará 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 \<font color="#704ae0">int\</font> la cantidad de veces que el fifo de audio tuvo un desbordamiento por debajo del mínimo esto normalmente indica que el tamaño del búfer docid 0tioy9pjdgg4g25ygbnib debe incrementarse videoframespersecond \<font color="#704ae0">int\</font> la velocidad de fotogramas de video (en fotogramas por segundo) videointerlaced \<font color="#704ae0">int\</font> indica si los fotogramas de video son entrelazados o progresivos hardwaredecode \<font color="#704ae0">bool\</font> indica si el reproductor está usando aceleración de hardware o no esto siempre es verdadero para los reproductores series 4, pero los reproductores series 5 pueden informar false si el reproductor no puede usar aceleración de hardware para el medio la decodificación por software no se recomienda y solo se utiliza cuando el reproductor no puede usar aceleración de 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() as integer devuelve el crc de las señales y y cb como un único entero este método permite que el script compare 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 elige un flujo de video de la entrada de video según los parámetros de la cadena pasada setpreferredaudio(description as string) as boolean elige un flujo de audio de la entrada de video según los parámetros de la cadena pasada setpreferredcaptions(descripción as string) as boolean elige 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 (completamente transparente a completamente 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 usando los parámetros pasados como un arreglo asociativo todas las configuraciones especificadas con este método son transitorias solo durarán durante la reproducción del archivo/stream para especificar configuraciones persistentes, use 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 usado por el modo mosaico para sugerir qué decodificador docid\ f0dvnrbdpvgozlrvb29gd usar encryptionalgorithm el algoritmo de cifrado que se usará para reproducción cifrada docid\ oszbyfpamasbwnd6w7jsh encryptionkey la clave de cifrado que se usará para reproducción cifrada docid\ oszbyfpamasbwnd6w7jsh fadeinlength la duración (en milisegundos) del fundido de entrada al inicio del contenido multimedia duración del desvanecimiento la duración (en milisegundos) del fundido de salida al final del contenido multimedia 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 en dram se omite cuando no se requiere conversión de frecuencia de cuadros esto reduce la latencia entre decodificación y 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 usado 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" docid\ pdytb1wooqwkyvcd5fjms transformar la rotación del video consulte la entrada de settransform() para obtener una lista de valores aplicables retardo 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 índice z de las capas de video estos parámetros se usan específicamente para streaming audiofifosize establece el tamaño del fifo de audio (acdb) streambuffersize tamaño del búfer de entrada demux (en bytes) streamjitter el umbral de jitter para el stream en milisegundos si el tiempo de los paquetes entrantes excede este valor, entonces el stc del stream se volverá a centrar para permanecer sincronizado latencia de transmisió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 cambio, le 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 producirá una reproducción entrecortada evidente 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) streampollinterval proporciona un control preciso sobre la frecuencia con la que se sondean los streams (se verifica si están congelados) streamprobe el tipo de sonda del stream este parámetro puede establecerse en "deep" (para incluir dimensiones de video, frecuencia de muestreo de audio, etc ) o "shallow" tiempo de espera de transmisión deje de buscar el stream después de este período de tiempo (en milisegundos) streamtrace activa la depuración del stream streamusepcrclock utilice el pcr recuperado como base de tiempo para protocolos de stream no reconocidos esto debe seleccionarse al utilizar un componente gstreamer externo donde los pcr lleguen 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 del fifo de 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 de setkeyingvalue() docid\ oszbyfpamasbwnd6w7jsh para obtener más detalles) cbkey crkey lumakey estos parámetros se utilizan para reproducir video cifrado docid\ oszbyfpamasbwnd6w7jsh encryptionalgorithm encryptionkey estos parámetros se utilizan para analizar streams preferidos docid\ oszbyfpamasbwnd6w7jsh audio preferido subtítulos preferidos videopreferido estos parámetros se utilizan junto con el objeto rosyncmanager docid\ ytmejva nfntuflxdtnew para sincronizar la reproducción syncdomain syncid syncisotimestamp estos parámetros se utilizan para la reproducción multipantalla docid\ oszbyfpamasbwnd6w7jsh multiscreenheight anchomultiventana multiscreenx multiscreeny alturadeorigen ancho de origen sourcex sourcey droperrorframes() as boolean configure si desea mostrar cuadros con errores o descartarlos (lo que puede provocar pausas) de forma predeterminada, estos errores se muestran en los reproductores series 4 y anteriores en los reproductores series 5 y posteriores, los errores están ocultos de forma predeterminada el rendimiento de la ocultación de errores (extrapolación entre cuadros correctos) varía según la plataforma 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 de una llamada a playfile() consulte la entrada de playfile() docid\ oszbyfpamasbwnd6w7jsh para obtener una lista de los parámetros disponibles getproperties() como roassociativearray devuelve las propiedades actuales de reproducción de video como un arreglo asociativo consulte la entrada de playfile() docid\ oszbyfpamasbwnd6w7jsh para obtener una descripción de los parámetros setpropertiesstring(parámetros 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 de una llamada a playfile() consulte la entrada de playfile() docid\ oszbyfpamasbwnd6w7jsh para obtener una lista de los parámetros disponibles ejemplo vp = createobject("rovideoplayer") vp setpropertiesstring("transform=rot90,streamlowlatency=true") getpropertiesstring() as string devuelve las propiedades actuales de reproducción de video como una cadena (por ejemplo, "\<key>=\<value>, \<key>=\<value>" ) consulte la entrada de playfile() docid\ oszbyfpamasbwnd6w7jsh 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 adelantar 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() docid\ oszbyfpamasbwnd6w7jsh para obtener una descripción de los parámetros play() as boolean reproduce el archivo o flujo actualmente cargado stop() as boolean 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 pause(parameters as roassociativearray) as boolean pausa el archivo o flujo de video 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 lo proporciona 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 o flujo de video 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 lo proporciona 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 de medios 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 separaciones 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 espacios perceptibles entre el final y el comienzo 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 de manera continua addevent(user data as integer, time in ms as integer) as boolean agrega un disparador 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 docid\ oszbyfpamasbwnd6w7jsh a continuación para obtener más detalles clearevents() as boolean elimina todos los eventos de código de tiempo que se hayan agregado usando el método addevent() getevents() as roarray devuelve un array de eventos de código de tiempo agregados a la instancia rovideoplayer usando el método addevent() cada entrada en el array consiste en un array asociativo con los siguientes valores identificación el datos del usuario del evento (como 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 durante la cual el archivo actual o la transmisión ip ha estado reproduciéndose (en milisegundos) si setloopmode() está configurado en true, el valor no se restablecerá cuando la reproducción se repita si la reproducción en bucle o la transmisión ip continúa sin interrupciones durante aproximadamente 25 días, el valor volverá al inicio y se volverá negativo getduration() as integer 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; se admiten todos los formatos de audio estándar setfade(parameters as roassociativearray) as boolean atenúa tanto el video como el audio cuando se llama al método cuando el desvanecimiento se completa, un objeto rovideoevent con el valor 18 – desvanecimiento se publicará en el puerto de mensajes este método acepta un array asociativo, que actualmente solo puede contener un parámetro duración del desvanecimiento el tiempo de duración (en milisegundos) durante el cual el audio/video se desvanece probefile(filename as string) as roassociativearray devuelve un array 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 array 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) número 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 videocolordepth 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óndeaspectodevídeo la relación de aspecto del video duración del video la duración del video (en milisegundos) ifzordercontrol tofront() como boolean coloca la capa de video de la instancia de rovideoplayer delante del otro reproductor de video toback() as boolean coloca la capa de video de la instancia de 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 cómo ordenar las capas de video en relación con la capa gráfica, consulte la entrada rovideomode setgraphicszorder() ifaudiocontrol consulte roaudioplayer docid\ uahm5f ptkhyhassdolkl 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 setuserdata(user data as object) establece los datos de usuario que se devolverán cuando se generen eventos getuserdata() as object devuelve los datos de usuario que se establecieron previamente mediante setuserdata() devolverá invalid si no se ha establecido ningún dato 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 código de tiempo puede usar el método addevent() para agregar desencadenadores para eventos rovideoevent , que generarán el valor 12 – golpe de código de tiempo en los tiempos en milisegundos especificados dentro de un archivo de video use el método rovideoevent getdata() para recuperar los datos de usuario pasados con addevent() el siguiente script de ejemplo utiliza eventos de código de tiempo 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 exacta por fotograma example 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 waitloop reproducción de video multipantalla los métodos preloadfile() y playfile() se pueden usar junto con rosyncmanager para extender una imagen a través de múltiples pantallas en una matriz o mostrar partes en ventana de un video el siguiente script de ejemplo utiliza el método preloadfile() para visualización multipantalla example 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 anchomultiventana y multiscreenheight especifican el ancho y la altura de la matriz de múltiples pantallas por ejemplo, 3x2 tendrí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 visualización 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 reproducir 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 multiscreenheight = 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 example 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 de múltiples pantallas en modo vertical, llame a settransform("rot90") o settransform("rot270") antes de llamar a playfile() este script crea una visualización multipantalla en modo vertical de 2x1 example 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 usarse para el escaneo y la gestión de canales con una funcionalidad similar 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 canalvirtual y rfchannel deben estar presentes para que playfile() escanee correctamente si especifica solo estos parámetros, el reproductor escaneará el canal rf en busca de una señal qam/atsc e intentará recuperar el canal virtual especificado a partir 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 tipo de modulación acelerará aún más el proceso de escaneo si se proporcionan todos los parámetros, no se requiere ningún escaneo 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 proporcionados canalvirtual y rfchannel descifrado de video el objeto rovideoplayer se puede utilizar para reproducir archivos o flujos de audio/video que han sido cifrados mediante 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 está emparejado 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 el arreglo asociativo pasado al método playfile() puede aceptar dos parámetros para el descifrado de archivos encryptionalgorithm el algoritmo de cifrado de archivos 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 el cifrado/descifrado de streaming "tsaescbcrbt" el algoritmo aes en modo cbc con terminación de bloque residual este algoritmo se utiliza para el cifrado/descifrado de streaming "tsaescbccbt" el algoritmo aes en modo cbc con terminación de bloque claro este algoritmo se utiliza para el cifrado/descifrado de streaming encryptionkey un arreglo de bytes que consta de 128 bits de clave si el algoritmo de cifrado es aes ctr o aes ctr hmac, esto va seguido de 128 bits de iv comuníquese con support\@brightsign biz 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, cuando los 64 bits superiores e inferiores de la clave son idénticos) example 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 múltiples 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 utilizar por ejemplo, si un video puede contener pistas de audio en inglés y español, puede llamar a setpreferredaudio() para especificar que la pista en español debe reproducirse si existe, usando inglés como valor predeterminado del video en caso contrario los flujos preferidos se eligen haciendo coincidir los patrones en 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=\[integer] 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 ancho=\[entero] 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 profundidad de color=\[entero] la profundidad de color preferida del video ejemplo "pid=7680, codec=h264, width=1280, height=720, aspect=1 78, colordepth=8;" setpreferredaudio(description as string) as boolean cada plantilla en la cadena de descripción proporcionada puede contener los siguientes patrones pid=\[integer] el identificador de paquete (pid) del flujo de audio que desea reproducir program=\[integer] 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=\[integer] 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 se especifican 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 comentario para personas con discapacidad visual ejemplo "pid=4192, codec=ac3, channels=5, freq=48000, lang=eng, type=main audio;" setpreferredcaptions(descripción as string) as boolean cada plantilla en la cadena de descripción proporcionada 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á cea 608 de forma predeterminada (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 se especifican en el estándar iso 639 2 servicio=\[integer] el número de servicio preferido del flujo de subtítulos ejemplo "pid=0, type=cea708, lang=eng service=1;" 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, todos los patrones dentro de la plantilla deben coincidir se utilizará la primera plantilla enumerada que coincida con la descripción del flujo (si existe) 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 iniciales) 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 comienzo 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 mayor que ">" antes de un entero para indicar que, para una coincidencia correcta, 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 más grandes que full hd aplique el símbolo menor que "<" antes de un entero para indicar que, para una coincidencia correcta, 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 idioma inglés; si el canal en inglés no existe, el segundo patrón especifica un canal en idioma español el tercer patrón especifica cualquier otro canal si los dos primeros no existen (la plantilla vacía coincide con cualquier cosa) setpreferredaudio("lang=eng;lang=spa;;") dado que la siguiente lista de plantillas está vacía, no se especifican subtítulos esto puede utilizarse para deshabilitar los subtítulos por completo setpreferredcaptions("") 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 setpreferredvideo(";") 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 proporciona implícitamente setpreferredaudio("freq=48000") 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 dos plantillas coincide setpreferredaudio("codec=aac,lang=eng;codec=mp3,lang=eng;;") ejemplos el siguiente script selecciona un programa de un video y establece pistas de video y audio preferidas para la reproducción example 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 example 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")