إذا كنت أحد مستخدمي توزيعة أوبنتو أو فيدورا أو ماندريفا فإنك وبكل تأكيد مرت عليك كلمة GStreamer plugins عندما تريد أن تشغل أحد صيغ الفيديو غير الحرة مثل AVI أو MPEG ، حيث سيطلب منك النظام الاتصال بالانترنت للبحث عن الترميز المناسب للصيغة التي تريد تشغيلها. وبعد ذلك سيطلب منك الموافقة على تثبيت ملحقات good أو bad أو ugly ، وبعد تثبيتها ستنعم بسلام مع أي صيغة ملتميديا تواجهك.
ولكن ما هي GStreamer ؟
بكل بساطة يمكننا أن نعرف ج-ستريمر بأنها إطار عمل framework للملتميديا مكتوبة بلغة السي ، وهي مبني على فلسفة خط الأنبوب pipeline.
وهي ليست موجهة للمستخدم النهائي بل موجهة للمطورين بحيث تمكنهم من برمجة شريحة عريضة من المكونات التي تتعامل مع الميدياوتشمل مشغل الصوتيات و مشغل الفيديو والصوت معا و عمل بث مباشر للفيديو و تحرير الملتميديا.
دعونا نفهم أولا ما هي فلسفة خط الأنبوب ؟
في هندسة البرمجيات خط الانبوب يحوي على سلسلة من عناصر المراد معالجتها مرتبة بحيث أن خرج كل عنصر يكون هو دخل العنصر التالي. فمثلا إذا أردنا أن نبحث في وثيقة ما عن كلمة معينة ولكن لا نريد أن نفتح هذه الوثيقة ببرنامج خاص ، ومن ثم نستخدم عملية البحث ، تقدم لنا فلسفة خط الأنبوب مرونة عالية فهي في هذه الحالة ستسخدم برنامج للقراءة الوثيقة ولكن بدلا من عرض الوثيقة ستمرر خرج الوثيقة إلى برنامج آخر للبحث عن الكلمة المقصودة والنتيجة النهائية ستكون عرض النتائج فقط.
فلسفة خط الأنبوب مطبقة كثيرا في عالم اليونكس و أبنائه في نظام أوامر الشل ، ويستخدمها كثير من مدراء الأنظمة وذلك لتوفيرها للوقت والجهد.
تصميم خط الأنبوب لمنصة GStreamer أعطاها القوة لأن تخدم كقاعدة لإنشاء أنواع عديدة من تطبيقات الملتيمديا مثل محررات الفيديو و خوادم بث الميديا و مشغلات الملتميديا.
صممت منصة GStreamer لتكون متعددة المنصات فهي تعمل على اللينكس ( معالجات x86 و PowerPC و ARM) ونظام سولاريز ( معالجات x86 و SPARC) و نظام الماك Mac OS X و نظام مايكروسوفت ويندوز و OS/400 .
تتوفر واجهات برمجية لمنصة GStreamer بحيث يمكنك استخدامها بلغتك المفضلة ومن بين هذه اللغات : بايثون و السي بلاس بلاس و روبي و GNU Guile . وترخص منصة GStreamer تحت رخصة LGPL.
تاريخ تطورها:
بدأ المشروع في عام 1999 على يد Erik Walthinsen ، أتت العديد من أفكار تصميم نواة ج-ستريمر من مشروع بحثي في معهد Oregon Graduate . وبعد سنة من العمل أطلقت النسخة الأولى من المنصة 0.1 .
في عام 2004 تأسست شركة Fluendo الأسبانية لتقديم حلول الملتيمديا في سوق البرامج الحرة باستخدام منصة GStreamer ، وفي ذلك الوقت كانت المنصة في سلسلة 0.8 ولم تكن مشهورة بسبب مشاكل في الثبات و نقص شديد في المميزات بالمقارنة مع المشاريع المنافسة مثل Xine أو MPlayer أو VLC.
قررت الشركة استئجار معظم فريق تطوير منصة ج-ستريمر الأساسيين حتى الذين غادروا المشروع مثل Wim Taymans وذلك لهدف دفع منصة ج-ستريمر إلى مستوى الإحترافية و حتى يعتمدها مجتمع المصادر الحرة.
في هذه الأثناء سعت شركة Fluendo على الحصول على اتفاقيات لتراخيص براءات الاختراع من الشركات المالكة لها مثل مايكروسوفت و شركة MPEG LA وغيرها من الشركات ، وذلك حتى تقدم حلول للترميزات بشكل قانوني للشركات التي ترغب في استخدام ج-ستريمر في منتجاتها الخاصة.
قدمت شركة Fluendo حلول تعتمد على ج-ستريمر من أمثال خوادم بث الملتميديا بترميزات الحرة و الترميزات ذات براءات الاختراع وكان ذلك عبر مشروع خادم بث الملتميديا Flumotion.
وبالفعل قدم المطورون تحسينات واسعة في بنية ج-ستريمر في سلسلة 0.9 و في سلسلة 0.10 والتى صدرت في عام 2005 وصلت منصة ج-ستريمر إلى عصرها الذهبي من حيث الأداء و الثبات والموثوقية ، وأصبحت توزع بشكل افتراضي في كل توزيعات جنو/لينكس الشهيرة مثل أوبنتو و فيدورا و أوبن سوز ، وتستخدم في العديد من المشاريع التجارية المختلفة.
في عام 2007 غادر بعض المطورين شركة Fluendo وانضموا إلى عدة شركات أخرى من مثل شركة Collabora و صن مايكروسيستم و SongBird، ومن ذلك الحين بدأت عملية تطوير ج-ستريمر بواسطة عدة شركات مختلفة مثل نوكيا و موترولا وليس شركة واحدة، وأصبحت منصة عمل للملتيمديا متعددة المنصات و قوية جدا.
حاليا يستضيف مشروع Freedesktop.org هذه المنصة و هو يهدف بشكل ضمني إلى تحسين التوافقية و مشاركةالتكنولوجيا بين أسطح المكتب المختلفة.
كيف تعمل هذه المنصة؟
كما قلنا سابقا هذه المنصة مبنية على فلسفة خط الأنبوب ، فمنصة ج-ستريمر تقوم بمعالجة الميديا وذلك بوصل عدد من عناصر المعالجة داخل خط الانبوب. وكل عنصر يزود بواسطة ملحق ، والعناصر يمكن أن تجمع في حاوية ، و تتواصل العناصر بواسطة أربطة وسطية ، فالرباط المرسل لعنصر ما يمكن أن يتصل إلى الرباط المستقبل في العنصر الآخر. و عندما يكون خط الأنبوب في حالة التشغيل فسيل البيانات يتدفق من رباط المصدر إلى رباط المستقبل.
في المخطط التالي يشرح كيفية قراءة ملف MP3 باستخدام ج-ستريمر. ملف المصدر يقرأ ملف mp3 من قرص الصلب ويرسله إلى فاك تشفير mp3 ، و يقوم فاك التشفير بفك البيانات ويحولها إلى PCM والتي يمكن تمريرها بعد ذلك إلى تعريف الصوت ALSA. بعد ذلك يقوم تعريف الصوت ALSA بإرسال أصوات PCM إلى سماعات الحاسوب.
المحلقات:
تستخدم منصة ج-ستريمر معمارية الملحقات وقد تكلمنا قليلا عنها عندما تحدثنا عن بنية xine ، هذه المعمارية جعلت معظم وظائف ج-ستريمر تعد كمكتبات مشتركة. بنية وظائف ج-ستريمر الأساسية تحوي على وظائف لتسجيل و تحميل المحلقات وتوفير الوظائف الأساسية. مكتبات الملاحق تحمل بشكل ديناميكي لدعم طيف واسع من الترميزات و الحاويات و مشغلات الدخل والخرج و المؤثرات.
منذ الإصدارة 0.10 تأتي المحلقات مجموعة في ثلاثة أصناف:
حزمة الملحقات الجيدة: وهي تحوي على المحلقات ذات جودة عالية ومرخصة تحت ترخيص LGPL.
حزمة الملحقات السيئة: وهي تحوي على الملحقات مقاربة لجودة حزمة المحلقات الجيدة ولكن ينقصها شيء ما مثل: مراجعة جيدة للكود ، أو بعض التوثيقات ، أو المسؤول عن صيانتها بشكل دائم.
حزمةالملحقات القبيحة: وهي المحلقات التي تخلق مشاكل في التوزيع.
كذلك يوجد ملحق GStreamer FFmpeg plug-in وهو ملحق يحوي على ملحق واحد مع مجموعة من العناصر تستخدم كود مكتبة FFmpeg ، وهذا المحلق يحوي على أشهر مفكات التشفير decode.
تطبيقات تعتمد على منصة ج-ستريمر
هناك قائمة طويلة من التطبيقات التي تعتمد على هذه المنصة الرائعة ، يكفي أن تعرف أن مشروع سطح مكتب جنوم هو أول مستخدم رئيسي لتكنولوجيا ج-ستريمر ، بحيث ضمن هذه المنصة منذ إصدارة جنوم 2.2 ، وهو يشجع تطبيقات جنوم و GTK على استخدامها. من المشاريع الكبيرة التي تستخدمها منصة الميديا Chameleo و مكتبة Phonon و مشغل الميديا Songbird.
كذلك تعمل ج-ستريمر على الأجهزة المضمنة مثل Nokia 770 و N800 و Palm Pre و N810.
وهناك قائمة طويلة من التطبيقات المتوسطة والصغيرة التي تستخدمها وسأذكر بعضا منها:
برنامج Pitivi : وهو محرر فيديو غير خطي ، تطوره شركة Collabora بحيث استأجرت مبرمجين للعمل عليه بدوام كامل ، وقد صدرت نسخة منه قريبا بتطويرات هائلة.
برنامج PiTiVi
برنامج Jokosher : وهو برنامج قوي للتعامل مع المسارات المتعددة، بحيث يمكنك إنشاء وتسجيل الموسيقى ونشرها من بيئة متكاملة وبسيطة.
برنامج Flumotion : وهو خادم لتوزيع بث الميديا ، وقد تكلمنا عنه سابقا.
برنامج Buzztard : وهو مشروع يهدف لتقديم استيدو موسيقى حر ومفتوح المصدر ، وقد بني بشكل عام على مفهوم برنامج للنظام الويندوز تجاري يطلق عليه Buzz ، هذا البرنامج التجاري لم يحصل على تطوير إضافي لأن المطور الاساسي فقد مصدره.
ماذا بعد؟
أود أن أنوه أن منصة ج-ستريمر تدعم العربية بشكل جيد ، بخلاف بقية مشغلات الميديا التى تكلمنا عنها سابقا. هذا وأي إضافة أو تعديل أو استفسار مرحب به.