PDA

View Full Version : سوال: به دست آوردن زمان ویدو در سی شارپ



god of war 313
پنج شنبه 05 آبان 1401, 10:41 صبح
با سلام خدمت برنامه نویسان .

من یک برنامه اطلاعات فایل میخوام با سی شارپ بسازم.

میخوام بدونم چطوری اگر یک فایل داری زمان بود زمان اون رو در یک lable نمایش بدم.

با تشکر از دوستان.

336699
پنج شنبه 05 آبان 1401, 14:32 عصر
سلام

برای بدست آوردن اطلاعات مورد نظر ابتدا MediaInfoDotNet را از Nuget به پروژه اضافه نمایید.

using MediaInfoDotNet;

MediaFile mFile = new MediaFile("video.mp4");
int Duration_Milliseconds = mFile.Video[0].Duration;
double Duration_Seconds = TimeSpan.FromMilliseconds(Duration_Milliseconds).T otalSeconds;

god of war 313
پنج شنبه 05 آبان 1401, 16:36 عصر
سلام

برای بدست آوردن اطلاعات مورد نظر ابتدا MediaInfoDotNet را از Nuget به پروژه اضافه نمایید.

using MediaInfoDotNet;

MediaFile mFile = new MediaFile("video.mp4");
int Duration_Milliseconds = mFile.Video[0].Duration;
double Duration_Seconds = TimeSpan.FromMilliseconds(Duration_Milliseconds).T otalSeconds;


سلام دوست عزیز خط int Duration_Milliseconds = mFile.Video[0].Duration;

پراپرتی Duration چی هست واسه من وجود ندارهDuration

ghasem31372
پنج شنبه 05 آبان 1401, 16:39 عصر
سلام

برای بدست آوردن اطلاعات مورد نظر ابتدا MediaInfoDotNet را از Nuget به پروژه اضافه نمایید.

using MediaInfoDotNet;

MediaFile mFile = new MediaFile("video.mp4");
int Duration_Milliseconds = mFile.Video[0].Duration;
double Duration_Seconds = TimeSpan.FromMilliseconds(Duration_Milliseconds).T otalSeconds;

سلام دوست گرامی من تازه کارم.

MediaFile mFile = new MediaFile("video.mp4");توی این قسمت
"video.mp4" باید آدرس ویدو رو بنویسیم؟

336699
پنج شنبه 05 آبان 1401, 17:50 عصر
سلام دوست گرامی من تازه کارم.

MediaFile mFile = new MediaFile("video.mp4");توی این قسمت
"video.mp4" باید آدرس ویدو رو بنویسیم؟

بله در اون قسمت آدرس کامل فایل ویدیو را باید بنویسید.

ROSTAM2
پنج شنبه 05 آبان 1401, 18:13 عصر
سلام به همه.
این کد هم یک روش دیگه است برای بدست آوردن اطلاعات فایل مدیا از جمله duration :

using DirectShowLib;
using DirectShowLib.DES;
using System.Runtime.InteropServices;


...


var mediaDet = (IMediaDet)new MediaDet();
DsError.ThrowExceptionForHR(mediaDet.put_Filename( FileName));


// find the video stream in the file
int index;
var type = Guid.Empty;
for (index = 0; index < 1000 && type != MediaType.Video; index++)
{
mediaDet.put_CurrentStream(index);
mediaDet.get_StreamType(out type);
}


// retrieve some measurements from the video
double frameRate;
mediaDet.get_FrameRate(out frameRate);


var mediaType = new AMMediaType();
mediaDet.get_StreamMediaType(mediaType);
var videoInfo = (VideoInfoHeader)Marshal.PtrToStructure(mediaType. formatPtr, typeof(VideoInfoHeader));
DsUtils.FreeAMMediaType(mediaType);
var width = videoInfo.BmiHeader.Width;
var height = videoInfo.BmiHeader.Height;


double mediaLength;
mediaDet.get_StreamLength(out mediaLength);
var frameCount = (int)(frameRate * mediaLength);
var duration = frameCount / frameRate;


Getting length of video (https://stackoverflow.com/questions/6215185/getting-length-of-video)