Google is committed to advancing racial equity for Black communities. See how.
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Przechwytywanie multimediów i ograniczenia

Część multimedialna WebRTC opisuje, jak uzyskać dostęp do sprzętu zdolnego do przechwytywania obrazu i dźwięku, takiego jak kamery i mikrofony, a także jak działają strumienie multimedialne. Obejmuje również multimedia wyświetlające, czyli sposób, w jaki aplikacja może przechwytywać ekran.

Urządzenia multimedialne

Dostęp do wszystkich kamer i mikrofonów obsługiwanych przez przeglądarkę można uzyskać za pośrednictwem obiektu navigator.mediaDevices . Aplikacje mogą pobierać aktualną listę podłączonych urządzeń, a także nasłuchiwać zmian, ponieważ wiele kamer i mikrofonów łączy się przez USB i można je podłączać i odłączać w trakcie cyklu życia aplikacji. Ponieważ stan urządzenia multimedialnego może ulec zmianie w dowolnym momencie, zaleca się, aby aplikacje rejestrowały się pod kątem zmian w urządzeniu, aby odpowiednio obsłużyć zmiany.

Ograniczenia

Podczas uzyskiwania dostępu do urządzeń multimedialnych dobrą praktyką jest podanie możliwie jak najbardziej szczegółowych ograniczeń. Chociaż możliwe jest otwarcie domyślnej kamery i mikrofonu z prostym ograniczeniem, może to dostarczyć strumień multimediów, który jest daleki od najbardziej optymalnego dla aplikacji.

Konkretne ograniczenia są zdefiniowane w obiekcie MediaTrackConstraint , jednym dla audio i jednym dla wideo. Atrybuty w tym obiekcie są typu ConstraintLong , ConstraintBoolean , ConstraintDouble lub ConstraintDOMString . Może to być konkretna wartość (np. Liczba, wartość logiczna lub łańcuch), zakres ( LongRange lub DoubleRange z wartością minimalną i maksymalną) lub obiekt z ideal lub exact definicją. W przypadku określonej wartości przeglądarka spróbuje wybrać coś możliwie najbliższego. W przypadku zakresu zostanie użyta najlepsza wartość z tego zakresu. W przypadku exact zostaną zwrócone tylko strumienie multimediów, które dokładnie pasują do tego ograniczenia.

Blisko

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

Zasięg

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

Dokładny

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

Aby określić faktyczną konfigurację, jaką ma określona ścieżka strumienia multimediów, możemy wywołać MediaStreamTrack.getSettings() która zwraca aktualnie zastosowane MediaTrackSettings .

Możliwe jest również zaktualizowanie ograniczeń ścieżki z urządzenia multimedialnego, które otworzyliśmy, przez wywołanie funkcji applyConstraints() na ścieżce. Pozwala to aplikacji na ponowną konfigurację urządzenia multimedialnego bez konieczności wcześniejszego zamykania istniejącego strumienia.

Wyświetl media

Aplikacja, która chce mieć możliwość przechwytywania i nagrywania ekranu, musi używać interfejsu Display Media API. Funkcja getDisplayMedia() (która jest częścią navigator.mediaDevices jest podobna do getUserMedia() i służy do otwierania zawartości ekranu (lub jego części, np. Okna). Zwrócony MediaStream działa tak samo jak w przypadku korzystania z getUserMedia() .

Ograniczenia dla getDisplayMedia() różnią się od ograniczeń używanych dla zwykłego wejścia wideo lub audio.

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

Powyższy fragment kodu pokazuje, jak działają specjalne ograniczenia dotyczące nagrywania ekranu. Należy pamiętać, że mogą one nie być obsługiwane przez wszystkie przeglądarki obsługujące wyświetlacze multimedialne.

Strumienie i ścieżki

MediaStream reprezentuje strumień treści multimedialnych, który składa się ze ścieżek ( MediaStreamTrack ) audio i wideo. Możesz pobrać wszystkie ścieżki z MediaStream , wywołując MediaStream.getTracks() , która zwraca tablicę obiektów MediaStreamTrack .

MediaStreamTrack

MediaStreamTrack ma właściwość kind która jest audio lub video , wskazując rodzaj reprezentowanego przez nią nośnika. Każdy utwór można wyciszyć, przełączając jego enabled właściwość. Ścieżka ma właściwość remote typu Boolean, która wskazuje, czy pochodzi z RTCPeerConnection i pochodzi od zdalnego peera.