السلام عليكم ورحمة الله وبركاته
موضوعنا اليوم هو عباره عن إمكانية تحويل امتداد ملفات الفيديو إلى Flv وكذلك يمكن عمل العكس وتحويلها لامتدادات فيديو اخرى.
طبعا الكل يعلم الموقع الأكثر شهره في العالم موقع YouTube لنشر ملفات الفيديو حتى يستطيع الجميع مشاهدتها والمشاركة بها.
فإن ألية عرض ملفات الفيديو يجب ان تكون ذو بامتداد Flv حتى يتم تضمينها وقرائتها داخل ملفات الفلاش مثل اليوتيوب.
طبعا ليس كافة المشتركين في موقع اليوتيوب والذين ينزلون يوميا ملفات الفيديو يفهمون هذه الاليه لانه لا يعني لهم الجانب التقني وأنه يجب رفع الملفات على هيئة FLV وكذلك رفع صوره خاصه للفيديو.
ولكن اليوتيوب يسهل لهم الأمر وأنه يمكنهم رفع ملفات الفيديو بأي امتدادا هم يردونه وهو تلقائيا يقوم بتحويل ملفات الفيديو إلى FLV ويأخد Screenshot من مقطع الفيديو.
لكي نقوم بهذه العمليه يجب أن يتم تحميل ملف Exe يخدمنا بقيام هذه العمليه وأن يتم تضمينه هذا الملف داخل المشروع واسم هذه الملف هو ffmpeg ولتحميل هذا الملف على الرابط التالي:
http://www.videohelp.com/download/ffmpeg-0.5.7zوالان سوف اقوم بوضع لكم الأكواد الخاصه للمشروع وهي بسيطه وسهلة للغايه وغير معقده مطلقا.
لعملية تحويل ملف الفيديو إلى امتداد Flv تتم كالتالي:
Public Sub ConvertVideo(ByVal FileSorucePath As String, ByVal FileOutPutPath As String)
Dim ffmpeg As Process
ffmpeg = New Process()
Dim fileargs As String = " -i "
fileargs += """" & FileSorucePath & """"
fileargs += " """ & FileOutPutPath & """"
ffmpeg.StartInfo.Arguments = fileargs
ffmpeg.StartInfo.FileName = Page.MapPath("ffmpeg.exe")
ffmpeg.Start()
End Sub
الان لدينا الداله والتي اسمها ConvertVideo ويتم التمرير لها متغيرين وهم FileSorucePath مسار ملف الفيديو الذي نريد تحويله كاملا والمتغير FileOutPutPath مسار الملف الذي سوف نستخرجه من ملف الفيديو الأصلي وتحويله للامتداد المعطى ضمن المسار في المتغير FileOutPutPath.
Dim ffmpeg As Process
ffmpeg = New Process()
هنا تم تعريف المتغير ffmpeg من نوع Process وهذه Process تفيدنا في امكانية تشغيل ملفات EXE يتم تضمينها داخل المشروع.
Dim fileargs As String = " -i "
fileargs += """" & FileSorucePath & """"
fileargs += " """ & FileOutPutPath & """"
عملية التحويل تتم من خلال تنفيذ Command line يتم إرسالها للبرنامج ffmpeg.exe وهو بدوره عندها يقرأ هذا الأمر وتتم تنفيذ الإجراء بناء عليها.
ففي المتغير المعرف لدينها وهو fileargs سوف نقوم بوضع الأمر الذي نريد تنفيذه حتى يفهمه ffmpeg حيث سوف يتم وضع أولا مسار الملف الذي نود تحويله وثانيا نضع مسار الملف الذي نود التحويل له.
ffmpeg.StartInfo.Arguments = fileargs
هنا سوف يتم تمرير Command Line المخزن fileargs لل Process التي تم تعريفها وهي ffmpeg حتى يتم تمريها إلى ffmpeg.exe.
ffmpeg.StartInfo.FileName = Page.MapPath("ffmpeg.exe")
ffmpeg.Start()
هنا تم تحديد مسار ملف EXE الذي نود ان نتعامل معه لتنيفذ له الإجراء وبعدها نضع Start لتبدأ العملية.
الان بخصوص أخد ScreenShot للصوره نفس العمليه بالزبط لكن تختلف فقط بصيغة Command Line لأكثر، والكود هو التالي:
Public Sub VideoScreenShot(ByVal VideoPath As String, ByVal ImagePath As String)
Dim ffmpeg As Process
ffmpeg = New Process()
Dim fileargs As String = " -i "
fileargs += """" & VideoPath & """ -vframes 1"
fileargs += " """ & ImagePath & """"
ffmpeg.StartInfo.Arguments = fileargs
ffmpeg.StartInfo.FileName = Page.MapPath("ffmpeg.exe")
ffmpeg.Start()
End Sub
كما تلاحظون عرفنا الداله VideoScreenShot تحتوي على متغيرين حيث المتغير الأول VideoPath مسار الملف الذي نود التقاط الصوره منه والمتغير الثاني ImagePath مسار تخزين الصوره التي سوف يتم التقاطها وتخزينها.
الفرق تلاحظون بأن تم وضع بعد مسار ملف الفيديو في المتغير fileargs هو -vframes 1 حيث يتم تحديد من اي فريم من الفيديو يتم إلتقاط الصوره حيث يمكنك إلتقاط أكثر من صوره مختلفه حسب Frame .
ملاحظة يجب أن يتم تضمين المكتبة Imports System.Diagnostics وهي خاصة لأجل عملية Process
سوف تجودن المثال ضمن المرفق
أتمنى للجميع دوام التوفيق.
مع التحية
الملفات المرفقة
ffmpeg.rar ( 3.94ك )
عدد مرات التنزيل: 1333