O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Captura de mídia e restrições

A parte de mídia do WebRTC cobre como acessar hardware capaz de capturar vídeo e áudio, como câmeras e microfones, e também como funcionam os fluxos de mídia. Ele também cobre a mídia de exibição, que é como um aplicativo pode fazer a captura de tela.

Dispositivos de mídia

Todas as câmeras e microfones compatíveis com o navegador são acessados ​​e gerenciados por meio do objeto navigator.mediaDevices . Os aplicativos podem recuperar a lista atual de dispositivos conectados e também ouvir as alterações, uma vez que muitas câmeras e microhpones se conectam via USB e podem ser conectados e desconectados durante o ciclo de vida do aplicativo. Uma vez que o estado de um dispositivo de mídia pode mudar a qualquer momento, é recomendável que os aplicativos se registrem para as alterações do dispositivo a fim de lidar com as alterações de maneira adequada.

Restrições

Ao acessar dispositivos de mídia, é uma boa prática fornecer as restrições mais detalhadas possíveis. Embora seja possível abrir a câmera e o microfone padrão com uma restrição simples, isso pode fornecer um fluxo de mídia que está longe de ser o ideal para o aplicativo.

As restrições específicas são definidas em um objeto MediaTrackConstraint , uma para áudio e outra para vídeo. Os atributos neste objeto são do tipo ConstraintLong , ConstraintBoolean , ConstraintDouble ou ConstraintDOMString . Podem ser um valor específico (por exemplo, um número, booleano ou string), um intervalo ( LongRange ou DoubleRange com um valor mínimo e máximo) ou um objeto com uma definição ideal ou exact . Para um valor específico, o navegador tentará escolher algo o mais próximo possível. Para um intervalo, o melhor valor nesse intervalo será usado. Quando exact é especificado, apenas os fluxos de mídia que correspondem exatamente a essa restrição serão retornados.

Aproximar

// Camera with a resolution as close to 640x480 as possible
{
    "video": {
        "width": 640,
        "height": 480
    }
}

Alcance

// Camera with a resolution in the range 640x480 to 1024x768
{
    "video": {
        "width": {
            "min": 640,
            "max": 1024
        },
        "height": {
            "min": 480,
            "max": 768
        }
    }
}

Exato

// Camera with the exact resolution of 1024x768
{
    "video": {
        "width": {
            "exact": 1024
        },
        "height": {
            "exact": 768
        }
    }
}

Para determinar a configuração real de uma determinada trilha de um fluxo de mídia, podemos chamar MediaStreamTrack.getSettings() que retorna os MediaTrackSettings aplicados atualmente.

Também é possível atualizar as restrições de uma trilha de um dispositivo de mídia que abrimos, chamando applyConstraints() na trilha. Isso permite que um aplicativo reconfigure um dispositivo de mídia sem primeiro ter que fechar o fluxo existente.

Mídia de exibição

Um aplicativo que deseja realizar captura e gravação de tela deve usar a API Display Media. A função getDisplayMedia() (que faz parte de navigator.mediaDevices é semelhante a getUserMedia() e é usada com o propósito de abrir o conteúdo do display (ou parte dele, como uma janela). O MediaStream retornado funciona mesmo que ao usar getUserMedia() .

As restrições para getDisplayMedia() diferem daquelas usadas para vídeo regular ou entrada de áudio.

{
    video: {
        cursor: 'always' | 'motion' | 'never',
        displaySurface: 'application' | 'browser' | 'monitor' | 'window'
    }
}

O fragmento de código acima mostra como funcionam as restrições especiais para gravação de tela. Observe que isso pode não ser compatível com todos os navegadores que possuem suporte para mídia de exibição.

Streams e trilhas

Um MediaStream representa um fluxo de conteúdo de mídia, que consiste em faixas ( MediaStreamTrack ) de áudio e vídeo. Você pode recuperar todas as trilhas de MediaStream chamando MediaStream.getTracks() , que retorna uma matriz de objetos MediaStreamTrack .

MediaStreamTrack

Um MediaStreamTrack tem uma propriedade kind que é audio ou video , indicando o tipo de mídia que representa. Cada trilha pode ser silenciada alternando-se sua propriedade enabled . Uma trilha possui uma propriedade booleana remote que indica se ela é fornecida por um RTCPeerConnection e proveniente de um par remoto.