Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

238
Visualizações
¿Transmitir contenido de lienzo HTML5 con transparencia parcial?

Actualmente estoy enviando un flujo de lienzo a través de WebRTC, usando canvas.captureStream() . Esto funciona según lo previsto, pero mi lienzo es una superposición sobre otro video y, por lo tanto, tiene píxeles transparentes.

Soy consciente de que los formatos habituales H26x o VPx no son compatibles con la transparencia (consulte también Transmisión de video con píxeles transparentes usando webrtc ), así que decidí usar la clave de croma antigua (es decir, 100 % verde == transparente).

Para llegar allí, actualmente estoy llenando el lienzo con verde transparente al inicio:

 // already tried various composite ops here, none seem to work // context.globalCompositeOperation = "destination-out"; context.fillStyle = "rgba(0,255,0,0)"; context.fillRect(0, 0, canvas.width, canvas.height);

Esto parece correcto en el lado del cliente (el lienzo es transparente, lo que sea que dibuje en la parte superior no lo es), pero en el flujo resultante que sale a través de WebRTC, el fondo que es transparente en el navegador aparentemente es solo negro, en lugar de verde. ¿Esperaría que el valor alfa simplemente se elimine?

Cuando cambio el valor alfa a cualquier otro que no sea 0 (por ejemplo, 1 o 128), el resultado ya no es transparente, sino completamente opaco de color verde brillante, tanto en la transmisión saliente (bien) como en el navegador (no bueno).

Preferiría evitar tener que hacer manualmente la conversión RGBA -> RGB en Javascript para cada cuadro en un lienzo oculto, que es la única alternativa que se me ocurre en este momento. Otras ideas muy bienvenidas :-)

EDITAR: probado con Chrome 96 y Firefox 94, en Ubuntu 20.04. Como referencia, aquí está la descripción de las operaciones de composición: https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Compositing/Example

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Según los comentarios de Kaiido (¡gracias!), descubrí una solución relativamente (?) eficiente: ahora tengo dos lienzos, uno visible y otro oculto, y todos los comandos de dibujo se replican en ambos. El visible usa un fondo negro transparente y se superpone al video, el oculto tiene un fondo verde brillante y se usa como fuente de transmisión.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda