roSyncManager
9 min
este objeto proporciona capacidades de sincronización para videowalls y otras implementaciones que requieren una interacción estrechamente calibrada entre reproductores rosyncmanager maneja el tráfico de red para la sincronización líder/seguidor al usar sync manager en múltiples reproductores brightsign, ptp debe habilitarse en los reproductores mediante sus registros, lo cual es una operación independiente (consulte el ejemplo y el texto correspondiente a continuación) ptp comparte efectivamente un reloj común entre todos los reproductores si solo se sincroniza en un único reproductor brightsign, entonces ptp no es necesario, ya que el reloj local del reproductor brightsign es común para los objetos que participan en la sincronización se permiten múltiples grupos de sincronización en la misma red local e incluso dentro del mismo videowall el objeto rosyncmanager actualmente admite sincronización de video, imagen y ticker de desplazamiento los objetos rovideoplayer y roimageplayer dependen de los valores generados por los métodos ifsyncmanager y rosyncmanagerevent para sincronizar la reproducción, mientras que el objeto rotextwidget simplemente requiere el nombre de dominio de la instancia de rosyncmanager a partir de la versión de firmware 7 0, rosyncmanager también admite sincronización genlock (vsync con precisión de fotograma) a través de ethernet para habilitar genlock en un dominio de rosyncmanager, pase el nombre de dominio al método rovideomode setsyncdomain() de lo contrario, el proceso para sincronizar la reproducción de video, imagen y ticker es el mismo el objeto rosyncmanager admite sincronización únicamente a través de redes ethernet antes de usar rosyncmanager en múltiples reproductores brightsign, deberá establecer todos los reproductores brightsign dentro del grupo en el mismo valor de dominio ptp para hacer esto, use el método roregistrysection write() para establecer la clave ptp domain de la sección “networking” en un valor entre 0 y 127 en general, los cambios en el registro solo surten efecto después de un reinicio, por lo que el servicio de sincronización ptp se iniciará en cada reproductor después de reiniciarse cualquier reproductor con el mismo valor de ptp domain terminará teniendo el mismo reloj maestro ptp ejemplo regsec = createobject("roregistrysection", "networking") regsec write("ptp domain", "0") regsec flush() rebootsystem() el equivalente en javascript es bssyncmanager docid\ tqfzr6uwowknztqk9bvq2 creación de objetos el objeto rosyncmanager se crea con un arreglo asociativo que representa un conjunto de parámetros createobject("rosyncmanager", parameters as roassociativearray) el arreglo asociativo puede tener los siguientes parámetros dominio \<font color="#6554c0">string\</font> un identificador que se utiliza para distinguir entre diferentes instancias de rosyncmanager dentro del mismo grupo de sincronización (es decir, dominio ptp) la cadena predeterminada es "brightsign" este parámetro permite que múltiples instancias de rosyncmanager operen al mismo tiempo multicastaddress \<font color="#6554c0">string\</font> la dirección multicast a la que se comunican los mensajes de sincronización la dirección predeterminada es "224 0 126 10" puertomulticast \<font color="#6554c0">string\</font> el puerto multicast al que se comunican los mensajes de sincronización el puerto predeterminado es "1539" ifmessageport setport(port as romessageport) publica mensajes de tipo rosyncmanagerevent en el puerto de mensajes adjunto use estos mensajes para sincronizar la reproducción de rovideoplayer y roimageplayer ifsyncmanager setasleader(leader mode as boolean) as boolean especifica si la unidad está ejecutando la instancia líder de rosyncmanager sincronizar(identifier as string, ms delay as integer) as object transmite un mensaje con marca de tiempo a otros reproductores este método se utiliza solo en la unidad líder el mensaje se retransmitirá cada segundo para permitir que las unidades seguidoras que se encienden tarde puedan ponerse al día el mensaje de red contiene el id de sincronización, así como el dominio y una marca de tiempo la marca de tiempo se crea en el momento en que se llama a este método; sin embargo, puede compensarse pasando un valor ms delay distinto de cero, lo que permite establecer puntos de sincronización ligeramente en el futuro y dar al cliente suficiente tiempo para cambiar archivos de video y realizar otras acciones el parámetro identifier permite que el script de la unidad líder pase un nombre de archivo u otro marcador útil a las unidades seguidoras como parte del mensaje de sincronización este método devuelve el mensaje que se envía para que el líder pueda acceder a la marca de tiempo el mensaje de sincronización se envía a través de todas las redes disponibles (incluyendo wifi), pero las unidades seguidoras utilizarán solo el primer mensaje recibido los mensajes ptp, que son utilizados por el firmware durante la sincronización, se envían únicamente a través de ethernet debido a que la sincronización puede implicar que las unidades seguidoras busquen ponerse al día con la reproducción de una unidad líder, recomendamos usar el formato de contenedor mov/mp4 más eficiente al sincronizar archivos de video los archivos transport stream (mpeg ts) también son compatibles, pero deben comenzar con una marca de tiempo de presentación (pts) de 0 los archivos program stream (mpeg ps) no son compatibles actualmente, hay dos objetos que pueden aceptar parámetros de sincronización la llamada rovideoplayer playfile() acepta los parámetros proporcionados por los mensajes syncmanagerevent, mientras que las llamadas roimageplayer displayfile() y roimageplayer preloadfile() aceptan syncisotimestamp en un array asociativo para sincronizar la reproducción de imágenes, un objeto roimageplayer simplemente retrasará el hilo de transición antes de ejecutar la transición si hay una llamada separada para displayfile() , entonces la transición se cancelará y la imagen se mostrará inmediatamente (como con llamadas no sincronizadas de displayfile() ) setencryptionenable(enable as boolean, key as dynamic) as boolean habilita o deshabilita el cifrado de los mensajes de rosyncmanager a través de la red este método devuelve verdadero si se realiza correctamente y falso si falla la clave puede especificarse como una cadena o un objeto robytearray alternativamente, puede no suministrarse un valor de clave , en cuyo caso se utiliza una clave generada pseudoaleatoriamente establecer habilitar en falso y suministrar una clave al mismo tiempo hará que este método falle el cifrado está disponible (y habilitado de forma predeterminada) en os8 y versiones posteriores tenga en cuenta el siguiente comportamiento en entornos con versiones mixtas las unidades follower que tienen el cifrado habilitado pueden ingerir mensajes de sincronización no cifrados desde una unidad líder una vez que una unidad follower recibe paquetes cifrados, ya no aceptará paquetes no cifrados de una unidad líder, a menos que el cifrado se deshabilite explícitamente utilizando este método las unidades follower que tienen el cifrado deshabilitado (o no admiten cifrado) no pueden ingerir mensajes cifrados desde una unidad líder por lo tanto, si un grupo de sincronización incluye versiones mixtas de os, la unidad líder siempre debe tener una versión más antigua de os que las unidades follower setencryptionenablewithobfuscatedkey(obfuscated key as string) as boolean habilita el cifrado de los mensajes de rosyncmanager utilizando una clave ofuscada póngase en contacto con support\@brightsign biz mailto\ support\@brightsign biz para obtener más información sobre cómo generar una clave para la ofuscación y almacenarla en el reproductor getcurrentconfig() as roassociativearray devuelve los parámetros de configuración actuales para la instancia de rosyncmanager líder \<font color="#6b21a8">int \</font> un indicador que indica si la unidad está en modo líder (1) o no (0) ip \<font color="#6b21a8">string \</font> la dirección multicast a la que se comunican los mensajes de sincronización puerto \<font color="#6b21a8">int \</font> el puerto multicast al que se comunican los mensajes de sincronización dominio \<font color="#6b21a8">int\</font> el identificador de dominio utilizado para distinguir entre diferentes instancias de rosyncmanager ejemplo el siguiente script sincroniza la reproducción de video en las unidades líder y follower ' create a sync manager with default address and port aa1=createobject("roassociativearray") aa1 domain = "bs1" s=createobject("rosyncmanager", aa1) p=createobject("romessageport") s setport(p) ' create a video player we're going to play a seamlessly looped file v=createobject("rovideoplayer") v setloopmode(true) ' this section is only done by the leader ' we're the leader unit send out a synchronize event saying that we're starting ' playback 1000ms from now s setleadermode(true) msg = s synchronize("blah1", 1000) ' this section is only done by the follower ' we're a follower unit, and we're sitting waiting for a sync message msg=wait(4000, p) ' everyone does the rest aa=createobject("roassociativearray") aa filename = "text 1 mov" aa syncdomain = msg getdomain() aa syncid = msg getid() aa syncisotimestamp = msg getisotimestamp() v playfile(aa)