Medya yakalama ve kısıtlamalar

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.