06-08-2013, 01:30 PM
06-08-2013, 07:19 PM
و عليكم السلام و رحمة الله
هلا شرحت سؤالك أكثر فالفكرة لم تصل
هلا شرحت سؤالك أكثر فالفكرة لم تصل
06-08-2013, 10:58 PM
أول شيئ عليك أن تعرف أن طول الملف سيخزن في الملف نفسه عند عنوان ثابت أو متغير على حسب الصيغة .
لكن لكل ملف أو صيغة ( mp4, mp3 ,wmv.. ) لديه بنية مختلفة ..> تعقيد أكثر ..
يعني ان أردت عمل خوارزمية لاستخراج طول ملف فيديو فعليك أن تكون على دراية ببنية أغلب ملفات الفيديو (wmv,mp4,avi ,...) .. على الأقل الشهيرة .
لكن لكثرة هذه الصيغ من المستحسن أن تقوم بالاستعانة ببعض المكتبات الخاصة للتعامل مع الملتميديا :
هناك الكثير منها :
-----------------------------------------------------------------
هناك طريقة أسهل :
الاستعانة بالخدمات التي يقدمها الوينداوز (windows explorer)
عند فتح المجلد الذي يحتوي على ملف الفيديو ستشاهد في الأسفل بعض الملعلومات عن الملف
مثل حجم الملف , العنوان , الصيغة , مدة العرض , ....
لكن لكل ملف أو صيغة ( mp4, mp3 ,wmv.. ) لديه بنية مختلفة ..> تعقيد أكثر ..
يعني ان أردت عمل خوارزمية لاستخراج طول ملف فيديو فعليك أن تكون على دراية ببنية أغلب ملفات الفيديو (wmv,mp4,avi ,...) .. على الأقل الشهيرة .
لكن لكثرة هذه الصيغ من المستحسن أن تقوم بالاستعانة ببعض المكتبات الخاصة للتعامل مع الملتميديا :
هناك الكثير منها :
كود :
torry.net/pages.php?s=83هناك طريقة أسهل :
الاستعانة بالخدمات التي يقدمها الوينداوز (windows explorer)
عند فتح المجلد الذي يحتوي على ملف الفيديو ستشاهد في الأسفل بعض الملعلومات عن الملف
مثل حجم الملف , العنوان , الصيغة , مدة العرض , ....
كود :
http://im42.gulfup.com/PcLPc.pngPHP كود :
uses ComObj;
function GetFileDuration(AFile: string): string;
var
objShell, objFolder, objFolderItem: OLEVariant;
begin
{>> By SMP3 <<}
try
objShell := CreateOLEObject('Shell.Application');
objFolder := objShell.Namespace(ExtractFilePath(AFile));
objFolderItem := objFolder.ParseName(ExtractFileName(AFile));
Result := objFolder.GetDetailsOf(objFolderItem, 27);
finally
objFolderItem := UnAssigned;
objFolder := UnAssigned;
objShell := UnAssigned;
end;
end;