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.