Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Acquisizione e vincoli dei media

La parte multimediale di WebRTC spiega come accedere a hardware in grado di catturare video e audio, come telecamere e microfoni, e come funzionano i flussi multimediali. Copre anche i supporti di visualizzazione, ovvero come un'applicazione può eseguire l'acquisizione dello schermo.

Dispositivi multimediali

Tutte le telecamere e i microfoni supportati dal browser sono accessibili e gestiti tramite l'oggetto navigator.mediaDevices . Le applicazioni possono recuperare l'elenco corrente dei dispositivi collegati e anche ascoltare le modifiche, poiché molte fotocamere e microhone si collegano tramite USB e possono essere collegate e disconnesse durante il ciclo di vita dell'applicazione. Poiché lo stato di un dispositivo multimediale può cambiare in qualsiasi momento, si consiglia che le applicazioni registrino le modifiche del dispositivo per gestirle correttamente.

vincoli

Quando si accede ai dispositivi multimediali, è buona norma fornire i vincoli più dettagliati possibili. Sebbene sia possibile aprire la videocamera e il microfono predefiniti con un semplice vincolo, potrebbe fornire un flusso multimediale tutt'altro che ottimale per l'applicazione.

I vincoli specifici sono definiti in un oggetto MediaTrackConstraint , uno per l'audio e uno per il video. Gli attributi in questo oggetto sono di tipo ConstraintLong , ConstraintBoolean , ConstraintDouble o ConstraintDOMString . Questi possono essere un valore specifico (ad es. Un numero, booleano o stringa), un intervallo ( LongRange o DoubleRange con un valore minimo e massimo) o un oggetto con una definizione ideal o exact . Per un valore specifico, il browser tenterà di selezionare qualcosa il più vicino possibile. Per un intervallo, verrà utilizzato il valore migliore in quell'intervallo. Quando viene specificato exact , verranno restituiti solo i flussi multimediali che corrispondono esattamente a quel vincolo.

Vicino

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

Gamma

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

esatto

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

Per determinare la configurazione effettiva di una determinata traccia di un flusso multimediale, possiamo chiamare MediaStreamTrack.getSettings() che restituisce i MediaTrackSettings attualmente applicati.

È anche possibile aggiornare i vincoli di una traccia da un dispositivo multimediale che abbiamo aperto, chiamando applyConstraints() sulla traccia. Ciò consente a un'applicazione di riconfigurare un dispositivo multimediale senza prima dover chiudere il flusso esistente.

Display media

Un'applicazione che desidera essere in grado di eseguire l'acquisizione e la registrazione dello schermo deve utilizzare l'API Display Media. La funzione getDisplayMedia() (che fa parte di navigator.mediaDevices è simile a getUserMedia() e viene utilizzata allo scopo di aprire il contenuto del display (o una parte di esso, come una finestra). Il MediaStream restituito funziona come quando si utilizza getUserMedia() .

I vincoli per getDisplayMedia() differiscono da quelli utilizzati per il normale ingresso video o audio.

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

Lo snipet di codice sopra mostra come funzionano i vincoli speciali per la registrazione dello schermo. Si noti che questi potrebbero non essere supportati da tutti i browser che dispongono di supporto per i supporti di visualizzazione.

Stream e tracce

Un MediaStream rappresenta un flusso di contenuti multimediali, che consiste di tracce ( MediaStreamTrack ) di audio e video. Puoi recuperare tutte le tracce da MediaStream chiamando MediaStream.getTracks() , che restituisce una matrice di oggetti MediaStreamTrack .

MediaStreamTrack

Un MediaStreamTrack ha una proprietà kind che è audio o video , che indica il tipo di media che rappresenta. Ogni traccia può essere silenziata attivando la sua proprietà enabled . Una traccia ha un remote proprietà booleana che indica se proviene da un RTCPeerConnection e proviene da un peer remoto.