قبل عامَين، فعّل Chrome برنامج ترميز VP9. بدءًا من الإصدار 48 من Chrome على أجهزة الكمبيوتر المكتبي وAndroid، سيكون VP9 برنامج ترميز اختياريًا للمكالمات الفيديوية باستخدام WebRTC.
على الرغم من أنّ برنامج الترميز VP9 يستخدم المخطّط الأساسي نفسه المستخدَم في برامج الترميز السابقة، أجرى فريق WebM تحسينات على VP9 للحصول على جودة أعلى من كل باييت من الفيديو. على سبيل المثال، يمنح برنامج الترميز الأولوية لميزات الصورة الأكثر حدة، ويستخدم برنامج الترميز الآن عمليات تحويل غير متماثلة للمساعدة في الحفاظ على وضوح المشاهد الأكثر صعوبة وخلوّها من أيّ وحدات.
باستخدام VP9، ستتمكّن اتصالات الإنترنت التي يمكنها حاليًا عرض محتوى بدقة 720p بدون فقدان الحِزم أو تأخير من إتاحة مكالمة فيديو بدقة 1080p بمعدّل نقل البيانات نفسه. يمكن أن يقلل VP9 أيضًا من استخدام البيانات للمستخدمين الذين لديهم اتصالات ضعيفة أو خطط بيانات باهظة الثمن، ولا يتطلّب في أفضل الحالات سوى 40% من معدل نقل البيانات في VP8.
يمكنك الاطّلاع على مستوى أداء مكالمات VP8 مقارنةً بمكالمات VP9 في لقطة الشاشة أدناه التي تعرض التسجيلات التي أجريناها باستخدام إعدادات برنامج ترميز WebRTC، والتي تُظهر توفيرًا في معدل نقل البيانات بنسبة% 30:
يتم التفاوض بين المتصل والمتصل به بشأن برنامج ترميز مكالمة WebRTC، بالإضافة إلى إعدادات الوسائط الأخرى، مثل معدل نقل البيانات، من خلال تبادل رسائل البيانات الوصفية لبروتوكول وصف الجلسة (SDP) التي تصف إمكانات الوسائط لدى العميل.
تُعرف عملية الربط هذه، التي تتضمن تبادل إمكانات الوسائط، باسم "العرض/الردّ". على سبيل المثال، قد يرسل المتصل عرضًا (رسالة SDP) يشير إلى تفضيل VP9 مع استخدام VP8 كخيار احتياطي. إذا أكّدت الإجابة أنّه يمكن للمُتصل عليه معالجة VP9، يمكن مواصلة مكالمة الفيديو باستخدام VP9. إذا ردّ المُتّصل بأنّه لا يمكنه استخدام سوى VP8، ستتم مواصلة المكالمة باستخدام VP8.
للاطّلاع على هذا الإجراء، يمكنك الاطّلاع على رمز تطبيق محادثة الفيديو WebRTC الأساسي appr.tc.
في appcontroller.js، يتم ضبط VP9 كترميز مفضّل ما لم يتم تحديد مَعلمة vsc أو vrc في عنوان URL:
AppController.prototype.loadUrlParams_ = function() {
// ...
var DEFAULT_VIDEO_CODEC = 'VP9';
// …
this.loadingParams_.videoSendCodec = urlParams['vsc'];
// ...
this.loadingParams_.videoRecvCodec = urlParams['vrc'] || DEFAULT_VIDEO_CODEC;
}
في sdputils.js، يتم بعد ذلك استخدام قيمة ترميز الفيديو المخصّصة (إذا تم تحديدها) للبيانات الوصفية لبروتوكول وصف الجلسة:
function maybePreferVideoSendCodec(sdp, params) {
return maybePreferCodec(sdp, 'video', 'send', params.videoSendCodec);
}
function maybePreferVideoReceiveCodec(sdp, params) {
return maybePreferCodec(sdp, 'video', 'receive', params.videoRecvCodec);
}
تعمل دالة maybePreferCodec() المستخدَمة هنا على ضبط قيم لبرنامج الترميز المطلوب في نص البيانات الوصفية لبروتوكول وصف الجلسة (SDP). بروتوكول وصف الجلسة (SDP) مفصّل وليس مصمّمًا ليتم قراءته من قِبل المستخدمين، ولكن يمكنك عرض بروتوكول وصف الجلسة الذي يستخدمه appr.tc من وحدة تحكّم DevTools بعد إجراء مكالمة. الجزء المهم في ما يتعلق ببرامج الترميز هو سطر m:
{
"sdp": "v=0\r\no=- 9188830394109743399 2 IN IP4 127.0.0.1\r\ns … m=video ...",
"type": "offer"
}
باستخدام appr.tc مع إعداداته التلقائية في إصدار حديث من Chrome، ستلاحظ أنّ VP9 هو أول برنامج ترميز مُدرَج في سطر m في وصف الجلسة، يليه VP8 الذي يمكن لمتصفّح Chrome استخدامه أيضًا. في حال ضبط VP8 كترميز مفضّل (من خلال مَعلمات عنوان URL في appr.tc، على سبيل المثال)، سيتم إدراج VP8 أولاً بدلاً من ذلك.
التعرف على المزيد
- مشروع WebM: مراجع VP9
- webrtc.org: الموقع الإلكتروني الرئيسي لمشروع WebRTC
- g.co/webrtc: روابط تنقل إلى مراجع أخرى حول WebRTC
- webrtc.github.io/samples: تطبيقات WebRTC المتوفّرة
- test.webrtc.org: إطار عمل لإعداد تقارير الأخطاء وأدوات اختبار الأجهزة والشبكات مفتوحة المصدر