WebRTC'nin medya kısmı, kameralar ve mikrofonlar gibi video ve sesleri yakalayabilen donanıma nasıl erişileceğini ve medya akışlarının nasıl çalışacağını kapsar. Görüntülü reklam, uygulama ekran görüntüsünde de olduğu gibi görüntülü medyayı da kapsar.
Medya cihazları
Tarayıcı tarafından desteklenen tüm kameralara ve mikrofonlara navigator.mediaDevices
nesnesi aracılığıyla erişilir ve yönetilir. Uygulamalar, bağlı cihazların güncel listesini alabilir, ayrıca birçok kamera ve mikrofon USB üzerinden bağlandığı ve uygulamanın yaşam döngüsü sırasında bağlanıp bağlantıları kesilebildiği için değişiklikleri dinleyebilir. Bir medya cihazının durumu herhangi bir zamanda değişebildiğinden, uygulamaların değişiklikleri doğru bir şekilde işlemek için cihaz değişikliklerine kaydolması önerilir.
Sınırlamalar
Medya cihazlarına erişilirken mümkün olduğunca ayrıntılı kısıtlamalar sağlamak iyi bir uygulamadır. Varsayılan kamera ve mikrofonu basit bir kısıtlamayla açmak mümkün olsa da uygulama için en uygun mesafeden medya akışı sağlayabilir.
Spesifik kısıtlamalar, biri ses ve diğeri video için olmak üzere bir MediaTrackConstraint
nesnesinde tanımlanır. Bu nesnedeki özellikler ConstraintLong
, ConstraintBoolean
, ConstraintDouble
veya ConstraintDOMString
türündedir. Bunlar, belirli bir değer (ör. sayı, boole veya dize), aralık (minimum ve maksimum değere sahip LongRange
veya DoubleRange
) ya da ideal
veya exact
tanımına sahip bir nesne olabilir. Tarayıcı, belirli bir değer için mümkün olduğunca yakın bir şey seçmeye çalışır.
Bir aralık için o aralıktaki en iyi değer kullanılır. exact
belirtildiğinde yalnızca bu sınırlamayla tam olarak eşleşen medya akışları döndürülür.
Yakın
// Camera with a resolution as close to 640x480 as possible
{
"video": {
"width": 640,
"height": 480
}
}
Aralık
// Camera with a resolution in the range 640x480 to 1024x768
{
"video": {
"width": {
"min": 640,
"max": 1024
},
"height": {
"min": 480,
"max": 768
}
}
}
Exact
// Camera with the exact resolution of 1024x768
{
"video": {
"width": {
"exact": 1024
},
"height": {
"exact": 768
}
}
}
Bir medya akışı parçasının gerçek yapılandırmasını belirlemek için, şu anda uygulanmış olan MediaTrackSettings
değerini döndüren MediaStreamTrack.getSettings()
işlevini çağırabiliriz.
Kanaldaki applyConstraints()
bilgisini arayarak, açtığımız bir medya cihazından şarkının kısıtlamalarını güncellemek de mümkündür. Bu, uygulamanın mevcut akışı kapatmak zorunda kalmadan bir medya cihazını yeniden yapılandırmasını sağlar.
Görüntülü reklam
Ekran görüntüsü ve kaydını gerçekleştirmek isteyen bir uygulama, Display Media API'sini kullanmalıdır. getDisplayMedia()
işlevi (navigator.mediaDevices
öğesinin bir parçasıdır) getUserMedia()
işlevine benzer ve ekranın içeriğini (veya pencere gibi bir kısmını) açmak amacıyla kullanılır. Döndürülen MediaStream
, getUserMedia()
kullanılırken olduğu gibi çalışır.
getDisplayMedia()
için kısıtlamalar, normal video veya ses girişi için kullanılanlardan farklıdır.
{
video: {
cursor: 'always' | 'motion' | 'never',
displaySurface: 'application' | 'browser' | 'monitor' | 'window'
}
}
Yukarıda belirtilen kod kodu, ekran kaydı için özel kısıtlamaların işleyiş şeklini gösterir. Bunların, medya desteği olan tüm tarayıcılar tarafından desteklenmeyebileceğini unutmayın.
Akışlar ve kanallar
MediaStream
, ses ve video parçalarından (MediaStreamTrack
) oluşan bir medya içeriği akışını temsil eder. MediaStream
nesnesinden bir dizi nesne döndüren MediaStream.getTracks()
çağrısı yaparak tüm parçaları alabilirsiniz.
MedyaYayını İzleme
Bir MediaStreamTrack
, temsil ettiği medya türünü belirten audio
veya video
kind
özelliğine sahiptir. Her parçanın enabled
özelliği kapatılarak sesi kapatılabilir. Bir parçanın remote
kaynağı, RTCPeerConnection
kaynaklı olup olmadığını ve uzak bir emsalden geldiğini gösteren bir Boole özelliğine sahiptir.