O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Captura de mídia e restrições

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

Dispositivos de mídia

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

Restrições

Ao acessar dispositivos de mídia, é uma boa prática fornecer restrições o mais detalhadas possível. Embora seja possível abrir a câmera e o microfone padrão com uma restrição simples, ele 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 , um para áudio e outro 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 . Por 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, somente os fluxos de mídia que correspondem exatamente a essa restrição serão retornados.

Perto

 // 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 faixa de um fluxo de mídia, podemos chamar MediaStreamTrack.getSettings() que retorna o MediaTrackSettings atualmente aplicado.

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

Mídia de exibição

Um aplicativo que deseja poder capturar e gravar a tela deve usar a API de mídia de vídeo. A função getDisplayMedia() (que faz parte de navigator.mediaDevices é semelhante a getUserMedia() e é usada com a finalidade de abrir o conteúdo da exibição (ou parte dela, como uma janela). O MediaStream retornado funciona como mesmo que ao usar getUserMedia() .

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

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

O trecho de código acima mostra como as restrições especiais para gravação de tela funcionam. Observe que esses podem não ser suportados por todos os navegadores que possuem suporte para mídia de exibição.

Córregos 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 faixas do MediaStream chamando MediaStream.getTracks() , que retorna uma matriz de objetos MediaStreamTrack .

MediaStreamTrack

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