Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Pengambilan dan kendala media

Bagian media dari WebRTC mencakup cara mengakses perangkat keras yang mampu menangkap video dan audio, seperti kamera dan mikrofon, serta cara media stream bekerja. Ini juga mencakup media tampilan, yang merupakan cara aplikasi melakukan tangkapan layar.

Perangkat media

Semua kamera dan mikrofon yang didukung oleh browser diakses dan dikelola melalui objek navigator.mediaDevices . Aplikasi dapat mengambil daftar perangkat terhubung saat ini dan juga mendengarkan perubahan, karena banyak kamera dan mikrofon terhubung melalui USB dan dapat dihubungkan dan diputuskan selama siklus hidup aplikasi. Karena keadaan perangkat media dapat berubah kapan saja, disarankan agar aplikasi mendaftar untuk perubahan perangkat agar dapat menangani perubahan dengan benar.

Kendala

Saat mengakses perangkat media, merupakan praktik yang baik untuk memberikan batasan sedetail mungkin. Meskipun dimungkinkan untuk membuka kamera dan mikrofon standar dengan kendala sederhana, ini mungkin memberikan aliran media yang jauh dari yang paling optimal untuk aplikasi.

Batasan spesifik didefinisikan dalam objek MediaTrackConstraint , satu untuk audio dan satu untuk video. Atribut dalam objek ini adalah tipe ConstraintLong , ConstraintBoolean , ConstraintDouble atau ConstraintDOMString . Ini dapat berupa nilai tertentu (misalnya angka, boolean atau string), rentang ( LongRange atau DoubleRange dengan nilai minimum dan maksimum) atau objek dengan definisi ideal atau exact . Untuk nilai tertentu, browser akan berusaha mengambil sesuatu sedekat mungkin. Untuk rentang, nilai terbaik dalam rentang itu akan digunakan. Ketika exact ditentukan, hanya aliran media yang persis cocok dengan kendala yang akan dikembalikan.

Dekat

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

Jarak

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

Tepat

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

Untuk menentukan konfigurasi aktual yang dimiliki trek tertentu dari aliran media, kita dapat memanggil MediaStreamTrack.getSettings() yang mengembalikan MediaTrackSettings saat ini diterapkan.

Dimungkinkan juga untuk memperbarui batasan trek dari perangkat media yang telah kami buka, dengan memanggil applyConstraints() di trek. Ini memungkinkan aplikasi mengkonfigurasi ulang perangkat media tanpa terlebih dahulu harus menutup aliran yang ada.

Media tampilan

Aplikasi yang ingin dapat melakukan perekaman dan perekaman layar harus menggunakan API Media Display. Fungsi getDisplayMedia() (yang merupakan bagian dari navigator.mediaDevices mirip dengan getUserMedia() dan digunakan untuk tujuan membuka konten tampilan (atau sebagian darinya, seperti jendela). MediaStream kembali berfungsi sebagai sama seperti saat menggunakan getUserMedia() .

Kendala untuk getDisplayMedia() berbeda dari yang digunakan untuk input video atau audio biasa.

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

Cuplikan kode di atas menunjukkan bagaimana kendala khusus untuk perekaman layar bekerja. Perhatikan bahwa ini mungkin tidak didukung oleh semua browser yang memiliki dukungan media layar.

Streaming dan trek

MediaStream mewakili aliran konten media, yang terdiri dari trek ( MediaStreamTrack ) audio dan video. Anda dapat mengambil semua trek dari MediaStream dengan memanggil MediaStream.getTracks() , yang mengembalikan array objek MediaStreamTrack .

MediaStreamTrack

MediaStreamTrack memiliki properti kind yang berupa audio atau video , menunjukkan jenis media yang diwakilinya. Setiap lagu dapat dibisukan dengan enabled properti yang enabled . Sebuah lagu memiliki remote properti Boolean yang menunjukkan apakah itu bersumber dari RTCPeerConnection dan berasal dari rekan jauh.