بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
بعض الشرح عن GStreamer .
إذا كنت تفكر بتطوير برنامج يتعلق بأي من هذه الأمور مشغل فيدوهات(mp4,ogg...إلخ) ومشغل أصوات (mp3,wave ...إلخ) أو برنامج تسجيل الشاشة أو برنامج يتعامل مع الكاميرا او بث الوسائط من خلال شبكة قد يهمك ان تتعرف على GStreamer ,بشكل بسيط هو cross-platform multimedia framework إطار عمل يعمل على عدة أنظمة منها Android, iOS, Mac OS X and Windows .
هناك أكثر من إصدار منه مثال عن الإصدار الأول لتسجيل الشاشة على ملف طبعا يحتج أن تكون مثبت plugins إضافة GStreamer على حسب ما تستخدمه ملاحظة هذا الامر لن يعمل على wayland.
gst-launch-1.0 -e ximagesrc ! videoconvert ! queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 ! x264enc psy-tune=\"none\" speed-preset=\"superfast\" subme=1 qp-min=28 qp-max=40 threads=2 ! matroskamux name=mux ! filesink location=arfedoratest.webm
الان بعض الشرح للأمر في الأعلى أولا gst-launch-1.0 هو برنامج ينفذ ما مطلوب منه .
أما الباقي يسمى pipeline ترجمته للعربية خط انابيب وعمله ياخذ مدخلات ويخرج مخرجات أي مثلا يأخذ بيانات من الكاميرا ويمررها من أنبوب لأنبوب ثم يتم معالجة هذه المدخلات لتسهيل الامر أكثر هو شيء مثل سطر اﻷوامر مثلا هذا الأمر في الأسفل يستعرض الملفات ثم يبعث بالنتيجة من خلال الأنبوب للأمر الأخر ليتم تعامل معها ثم يتعامل معها الأمر الاخر والذي هنا معنا الان امر grep الذي سيقوم فلترة النتيجة لكل ملف أو مجلد يحتوي حرفي py .
ls |grep -i py
إذا كنت تريد إنشاء برنامج يفعل الشيء نفسه ستتخلى عن أمر gst-launch-1.0 وتستخدم بعض المكتبات للتعامل مع هذا ال pipeline مثلا في Gtk موجود تحت إسم Gst مثال لإستدعائه من بايثون from gi.repository import Gst وعلى ما أظن هو متوفر أيضا في Qt وغيرها وليس الأمر خاص ببايثون أي لغة برمجة مثلا متوفر لها Gtk ممكن إستخدام Gst .
في الحقيقة إجاد ال pipeline الصحيح هو كل المسئلة وباقي تفاصيل وإجاد ال pipeline الصحيح يحتاج منك معرفة كبيرة وحتى ما هذا تحتاج القيام بتجارب كثيرة ومراجعة تجارب الأخرين والإقتباس منهم لأن الأمر أشبه بتركيب دواء :D .
يمكنك أن تجد على الإنترنت pipline معقدة جدا وجاهزة فقط إبحث في جوجل أو youtube أذكر مرة شاهدة فيديو شخص نجح دمج تصوير الشاشة وكامرتين و مايكروفونين ودمجهم مع بعض يعني شيء مثل ما يفعله برنامج OBS .
أخيرا هذا برنامج أعمل عليه لتصوير الشاشة والصوت من المايكروفون وممكن أيضا الصوت من داخل لينكس ويدعم تعدد الشاشات ,البرنامج من المفروض أنه يعمل على كل الوجهات والتوزيعات بشكل جيد طالما توفرت ال plugins الضرورية لاكنه يعاني من بعض المشاكل مثل إرتفاع إستهلاك الذاكرة أحيانا والصوت لا يتم تسجيله على wayland وبعض المشاكل البسيطة يعني لا تأخذو هذا البرنامج الأن على أنه برنامج نهائي , لمن أراد أن يطلع على الامر هذا رابطه على github .
https://github.com/yucefsourani/gvrecord
أخيرا هناك برنامج اخر مساعد إسمه gst-inspect-1.0 يساعدك على جلب معلومات عن العناصر المركبة داخل ال pipeline مثل عنصر filesink ويعرض لك أيضا كل العناصر المتوفرة .
الأن pipeline ليأخذ الصوت من المايكروفون ويخرجه من سماعات الجهاز في الحقيقة على الرغم من أني لا أفهم شيء بموضوع الإختراق وهذه الأمور لاكن تعرفي على Gstreamer أيقظ لدي حس الأمن أكثر وعدم إستخدام مستودعات وتوزيعات عشوائية كيفما كان .
gst-launch -e pulsesrc ! pulsesink