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.