![]() |
|
[مثال] تحويل الفيديوهات باستخدام حزمة xFFmpeg.NET - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175) +--- قسم : قسم امثلة ومشاريع C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=179) +--- الموضوع : [مثال] تحويل الفيديوهات باستخدام حزمة xFFmpeg.NET (/showthread.php?tid=35982) |
تحويل الفيديوهات باستخدام حزمة xFFmpeg.NET - Anas Mahmoud - 03-08-20 بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته الموضوع بلغة VB.NET هذا مثال لاستخدام حزمة xFFmpeg.NET الخاصة بالتعامل مع الفيديوهات الحزمة ما هي الى غطاء Wrapper للتعامل مع ملف FFmpeg.exe الشهير الذي يمكنه عمل كل شيء بالفيديوهات تقريبا في الحقيقة يمكنك تحويل الفيديوهات عن طريق FFmpeg.exe مباشرة ، ولكن التعامل لن يكون بالبساطة المطلوبة ، كنت طرحت في المنتدى القديم استخدام FFmpeg.exe مباشرة عن طريق Shell . xFFmpeg.NET تجعل التعامل مع الفيديوهات اسهل ما يمكن ، فهي تمكنك من تحويل الفيديوهات والصوتيات بجميع صيغها تقريبا وكذلك قصها او تعديل اعداداتها. تحتاج لتنزيل FFmpeg.exe من موقعهم الرسمي ، بعد ذلك قم بفك الضغط وستجد ملف FFmpeg.exe داخل مجلد bin انسخ FFmpeg.exe الى مجلد bin\Debug في ملفات المشروع وسيعمل ان شاء الله تعالى [attachment=25365] [attachment=25366] [attachment=25367] [attachment=25368] المثال: [attachment=25364] الذي اقدمه لكم في غاية البساطة ، تقوم باختيار الملف المراد تحويله ووكذلك مسار واسم حفظه ثم اضغط حوّل وفقط شاهد تقدم عملية التحويل وكذلك معلومات اثناء التحويل تقبل الله منا ومنكم الطاعات في المشاركة التالية سأعلق بعض الشيء على الكود واشرح كيفيه اضافة الحزمة xFFmpeg.NET و التعامل معها لتثبيت حزمة xFFmpeg.NET في مشروعك قم بالتالي : [attachment=25369] [attachment=25370] الان وقد تم اضافة الحزمة لمشروعك ، اقم باستيراد مجالات الاسماء التالية : كود : using FFmpeg.NET;الان كل ما عليك فعله عند الحاجة للتعامل مع الحزمة هو انشاء الكائنات التالية كود : var inputFile = new MediaFile(TxtSrc.Text); //الملف المدخلالكائن من النوع MediaFile يمثل ملف مدخل او مخرج الكائن من النوع Engine هو المهم في هذه الحزمة التي يتم التعامل من خلاله مع الملفات يمكنك ايضا انشاء كائن من نوع ConversionOptions وتمريره الى كائن ffmpeg اذا اردت تعديل اعدادات الفديدو وهو امر اختياري الآن يمكنك اسناد الاحداث للكائن ffmpeg للاجراءات التي تقوم بتنفيذها : كود : ffmpeg.Progress += (s,ev)=> SetProgress(ev);OnError و OnComplete هم اجراءات عادية يتم استدعائها عند اكتمال العملية او عند حدوث خطأ اما SetProgress فهو اجراء يقوم باستدعاء اجراء مفوض للحدث تقدم عمليه التحويل لان عمليه التحويل تتم في Thread اخر ، لذلك فلا يمكننا اسناد حدث تقدم التحويل الى اجراء بدون تفويض ، الان السطر التالي هو الذي يقوم بامر التحويل : كود : await ffmpeg.ConvertAsync(inputFile, outputFile);ولان عمليه التحويل بشكل غير متزامن يجب ان نستخدم الكلمة Await عند استدعاء امر التحويل ، ويجب ايضا استخدام الكلمة Async في تعريف الاجراء الذي يتم استدعائها فيه : كود : private async void BtnAction_Click(object sender, EventArgs e)الان قم بتعريف الاجراءات التي يتم استدعائها بالاحداث: كود : //حدث اكتمال التحويلكود : //حدث عند حدوث خطأ في التحويلاما عند كيفية استخدام الاجراء المفوض للتعامل مع حدث تقدم عملية التحميل : كود : delegate void SetProgressCB(ConversionProgressEventArgs ev);يقوم الاجراء السابق باستدعاء OnProgress الآن يمكنك التعامل مع OnProgress كأنها حدث تقدم عمليه التحويل : كود : private void OnProgress(ConversionProgressEventArgs e)الامر بهذه البساطة فعلا. انصحكم بزيارة صفحتهم على GitHub هناك امثلة شارحة لكيفية الاستخدام اكثر: https://github.com/cmxl/FFmpeg.NET اذا كان هناك امر غير واضح انا جاهز تماما للرد على اسألتكم ان شاء الله تعالى السلام عليكم ورحمة الله وبركاته |