VP9 artık WebRTC'de kullanılabilir

Chrome, iki yıl önce VP9 codec'i için destek sunmaya başladı. VP9, masaüstü ve Android'deki Chrome 48 sürümünden itibaren WebRTC kullanan görüntülü görüşmeler için isteğe bağlı bir video codec'i olacak.

VP9, önceki codec'lerle aynı temel planı kullansa da WebM ekibi, her video baytından daha fazla kalite elde etmek için VP9'de iyileştirmeler yaptı. Örneğin, kodlayıcı en keskin görüntü özelliklerine öncelik verir. Ayrıca codec, en zorlu sahnelerin bile net ve pikselsiz görünmesini sağlamak için artık asimetrik dönüşümler kullanır.

VP9 ile, şu anda paket kaybı veya gecikme olmadan 720p yayınlayabilen internet bağlantıları, aynı bant genişliğinde 1080p görüntülü görüşmeyi destekleyebilecek. VP9, en iyi durumlarda VP8'in bit hızının yalnızca% 40'ını gerektirerek zayıf bağlantıları veya pahalı veri planları olan kullanıcıların veri kullanımını da azaltabilir.

WebRTC kodlayıcı ayarlarıyla yaptığımız kayıtların ekran görüntüsünde, VP8 çağrılarının VP9 ile karşılaştırmasını görebilirsiniz. Bu kayıtlarda% 30 bit hızı tasarrufu elde edilmiştir:

VP8 ve VP9 WebRTC çağrılarını yan yana gösteren videonun ekran görüntüsü

WebRTC aramasının codec'i, bit hızı gibi diğer medya ayarlarıyla birlikte, istemcinin medya özelliklerini açıklayan Oturum Açıklaması Protokolü (SDP) meta veri mesajları alışverişi yapılarak arayanın ve arananın arasında pazarlık edilir.

Bu el sıkışma işlemi (medya özelliklerinin değişimi) teklif/cevap olarak bilinir. Örneğin, arayan kişi VP9 tercihini belirten bir teklif (SDP mesajı) gönderebilir ve yedek olarak VP8'i kullanabilir. Yanıt, aranan kullanıcının VP9'u kullanabileceğini onaylarsa görüntülü görüşme VP9 kullanılarak devam edebilir. Alıcı yalnızca VP8 kullanabileceğini yanıtlarsa arama VP8 ile devam eder.

Bu işlemin nasıl çalıştığını görmek için appr.tc adlı standart WebRTC görüntülü sohbet uygulamasının koduna göz atın.

URL'de vsc veya vrc parametresi belirtilmediği sürece appcontroller.js'de tercih edilen codec VP9 olarak ayarlanır:

AppController.prototype.loadUrlParams_ = function() {
    // ...
    var DEFAULT_VIDEO_CODEC = 'VP9';
    // …
    this.loadingParams_.videoSendCodec = urlParams['vsc'];
    // ...
    this.loadingParams_.videoRecvCodec = urlParams['vrc'] || DEFAULT_VIDEO_CODEC;
}

sdputils.js dosyasında, SDP meta verileri için özel codec değeri (belirtilmişse) kullanılır:

function maybePreferVideoSendCodec(sdp, params) {
    return maybePreferCodec(sdp, 'video', 'send', params.videoSendCodec);
}

function maybePreferVideoReceiveCodec(sdp, params) {
    return maybePreferCodec(sdp, 'video', 'receive', params.videoRecvCodec);
}

Burada kullanılan maybePreferCodec() işlevi, SDP meta verilerinin metninde istenen codec'in değerlerini ayarlar. SDP ayrıntılı bir yapıya sahiptir ve kullanıcılar tarafından okunacak şekilde tasarlanmamıştır. Ancak bir arama yapıldıktan sonra appr.tc tarafından kullanılan SDP'yi DevTools konsolundan görüntüleyebilirsiniz. Kodeklerle ilgili önemli kısım m satırı'dır:

{
    "sdp": "v=0\r\no=- 9188830394109743399 2 IN IP4 127.0.0.1\r\ns … m=video ...",
    "type": "offer"
}

Chrome'un son sürümlerinde varsayılan ayarlarıyla appr.tc'yi kullandığınızda SDP m satırında listelenen ilk codec'in VP9 olduğunu görürsünüz. Chrome'un kullanabileceği bir diğer codec ise VP8'dir. Tercih edilen codec'i VP8 olarak ayarlarsanız (ör. appr.tc'deki URL parametreleri aracılığıyla) VP8 önce listelenir.

Daha fazla bilgi