عن المشروع

FFMpegCore هي مكتبة .NET Standard تغلف أدوات سطر الأوامر FFMpeg وFFProbe، مما يجعل تحليل الوسائط وتحويلها متاحًا من تطبيقات .NET. تدعم الاستدعاءات المتزامنة وغير المتزامنة. يتم تحليل الوسائط عبر FFProbe، الذي يعيد معلومات الوسائط لمسار إدخال معين عبر Analyse أو AnalyseAsync. يتم التعامل مع التحويل عبر FFMpeg باستخدام مكتبة بناء وسائط بطلاقة. يمكن أن تأتي المدخلات من ملفات أو أنابيب، ويمكن أن تذهب المخرجات إلى ملفات أو أنابيب. تغطي الخيارات ترميزات الفيديو والصوت، عامل معدل ثابت، معدل البت المتغير، مرشحات الفيديو مثل التحجيم، وfaststart لتشغيل الويب. تدعم المكتبة أيضًا التحويل من وإلى التدفقات، على سبيل المثال كتابة مخرجات VP9/WebM إلى تدفق. تعمل الطرق المساعدة على تبسيط العمليات الشائعة: التقاط لقطات صور من الفيديو (محفوظة على القرص أو معالجة في الذاكرة عبر حزم امتداد اختيارية System.Drawing.Common أو SkiaSharp)، التقاط لقطات GIF مع تغيير حجم اختياري يحافظ على نسبة الأبعاد، دمج أجزاء الفيديو، إنشاء فيديوهات فرعية حسب النطاق الزمني، دمج تسلسل صور في فيديو، كتم الصوت، استخراج المسارات الصوتية، استبدال المسارات الصوتية، ودمج صورة ثابتة مع ملف صوتي. يسمح إدخال الأنابيب بكتابة إطارات الفيديو مباشرة من ذاكرة البرنامج دون حفظ ملفات صور وسيطة، ويتيح التحويل أثناء توليد الإطارات أو استلامها. تحتوي واجهة IPipeSource على تطبيقات للتدفقات، إطارات الفيديو الخام، وعينات الصوت الخام. يمكن لمصادر إطارات الفيديو الخام تعيين معدل إطارات، وتوفر حزم امتداد الصور أغلفة تكيف System.Drawing.Bitmap أو SKBitmap مع واجهة الإطار. يمكن تثبيت الملفات الثنائية في وقت التشغيل عبر حزمة FFMpegCore.Extensions.Downloader، التي تجلب ffmpeg وffprobe إلى مجلد ثنائي مكوّن باستخدام واجهة برمجة تطبيقات ffbinaries. بدلاً من ذلك، يمكن تثبيت الملفات الثنائية يدويًا عبر مديري الحزم مثل Chocolatey على Windows، Homebrew على macOS، أو apt على Ubuntu. يتوفر تكوين المسار عالميًا عبر فئة FFOptions، لكل تشغيل، أو عبر ملف ffmpeg.config.json يُقرأ عند أول استخدام. تشمل الخيارات مجلد الملفات الثنائية، مجلد الملفات المؤقتة، ودليل العمل. للنشر المختلط بين 32 بت و64 بت، يمكن أن تحتوي مجلدات فرعية منفصلة x64 وx86 داخل مجلد الملفات الثنائية على ملفات ثنائية خاصة بالبنية؛ وإلا تبحث المكتبة في مجلد الملفات الثنائية مباشرة. يلاحظ المشروع أن إصدارات ffmpeg الأقدم قد لا تدعم كل وسيط يعرضه المكتبة، وأن اختبارات CI تعمل ضد ffmpeg 8.1. تم إصداره بموجب ترخيص MIT.