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 que são suportadas pelo navegador são acessados e gerenciados através do navigator.mediaDevices objeto. 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.

Os condicionalismos específicos são definidos em um MediaTrackConstraint objeto, uma para áudio e um para vídeo. Os atributos deste objecto são de tipo ConstraintLong , ConstraintBoolean , ConstraintDouble ou ConstraintDOMString . Estes podem ser quer um valor específico (por exemplo, um número, booleana ou cadeia), um intervalo ( LongRange ou DoubleRange com um valor mínimo e máximo) ou de um objecto com uma qualquer ideal ou exact definição. 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 for especificado, somente fluxos de mídia que correspondem exatamente essa restrição será devolvido.

Perto

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

Faixa

// 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 faixa de um fluxo de mídia tem, podemos chamar MediaStreamTrack.getSettings() que retorna os MediaTrackSettings actualmente aplicadas.

Também é possível atualizar as restrições de uma faixa de um dispositivo de mídia abrimos, chamando applyConstraints() na pista. 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 a captura e gravação de tela deve usar a API Display Media. A função getDisplayMedia() (que faz parte do navigator.mediaDevices é semelhante ao getUserMedia() e é utilizada para a finalidade de abrir o conteúdo do visor (ou uma porção dela, tal como uma janela). A devolvido MediaStream funciona o mesmo que ao utilizar getUserMedia() .

As restrições para getDisplayMedia() diferem das utilizadas para o 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 oferecem suporte a mídia de exibição.

Streams e trilhas

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

MediaStreamTrack

A MediaStreamTrack tem um kind de propriedade que seja audio ou video , indicando o tipo de mídia que representa. Cada faixa pode ser cortado, alternando sua enabled propriedade. A pista tem uma propriedade booleana remote que indica se ele é proveniente de um RTCPeerConnection e vindo de um ponto remoto.