VP9 artık WebRTC'de kullanılabilir

İki yıl önce Chrome, VP9 codec desteğini etkinleştirdi. Masaüstü ve Android'deki Chrome 48'den itibaren VP9, WebRTC'nin kullanıldığı görüntülü görüşmeler için isteğe bağlı bir video codec'i olarak sunulacak.

VP9, önceki codec'lerle aynı temel şablonu kullanırken WebM ekibi her video baytından daha fazla kalite elde etmek için VP9'a iyileştirmeler sunmuştur. Örneğin, kodlayıcı en keskin görüntü özelliklerine öncelik verir ve codec artık en zorlu sahnelerin bile net ve bloksuz görünmesini sağlamak için asimetrik dönüştürmeler kullanır.

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

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

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

WebRTC çağrısı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ı paylaşılarak arayan ve arayan arasında kararlaştırılır.

Medya yeteneklerini karşılıklı olarak paylaşan bu el sıkışma sürecine teklif/yanıt olarak da bilinir. Örneğin, arayan, VP8'in tercih edildiğini belirten ve VP8'in yedek olarak kullanılabileceği bir teklif (STP mesajı) gönderebilir. Yanıtlanan kişinin VP9'u işleyebileceği onaylanırsa görüntülü görüşme VP9 kullanılarak devam edebilir. Arayan kişi yalnızca VP8'in kullanılabileceğini belirten bir yanıt verirse arama VP8 ile devam eder.

Bunu çalışırken görmek için standart WebRTC görüntülü sohbet uygulamasının (appr.tc) koduna bakın.

appcontroller.js'de, URL'de vsc veya vrc parametresi belirtilmediği sürece tercih edilen codec olarak VP9 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'de, özel codec değeri (belirtilmişse) SDP meta verileri için 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, istenen codec'in değerlerini SDP meta veri metninde ayarlar. SDP ayrıntılıdır ve kullanıcıların okuyabileceği şekilde tasarlanmamıştır. Ancak arama yapıldıktan sonra appr.tc tarafından kullanılan SDP'yi Geliştirici Araçları konsolundan görüntüleyebilirsiniz. Codec'lerle 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ümlerinden birinde, appr.tc'yi varsayılan ayarlarıyla kullandığınızda, SDP m satırında listelenen ilk codec'in VP9, ardından da Chrome'un da kullanabileceği VP8'in olduğunu göreceksiniz. Tercih edilen codec olarak VP8'i ayarlarsanız (örneğin, appr.tc'deki URL parametreleri aracılığıyla) VP8 ilk olarak listelenir.

Daha fazla bilgi