Przechwytywanie i ograniczenia dotyczące multimediów

Sekcja multimedialna WebRTC zawiera informacje o tym, jak uzyskać dostęp do sprzętu umożliwiającego przechwytywanie obrazu i dźwięku, np. kamer i mikrofonów, oraz sposobu strumieniowania multimediów w naszej pracy. Dotyczy to również displayowych multimediów, czyli funkcji, za pomocą których aplikacja przechwytywanie.

Nośniki danych

dostęp do wszystkich kamer i mikrofonów obsługiwanych przez przeglądarkę; zarządzane za pomocą obiektu navigator.mediaDevices. Aplikacje mogą pobierać aktualną listę podłączonych urządzeń i obserwować zmiany, ponieważ wiele Kamery i mikropionowe urządzenia łączą się przez USB i można je łączyć, rozłączone w trakcie cyklu życia aplikacji. Ponieważ branża mediów może się zmienić w każdej chwili, zalecamy, aby aplikacje zarejestrowały zmian na urządzeniu, aby poprawnie je obsługiwać.

Ograniczenia

Przy korzystaniu z urządzeń multimedialnych warto podać jak najbardziej szczegółowe z jakimi ograniczeniami. Mimo że można otworzyć domyślną kamerę i z prostym ograniczeniem, może przesyłać strumień multimediów na odległość od najbardziej optymalnej dla danej aplikacji.

Konkretne ograniczenia są określone w obiekcie MediaTrackConstraint, jedno z nich dźwięku i wideo. Atrybuty w tym obiekcie są typu ConstraintLong, ConstraintBoolean, ConstraintDouble lub ConstraintDOMString Może to być konkretna wartość (np. liczba, wartość logiczna lub ciąg znaków), zakres (LongRange lub DoubleRange z wartością minimalną i wartość maksymalną) lub obiekt z definicją ideal albo exact. Dla określonej wartości, przeglądarka próbuje wybrać coś jak najbliższemu. Dla danego zakresu używana jest najlepsza wartość z tego zakresu. Gdy exact to tylko strumienie multimediów, które dokładnie pasują do tego ograniczenia, .

Mała odległość

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

Zakres

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

Ścisłe

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

Aby określić rzeczywistą konfigurację określonej ścieżki strumienia multimediów, możemy wywołać funkcję MediaStreamTrack.getSettings(), która zwraca Zastosowano MediaTrackSettings.

Można też aktualizować ograniczenia ścieżki za pomocą urządzenia multimedialnego otwieranych, wywołując na ścieżce applyConstraints(). Dzięki temu ponowne skonfigurowanie urządzenia multimedialnego przez aplikację bez konieczności uprzedniego zamykania aplikacji. istniejącego strumienia.

Displayowe multimedia

Aplikacja, która chce mieć możliwość przechwytywania i rejestrowania zawartości ekranu musi używać interfejsu Display Media API. Funkcja getDisplayMedia() (która jest częścią z navigator.mediaDevices jest podobny do getUserMedia() i służy do otwarcie zawartości wyświetlacza (lub jego części, np. okno). Zwrócona wartość MediaStream działa tak samo jak w przypadku użycia getUserMedia()

Ograniczenia dla getDisplayMedia() różnią się od tych używanych w przypadku zwykłego wejście wideo lub audio.

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

Fragment kodu powyżej pokazuje, jak specjalne ograniczenia dotyczące nagrywania ekranu Google. Pamiętaj, że mogą one nie być obsługiwane przez wszystkie przeglądarki obsługujące wyświetlanie obsługę multimediów.

Strumienie i ścieżki

MediaStream reprezentuje strumień treści multimedialnych, który składa się ze ścieżek. (MediaStreamTrack) dźwięku i obrazu. Wszystkie ścieżki można pobrać z MediaStream przez wywołanie metody MediaStream.getTracks(), która zwraca tablicę MediaStreamTrack obiektów.

MediaStreamTrack

Element MediaStreamTrack ma właściwość kind, która jest wartością audio lub video, co do rodzaju mediów, które reprezentuje. Każdą ścieżkę można wyciszyć, przełączając jej właściwość enabled. Ścieżka ma właściwość logiczną remote, która wskazuje jeśli pochodzi ze źródła RTCPeerConnection i ze zdalnego peera.