Video HTML
50 min
la documentación a continuación se aplica a las versiones de firmware 7 1 x y posteriores puede usar elementos \<video> para reproducir video en streaming (hls, udp, rtp, rtsp) y archivos de video locales también puede mostrar la entrada hdmi® en cualquier reproductor brightsign que tenga entrada hdmi (consulte esta sección docid\ uyyjyej6qojy1hksbrlpu ) video en streaming la reproducción de video en streaming se logra usando el elemento html estándar \<video> con un atributo src apropiado estos esquemas de url pueden usarse para la reproducción http/https udp rtp rtsp tenga en cuenta que los comandos de pausa/reanudación actualmente funcionan solo para streams hls control de elementos de video con javascript los eventos y controles asociados con un elemento de video html5 se describen aquí https //developer mozilla org/en us/docs/web/api/htmlvideoelement es importante tener en cuenta que el comportamiento de la api es asíncrono , por lo que los desarrolladores de aplicaciones deben configurar los controladores de eventos relevantes y crear una máquina de estados razonable para su aplicación en particular, tenga en cuenta lo siguiente llamar a load() restablece un elemento de video a su estado inicial y comienza el proceso de análisis de la fuente de video el evento loadedmetadata se activará cuando el análisis esté lo suficientemente completo para los reproductores brightsign, el comportamiento de load() es equivalente a establecer {currículum falso} , en rovideoplayer , es decir, iniciar la reproducción en un estado pausado establecer o restablecer el atributo src en un elemento de video equivale a llamar a load() sin embargo, establecer el atributo src en una etiqueta \<source> incrustada no lo es, y load() debe invocarse explícitamente el método play() inicia el proceso de reproducción, pero devuelve una promesa que se resuelve una vez que la reproducción está en curso, o se rechaza si no es posible reproducir por alguna razón los desarrolladores de aplicaciones deben crear controladores para los eventos terminado y error (al menos) no tener en cuenta la asincronía en la api puede generar resultados inesperados considere lo siguiente videoelement load() videoelement play() aquí, la intención presumiblemente es inicializar y reproducir el video sin embargo, una implementación compatible con la especificación html5 puede programar la llamada a load para que ocurra algún tiempo después de que el control se devuelva a javascript, y el orden de las llamadas podría invertirse a jugar seguido de cargar dando como resultado un video que se inicia en estado pausado en su lugar, cree un controlador loadedmetadata e invoque play() allí el siguiente es un ejemplo muy básico para transmitir un video por udp tenga en cuenta que el controlador de errores está detectando el código de error 4 esto puede ocurrir al intentar reproducir un video en streaming mientras el stream no está disponible el intento de reproducción expira después de seis segundos video test var url = "udp\ //239 127 86 1 1234"; var video = document getelementbyid('test video'); function reloadvideo() { // this causes a loadedmetadata event video setattribute('src', url); } video addeventlistener('ended', function() { reloadvideo(); }); video addeventlistener('error', function(e) { if (!video error) { return; } switch (video error code) { case 4 // media err src not supported reloadvideo(); break; default break; } }); video addeventlistener('loadedmetadata', async function() { try { await video play(); } catch (err) { 	 // play failed } }); reloadvideo(); parámetros de streaming puede configurar el video en streaming usando varios atributos únicos de brightsign estos atributos pueden anularse mediante parámetros incluidos en la url de streaming docid 0tioy9pjdgg4g25ygbnib ejemplo (html) \<video src="udp\ //239 192 1 1 5004" x bs stream timeout="0"> ejemplo (javascript) videoplayer setattribute("x bs stream low latency", "1"); se admiten los siguientes parámetros de transmisión \[int] x bs stream timeout el tiempo (en milisegundos) que se debe esperar a que un stream comience antes de abandonar la reproducción pasar cero indica que el reproductor de video debe esperar indefinidamente el valor de timeout predeterminado es de 5000 ms para streams http y de 3000 ms para todos los demás streams \[int] x bs stream latency la cantidad de desviación (en milisegundos) respecto del 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, 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á interrupciones evidentes en la reproducción \[int] x bs stream fade in la duración del fundido de entrada (en milisegundos) para streams de forma predeterminada, los streams no http tienen un valor de fundido de 1500 ms si contienen video y de 4000 ms si contienen solo audio los streams http tienen un valor de fundido predeterminado de 0 ms \[int o booleano] x bs stream low latency modo de baja latencia para streams rtsp configurar este parámetro en verdadero (1) logrará la menor latencia posible para un stream, pero con una tasa de bits máxima reducida, lo que suele ser útil para streams de cámaras ip este parámetro está configurado en falso (0) de forma predeterminada \[int] x bs intrinsic width el ancho intrínseco del video de origen \[int] x bs intrinsic height la altura intrínseca del video de origen lograr baja latencia existen tres opciones para reducir la latencia en los reproductores brightsign series 3 y 4 x bs stream latency la marca x bs stream latency (búfer) descrita anteriormente en "parámetros de transmisión" en este ejemplo, la latencia se reduce en medio segundo (500 milisegundos) \<video src="udp\ //239 192 1 1 5004" x bs stream latency=" 500"> x bs no force capture si la marca x bs no force capture está configurada en verdadero , la captura de video omitirá la conversión de frecuencia de cuadros e introducirá las siguientes limitaciones los valores de transformación distintos de "identity" no funcionarán es posible que las capturas de pantalla no sean correctas la frecuencia de cuadros del video codificado y la salida del modo de video deben coincidir por ejemplo \<video src="udp\ //239 192 1 1 5004" x bs no force capture="1"> x bs no reordering si la marca x bs no reordering está configurada, mejorará la latencia pero deshabilitará la reproducción de b slices por ejemplo \<video src="udp\ //239 192 1 1 5004" x bs no reordering="1"> consulte esta página docid 0tioy9pjdgg4g25ygbnib para obtener más información sobre cómo modificar la latencia de streams de audio o video reproductor multimedia nativo de chrome los reproductores series 5 admiten la selección de chrome nativo para la reproducción de video con aceleración de hardware o el uso del brightsign media player predeterminado para la reproducción de video puede elegir qué opción es la mejor para su caso de uso (consulte opciones de reproducción html en reproductores series 5 docid\ yrzkajymhhkrnbwshpmbg ) webrtc para webrtc, brightsign os siempre usa la reproducción de video nativa de chrome los reproductores series 5 que ejecutan os 9 0 115 y versiones posteriores usarán automáticamente decodificación acelerada por hardware en este caso los reproductores series 4 y anteriores no admiten decodificación acelerada por hardware con reproducción de video nativa de chrome como resultado, la decodificación se realizará mediante software, y solo recomendamos probar este enfoque con reproductores xt4 tamaño intrínseco del video se utiliza el siguiente orden de precedencia para determinar el tamaño intrínseco de un video los atributos x bs intrinsic width y x bs intrinsic height attributes el tamaño de la imagen especificado por el atributo póster attribute los atributos ancho y altura del elemento \<video> element el tamaño según lo informado por webmediaplayer el tamaño predeterminado de css, según lo definido por w3c https //www w3 org/tr/2011/wd html5 20110113/video html 300x150 si solo se especifican los atributos ancho y altura de un elemento \<video> , el motor de renderizado asume que el tamaño intrínseco del video de origen es el mismo que el tamaño del elemento \<video> , por lo que escalará el video para llenar el elemento de video, ignorando la relación de aspecto del video de origen si es necesario además, si los atributos ancho y altura de un \<video> no se especifican y el tamaño no está disponible desde las fuentes (por ejemplo, si la transmisión aún se está cargando), el video inicialmente tendrá por defecto una resolución de 300x150 si conoce de antemano el tamaño o la relación de aspecto de un video de origen, puede utilizar los atributos x bs intrinsic width / x bs intrinsic height para garantizar que se mantenga la relación de aspecto del video de origen cuando se escale para ajustarse a un elemento \<video> element por ejemplo, si la ventana de video está orientada como hd vertical ( width=1080, height=1920 ), especificar un ancho y una altura intrínsecos de 1920x1080 garantiza que los videos hd horizontales se escalen para ajustarse mientras mantienen su relación de aspecto y el letterboxing apropiadamente asimismo, los videos se escalarán al ancho/alto intrínseco inmediatamente si el elemento \<video> carece de parámetros ancho y altura , en lugar de posiblemente usar 300x150 temporalmente como valor predeterminado youtube los reproductores brightsign son compatibles con videos y listas de reproducción de youtube extensiones de media source a partir de os 8 3, media source extension (mse) se habilita automáticamente en los reproductores series 4 sin embargo, aún puede deshabilitarse configurando el indicador mse support en 0 en el registro la compatibilidad con mse está disponible para la serie 3, pero debe habilitarse específicamente para hacerlo, introduzca el siguiente código en el prompt de brightsign registry write html mse support 1 streaming en vivo hls los reproductores brightsign son compatibles con streaming en vivo hls, pero las listas de reproducción grandes (que generalmente son el resultado de que el servidor entregue una lista de reproducción dvr en lugar de una lista de reproducción live) causarán problemas de rendimiento entrada hdmi debe introducir la fuente de video utilizando el siguiente uri “tv\ brightsign biz/hdmi” tenga en cuenta que no puede sustituir otra url de host por “brightsign biz” ejemplo \<video width="320" height="240" autoplay> \<source src="tv\ brightsign biz/hdmi"> \</video> múltiples elementos de video de forma predeterminada, los reproductores xt, 4k y xd admiten un máximo de dos elementos \<video> activos en cualquier momento (los modelos hd/ls solo admiten uno) puede tener más de esta cantidad de elementos \<video> en una página siempre que los elementos \<video> adicionales tengan su atributo src establecido en una cadena vacía al modificar la cadena src , puede habilitar y deshabilitar elementos \<video> en la página puede habilitar mosaic mode (utilizando el método javascript bsvideomode docid\ nyiys3 oziye 5ccnht t ) para aumentar la cantidad mínima permitida de elementos \<video> videos pequeños los reproductores brightsign no admiten videos con menos de 64 píxeles de ancho o alto sin embargo, un video puede reducirse más allá de este límite haciendo que el elemento \<video> sea más pequeño que 64x64 para obtener el comportamiento de reducción deseado, asegúrese de que el elemento \<video> no tenga el atributo viewmode="scale to fill and crop" modo de visualización en las versiones de firmware 7 0 x y posteriores, el video hwz se escala para ajustarse a la relación de aspecto de un elemento \<video> (es decir, "scale to fill" ) en versiones anteriores del firmware, los elementos \<video> mantienen la relación de aspecto del video de origen (es decir, "ajustar a escala" ) este comportamiento predeterminado puede modificarse mediante el atributo viewmode ; sin embargo, ahora recomendamos usar métodos css estándar (por ejemplo, object fit ) para modificar el comportamiento del modo de visualización de un elemento \<video> viewmode="scale to fill" escala el video para llenar la ventana la relación de aspecto del video de origen se ignora, por lo que el video puede verse estirado viewmode="ajustar a pantalla" agrega bandas negras al video viewmode="scale to fill and crop" escala el video para llenar la ventana la relación de aspecto del video de origen se mantiene, por lo que el video puede recortarse video hwz los elementos html \<video> pueden tener un atributo “hwz” opcional, que está deshabilitado de forma predeterminada con hwz deshabilitado, los fotogramas de video se decodifican mediante el hardware dedicado, pero se enrutan a la gpu para su visualización con hwz habilitado, los fotogramas de video se enrutan directamente al compositor de hardware, omitiendo la gpu la decisión de habilitar hwz o no depende de la aplicación y no existe una única respuesta obviamente correcta algunas consideraciones son la gpu está limitada a una profundidad de color de 8 bits si se usa video de 10 bits, debe enrutarse al plano de video de hardware para conservar toda la profundidad de color en la mayoría de los casos, la gpu está limitada a resoluciones full hd si se usa video 4k, debe enrutarse al plano de video de hardware para evitar la pérdida de resolución (incluso en plataformas que pueden configurarse para admitir gráficos 4k, es poco probable que la gpu alcance una velocidad de cuadros lo suficientemente alta para la reproducción de video con movimiento completo) el compositor de video de hardware puede realizar escalado simple y mezcla alfa, pero no admite transformaciones css arbitrarias el video con estilos css complejos debe enrutarse a través de la gpu para mostrarse correctamente del mismo modo, cualquier video que necesite capturarse como un canvas para el procesamiento webgl debe enrutarse a la gpu si desea usar transformaciones css en video, el rendimiento del reproductor disminuirá, ya que se basa en el uso de hwz en lugar de la gpu recomendamos probar exhaustivamente un video hwz manipulado antes de usarlo en un entorno de producción si el video se enruta a la gpu, se requiere un repintado gráfico para cada fotograma esto consume una gran cantidad de ancho de banda del sistema y puede provocar una reproducción entrecortada si la gpu no puede mantenerse al día con la velocidad de cuadros requerida en todo momento en general, recomendamos enrutar el video al compositor de hardware a menos que exista una necesidad específica de procesamiento por la gpu para la mayoría de las aplicaciones, enrutar el video al compositor de hardware puede lograrse configurando hwz="z index 1" en el elemento de video correspondiente esto hace que el compositor apile las capas de video y gráficos de acuerdo con la propiedad css z index también puede habilitar hwz para todos los videos en un widget html usando uno de los siguientes métodos brightsign author seleccione la casilla habilitar la reproducción nativa de video en el estado estado html5 docid\ akrm58nds bn6ayhwzrax brightauthor classic marque la casilla habilitar la reproducción del plano de video nativo en el estado html5 docid 4tggpysgfv2i18dit81bj brightscript llame a sethwzdefault("on") en la instancia de rohtmlwidget docid\ g tjkqqhlcft4fw5 z6t0 orden z del video hwz si dos elementos de video deben enrutarse al compositor de hardware, uno de ellos debe recibir hwz="z index 2" el que tenga el z index más bajo (más negativo) se apilará detrás del otro (tenga en cuenta que en esta instancia específica el orden de apilamiento css se reemplaza) como alternativa, es posible pasar un valor z index positivo en el atributo hwz si se hace esto, los elementos de video se apilarán delante de la capa gráfica, reemplazando nuevamente el orden de apilamiento css, y el que tenga el valor z index positivo más alto quedará al frente para enrutar la reproducción de video a la gpu, pase hwz="off" o hwz="z index 0" (son equivalentes) el valor heredado hwz="on" es equivalente a hwz="z index 1" y debe evitarse puede usar la propiedad css z index para superponer los elementos sin habilitar hwz el orden de capas que se muestra a continuación es texto arriba → video en el medio → imagen al fondo \<body style="background color\ blue"> \<div style="position\ absolute;color\ red;font size 100px;z index 1" > hello brightsign \</div> \<img src="poster png" style="position\ absolute;left 0px;top 0px;width 800px;height 800px;z index 3">\</img> \<video src="coffee2 mp4" style="position\ absolute;left 0px;top 0px;width 480px;height 320px;z index 2;" autoplay loop muted>\</video> \</body> si hwz está habilitado, su propiedad css z index ( style="z index 1") será reemplazada agregue un valor z index en el atributo hwz para mantener las posiciones correctas del orden z para todos los elementos \<body style="background color\ blue"> \<div style="position\ absolute;z index 1;color red;font size 100px;" hwz="z index 1"> hello world \</div> \<img src="poster png" style="position\ absolute;left 0px;top 0px;width 800px;height 800px;z index 3" hwz="z index 3">\</img> \<video src="coffee2 mp4" style="position\ absolute;left 0px;top 0px;width 480px;height 320px;z index 2;" hwz="z index 2" autoplay loop muted>\</video> \</body> transformación de video hwz puede agregar el parámetro opcional "transform" al atributo "hwz" para rotar o reflejar el elemento \<video> el parámetro z index también debe especificarse para que la transformación funcione el parámetro "transform" puede asignarse a los siguientes valores identidad sin transformación (comportamiento predeterminado) rot90 rotación de 90 grados en sentido horario rot180 rotación de 180 grados rot270 rotación de 270 grados en sentido horario 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 múltiples extensiones de etiquetas de video hwz se separan con punto y coma también debe agregarse un punto y coma al parámetro final ejemplo // video rotated 180 degrees and behind graphics layer \<video src="example movie mp4" hwz="z index 1; transform\ rot180;"> desvanecimiento de transmisiones de video hwz el parámetro "fade" le permite controlar el comportamiento de desvanecimiento entre videos en streaming en un elemento \<video> (esta configuración no se aplica al video local) el parámetro "fade" le permite controlar el comportamiento de desvanecimiento entre videos decodificados en un elemento \<video> (esta configuración no se aplica a hdmi in) no afecta al audio y funcionará independientemente de desvanecimientodestream docid\ oszbyfpamasbwnd6w7jsh el parámetro "fade" acepta los siguientes valores auto si el reproductor de video actualmente no está mostrando nada (es decir, aún no ha reproducido nada o el video cargado previamente fue eliminado), el siguiente video aparecerá con desvanecimiento si el reproductor de video actualmente está reproduciendo video, está en pausa o está detenido sin haber sido eliminado, el siguiente video no aparecerá con desvanecimiento este es el comportamiento predeterminado siempre cuando termina un video, la ventana de video se volverá negra luego aparecerá el nuevo video con desvanecimiento nunca los videos cambian de transición sin efectos de desvanecimiento extensiones de transparencia de video hwz si hwz está habilitado para un elemento \<video>, la ventana de video también puede admitir claves luma y chroma para transparencia de video esta es la implementación alternativa de transparencia de video de brightsign al usar el mpv nativo de brightsign codificación de valores clave el parámetro z index también debe especificarse para que la transparencia funcione las claves luma y chroma se especifican de la siguiente manera luma key \[value] cr key \[value] cb key \[value] cada value es un rango empaquetado de 3 bytes después del # \#\[8 bits de máscara]\[8 bits del extremo superior del rango]\[8 bits del extremo inferior del rango] \# es obligatorio, y omitirlo invalida el atributo hwz la máscara casi siempre es ff para habilitar la clave el extremo superior/inferior del rango es el rango inclusivo de 0–255 de valores de píxeles para hacer transparentes mediante clave por ejemplo, para luma key #ff2000 la máscara es ff high 0x20 (32), low 0x00 (0) significa hacer transparente la luma 0–32 la máscara se aplica como un and bit a bit entre el componente luma/cb/cr (muestra) y el valor de la máscara en la práctica, los valores típicos utilizados serían 0x00 o 0xff una máscara de 0x00, con un valor mínimo de 0x00, deshabilita completamente la contribución de ese componente en particular a la clave por ejemplo, si tanto la máscara cb como los valores mínimos se establecen en 0x00, el componente cb no participa en la incrustación por clave una máscara de 0xff significa que el valor de muestra sin máscara debe estar dentro del rango min <= sample val <= max para ser incrustado por clave en los reproductores series 5+, el comportamiento de incrustación por clave actualmente no está definido si se utiliza una clave luma de #000000 como solución alternativa, especifique el valor máximo como 1 (es decir, use una clave luma de #000001), junto con los valores apropiados de cr key/cb key para la incrustación chroma ejemplo este es un ejemplo de un video en una capa de video, delante de una capa de gráficos, con video con clave de luminancia \<video src="example movie mp4" hwz="z index 1; luma key #ff0020;"> consulte el plugin plugin brightauthor chromaluma key editor para ver un ejemplo de plugin cómo se seleccionan los decodificadores de video para la reproducción el software del sistema selecciona qué decodificador de video usar según la resolución detectada en el archivo de video en modo estándar, intentará seleccionar el decodificador que tenga la resolución máxima compatible más cercana (es decir, 1920x1080 para el decodificador hd y 3840x2160 para el decodificador 4k), sin exceder esa resolución máxima si un decodificador ha sido configurado para el modo mosaic, comparará la resolución del video con el valor timeslice mode especificado en su lugar si ambos decodificadores admiten la misma resolución máxima, puede seleccionar un decodificador haciendo coincidir el orden z de la instancia de rovideoplayer (establecido usando los métodos tofront() y toback() ) con el orden z del decodificador (establecido usando el método rovideomode setdecodermode() ) también puede seleccionar manualmente el decodificador primero, configure el/los decodificador(es) usando el método rovideomode setdecodermode() luego, use el valor de nombre amigable especificado al llamar al método para designar un decodificador que se utilizará para la reproducción de video para seleccionar un decodificador en brightscript, pase un arreglo asociativo al método rovideoplayer playfile() que contenga el parámetro decodificador \[friendly name] playfile({filename "text 1 mov", decoder "main video"}) para seleccionar un decodificador para video html, incluya la propiedad decodificador \[friendly name] con el atributo hwz \<video hwz="decoder\ main video;"> \</video> \<video hwz="decoder\ sd video;"> \</video> el valor de max usage de un decodificador determina cuántos reproductores de video pueden asignarse al decodificador usando el algoritmo del software del sistema descrito anteriormente; los reproductores de video que excedan el límite de max usage pueden asignarse a otro decodificador o no mostrarse en absoluto por otro lado, si asigna manualmente reproductores de video usando el valor de nombre amigable del decodificador, puede asignar más reproductores de video al decodificador que el límite de max usage , pero esto puede causar un comportamiento impredecible de visualización de video descifrado de video la etiqueta html \<video> puede utilizarse para descifrar archivos de video y transmisiones ip actualmente, el descifrado de transmisiones solo es compatible con el protocolo udp y el protocolo http (cuando http se combina con una transmisión de transporte mpeg2) si utiliza una transmisión de transporte mpeg2 multicast udp, una de las transmisiones elementales debe proporcionar el pcr al reproductor la etiqueta \<video> admite los métodos algoritmodecifrado y clave de cifrado algoritmodecifrado 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 actualmente para cifrado/descifrado de transmisiones "tsaescbcrbt" el algoritmo aes en modo cbc con terminación de bloque residual este algoritmo se utiliza para cifrado/descifrado de transmisiones clave de cifrado un arreglo de bytes compuesto por 128 bits de clave si el algoritmo de cifrado es aes ctr o aes ctr hmac, esto va seguido de 128 bits de iv ejemplo (html) \<video src="udp\ //239 192 1 59 5000" encryptionalgorithm="tsaesecb" encryptionkey="01030507090b0d0f00020406080a0c0e"> 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) ejemplo (javascript) var player = document getelementbyid("my video player"); player setattribute("encryptionalgorithm", "tsaesecb"); player setattribute("encryptionkey", "01030507090b0d0f00020406080a0c0e"); análisis de transmisiones y subtítulos ocultos los siguientes atributos opcionales pueden incluirse en una etiqueta html \<video> "preferredvideo", "preferredaudio" y "preferredcaptions" si múltiples flujos de video, audio o datos están encapsulados en la entrada de video, estos atributos le permiten determinar qué flujo utilizar por ejemplo, si un video puede contener pistas de audio en inglés y español, puede usar el atributo "preferredaudio" para especificar que se reproduzca la pista en español si existe; de lo contrario, el video usará inglés de manera predeterminada los flujos preferidos se eligen haciendo coincidir los patrones de texto proporcionados con la descripción textual del flujo cada atributo ("preferredvideo", "preferredaudio" o "preferredcaptions") 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 flujos de video cada plantilla en un atributo "preferredvideo" puede contener los siguientes patrones pid=\[integer] el identificador de paquete (pid) del flujo de video que desea mostrar programa=\[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=\[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 decimales profundidaddecolor=\[entero] la profundidad de color preferida del video ejemplo preferredvideo="pid=7680, codec=h264, width=1280, height=720, aspect=1 78, colordepth=8;;" flujos de audio cada plantilla en un atributo "preferredaudio" puede contener los siguientes patrones pid=\[integer] el identificador de paquete (pid) del flujo de audio que desea reproducir programa=\[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 lang=\[idioma] un código que determina el idioma preferido de la pista de audio (por ejemplo, eng , spa ) los códigos de idioma se especifican en el estándar iso 639 2 tipo=\[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 preferredaudio="pid=4192, codec=ac3, channels=5, freq=48000, lang=eng, type=main audio;;" flujos de subtítulos y captions los términos "caption", "closed captions" y "closed captioning" se utilizan indistintamente en estos documentos cada plantilla en un atributo "preferredcaption" puede contener los siguientes patrones pid=\[integer] el identificador de paquete (pid) del flujo de captions 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 utilizará de forma predeterminada cea 608 (si está presente) cea608 dvb lang=\[idioma] un código que determina el idioma preferido de los subtítulos (por ejemplo, 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 captions ejemplo preferredcaptions="pid=0, type=cea708, lang=eng service=1;;" los subtítulos y captions se renderizan en la capa gráfica, y hwz debe establecerse en z index 1 o z index 2 para colocar el video detrás de los gráficos de lo contrario, el video cubrirá los subtítulos y/o captions comportamiento de coincidencia de patrones tenga en cuenta lo siguiente al hacer coincidir plantillas con descripciones de flujos 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) una cadena de plantilla vacía coincidirá con cualquier descripción de flujo todas las comparaciones de valores 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 preferredvideo="!codec=h265" hará coincidir únicamente 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 exitosa, el valor en la descripción del flujo debe ser mayor que el valor que sigue al símbolo por ejemplo, especificar preferredvideo="width=<1921,height=<1081" hará coincidir únicamente videos que no sean mayores que full hd aplique el símbolo 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 más ejemplos la siguiente lista de plantillas contiene tres patrones lang=eng , lang=spa , y una cadena 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 cadena vacía coincide con cualquier cosa) preferredaudio="lang=eng;lang=spa;;" dado que la siguiente lista de plantillas está vacía, no se especifican captions esto puede utilizarse para deshabilitar completamente los captions preferredcaptions="" la siguiente lista de plantillas contiene una plantilla de cadena 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 preferredvideo=";" la siguiente lista de plantillas especifica un flujo de audio de 48 khz si existe uno; de lo contrario, no se reproducirá ningún flujo de audio observe que la lista no termina con un punto y coma; en este caso, el punto y coma se proporciona implícitamente preferredaudio="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 plantilla coincide preferredaudio="codec=aac,lang=eng;codec=mp3,lang=eng;;" cambio de pista de video el framework de reproducción multimedia de brightsign no admite el cambio dinámico entre pistas mediante video/audio html5 sin embargo, sí admite la consulta de información de pistas usando la tracklist api https //www w3 org/tr/html5/embedded content 0 html#audiotracklist and videotracklist objects los siguientes pasos describen cómo seleccionar pistas usando esta api cree un elemento de video en javascript que no esté adjunto al dom (es decir, que sea invisible) configure el detector de eventos onloadedmetadata configure el src de la url multimedia llame a load() en el elemento de video html5 esto activará el evento loadedmetadata lea la información de la pista desde el evento cree un nuevo reproductor de video html5 y use la información de la pista para configurar los parámetros audiopreferido , videopreferido , y subtítulo preferido (descritos anteriormente) llame a load() / play() en el elemento de video adjunte el elemento de video al dom al cambiar de un video a otro, es importante establecer la fuente del video en blanco para liberar el elemento de video; de lo contrario, los primeros videos continuarán utilizando memoria mientras se reproducen los videos posteriores consulte la línea 12 en el siguiente ejemplo de código ejemplo \<!doctype html> \<head> \<script> var video; function playtracknext() { // switch to audio/video 1 var pid = video videotracks\[1] id; var audiopid = video audiotracks\[1] id; // release the video element video src = ""; // create a new video element video = document createelement('video'); video src = "http //brightsign biz/example ts"; video hwz = "on"; video preferredvideo = "pid=" + pid; // use the params we gathered from previous video load video preferredaudio = "pid=" + audiopid; video load(); video play(); document getelementbyid("videoarea") appendchild(video); } function runtest() { // initialize testing bs/javascript bridge bs start(); // initial load of media to gather track information video = document createelement('video'); video onloadedmetadata = playtracknext; // play track 0 video src = "http //brightsign biz/example ts"; video hwz = "on"; video load(); // will trigger loadedmetadata event once the video is loaded } \</script> \</head> \<html> \<body bgcolor="#e6e6fa" onload="runtest()"> \<h1>video audio tracks test page\</h1> \<div id="videoarea">\</div> \</html> enrutamiento de audio en elementos \<audio>/\<video> los reproductores brightsign tienen atributos de audio únicos para elementos \<audio>/\<video> estos le permiten controlar cómo se enruta el audio a través de las salidas del reproductor pcmaudio audio pcm compaudio audio comprimido multiaudio audio multicanal cada atributo puede recibir los siguientes valores, que determinan dónde se enrutará el audio “ninguno” "hdmi” o "hdmi 1" , "hdmi 2" , "hdmi 3" , o "hdmi 4 " para reproductores series 5 con múltiples salidas «usb» “spdif” "análogo" “analog\ n” (n especifica la enumeración del puerto, lo cual es útil para modelos con múltiples puertos de audio analógico; también puede usar "analog 1" para especificar la salida analógica en un modelo con un solo puerto de audio analógico) si no asigna ningún atributo de audio a un elemento \<audio>/\<video> , entonces el audio se dirigirá a todas las salidas de audio, junto con cualquier otro audio que se esté reproduciendo actualmente ejemplo 1 \<video src="example movie mp4" width="512" height="400" pcmaudio="hdmi" autoplay> your browser does not support the video tag \</video> ejemplo 2 \<video src="example movie mp4" width="512" height="400" compaudio="hdmi;usb" autoplay> your browser does not support the video tag \</video> reproducción de código de tiempo de video html la precisión de brightsign para la reproducción de código de tiempo de video html es de 200 ms chroma keying la configuración de chroma key de brightsign consiste en una máscara y un valor mínimo y máximo el mínimo y el máximo son los valores más importantes, ya que la máscara realmente solo es útil para “efectos especiales” se verifica cada píxel de cada fotograma para determinar si está entre los valores mínimo y máximo y, si lo está, el píxel se establece como completamente transparente si está fuera del rango, el píxel es completamente opaco esto significa que tendrá un borde duro, no un desvanecimiento gradual, donde el video pasa de opaco a transparente consejos para chroma key para obtener un mejor chroma keying, no aplique anti aliasing a ningún píxel que deba ser transparente entonces podrá apuntar a un solo color de transparencia en lugar de a un rango si su video está comprimido, la crominancia tiene submuestreo, por lo que habrá bordes donde la crominancia terminará como un valor intermedio entre el verde y el color del fotograma las animaciones cgi con agujeros verdes suelen tener anti aliasing, lo que producirá un desvanecimiento de verde alrededor de los bordes es posible que pueda eliminar estos bordes con chroma key usando los valores que se muestran en los siguientes ejemplos (en estos ejemplos, v es un objeto rovideoplayer docid\ pdytb1wooqwkyvcd5fjms ) el color más fácil de eliminar del contenido es el negro, que tiene un valor de luminancia de 0, porque el video tiene crominancia con submuestreo (4 2 0 en lugar de 4 4 4) el uso de keying de luminancia significa que cada píxel se puede procesar con keying con precisión el blanco tiene una luminancia de 240 (no es exactamente un valor de 8 bits de rango completo), pero la crominancia puede significar que contenga muchos otros colores brillantes, por lo que es difícil eliminar únicamente el blanco los colores arbitrarios son difíciles de manejar, ya que implican especificar un pequeño rango de valores de crominancia que deben calcularse el color que se eliminará debe calcularse en ycbcr, y los valores cb y cr se usan para el chroma keying si la fuente es cgi, entonces el rango utilizado puede ser muy ajustado, ya que un solo color se vuelve transparente si la fuente de video era metraje en vivo grabado contra una pantalla verde, entonces el rango debe ser mucho más amplio para acomodar la gama de colores verdes del video ejemplos valores inferiores de chroma key aquí el rango cr es 0 32 y el rango cb es 0 48 esto puede dejar un halo verde alrededor de las áreas que se mezclaron para dar una apariencia más suave, ya que el chroma keying no puede realizar transiciones suaves v setkeyingvalue({cr \&hff2000, cb \&hff3000}) valores superiores de chroma key este ejemplo cubre un rango mucho mayor de colores v setkeyingvalue({cr \&hff7000, cb \&hff7000}) otras configuraciones mostrar/omitir fotogramas esta configuración le permite configurar si se muestran los fotogramas con errores o si se omiten (lo que puede causar pausas) está disponible a partir de bos 9 1 137 \<video id="myvideo" src="stream ts" x bs drop error frames="false" autoplay>\</video>