Bagian media WebRTC mencakup cara mengakses hardware yang mampu menangkap video dan audio, seperti kamera dan mikrofon, serta cara media melakukan streaming Anda. Ini juga mencakup media tampilan, yang merupakan cara aplikasi melakukan pengambilan gambar.
Perangkat media
Semua kamera dan mikrofon yang didukung oleh browser dapat diakses dan
dikelola melalui objek navigator.mediaDevices
. Aplikasi dapat mengambil
daftar perangkat terhubung saat ini dan juga
mendengarkan perubahan, karena banyak
kamera dan mikrohpone terhubung melalui
USB dan dapat dihubungkan dan
terputus selama
siklus hidup aplikasi. Karena status media
dapat berubah setiap saat, disarankan agar aplikasi mendaftar untuk
perubahan perangkat untuk
menangani perubahan dengan benar.
Batasan
Saat mengakses perangkat media, sebaiknya berikan informasi batasan sebanyak mungkin. Meskipun memungkinkan untuk membuka kamera {i>default<i} dan dengan batasan sederhana, alat ini mungkin memberikan streaming media yang jauh dari yang paling optimal untuk aplikasi.
Batasan spesifik ditentukan dalam objek MediaTrackConstraint
, satu untuk
audio dan satu untuk video. Atribut dalam objek ini berjenis
ConstraintLong
, ConstraintBoolean
, ConstraintDouble
, atau
ConstraintDOMString
. Ini bisa berupa nilai tertentu (mis., angka,
boolean atau string), rentang (LongRange
atau DoubleRange
dengan nilai minimum dan
nilai maksimum) atau objek dengan definisi ideal
atau exact
. Untuk
nilai tertentu, {i>browser<i} akan mencoba
memilih sesuatu yang sedekat mungkin.
Untuk rentang, nilai terbaik dalam rentang tersebut akan digunakan. Jika exact
adalah
ditentukan, hanya streaming media yang sama persis dengan batasan tersebut yang akan
dikembalikan.
Near
// Camera with a resolution as close to 640x480 as possible
{
"video": {
"width": 640,
"height": 480
}
}
Rentang
// Camera with a resolution in the range 640x480 to 1024x768
{
"video": {
"width": {
"min": 640,
"max": 1024
},
"height": {
"min": 480,
"max": 768
}
}
}
Persis
// Camera with the exact resolution of 1024x768
{
"video": {
"width": {
"exact": 1024
},
"height": {
"exact": 768
}
}
}
Untuk menentukan konfigurasi sebenarnya yang
dimiliki oleh {i>track<i} {i>media<i},
kita dapat memanggil MediaStreamTrack.getSettings()
yang menampilkan
MediaTrackSettings
saat ini diterapkan.
Anda juga dapat memperbarui batasan trek dari perangkat media yang
telah dibuka, dengan memanggil applyConstraints()
pada trek. Hal ini memungkinkan
mengonfigurasi ulang perangkat media tanpa harus menutup
feed yang sudah ada.
Tampilkan media
Sebuah aplikasi yang ingin melakukan pengambilan dan perekaman layar
harus menggunakan Display Media API. Fungsi getDisplayMedia()
(yang merupakan bagian
dari navigator.mediaDevices
mirip dengan getUserMedia()
dan digunakan untuk
tujuan membuka konten tampilan (atau sebagian, seperti
jendela). MediaStream
yang ditampilkan berfungsi sama seperti saat menggunakan
getUserMedia()
.
Batasan untuk getDisplayMedia()
berbeda dengan batasan yang digunakan untuk reguler
input video atau audio.
{
video: {
cursor: 'always' | 'motion' | 'never',
displaySurface: 'application' | 'browser' | 'monitor' | 'window'
}
}
Snipet kode di atas menunjukkan bagaimana batasan khusus untuk perekaman layar berhasil. Perhatikan bahwa ini mungkin tidak didukung oleh semua browser yang memiliki dukungan media.
Streaming dan lagu
MediaStream
mewakili streaming konten media, yang terdiri dari trek
(MediaStreamTrack
) audio dan video. Anda dapat mengambil
semua lintasan dari
MediaStream
dengan memanggil MediaStream.getTracks()
, yang menampilkan array
Objek MediaStreamTrack
.
MediaStreamTrack
MediaStreamTrack
memiliki properti kind
yang berupa audio
atau video
,
menunjukkan jenis media yang diwakilinya. Setiap trek dapat dibisukan dengan mengalihkan
properti enabled
miliknya. Trek memiliki properti Boolean remote
yang menunjukkan
jika berasal dari RTCPeerConnection
dan berasal dari peer jarak jauh.