PDA

View Full Version : سوال: به دست آوردن زمان یک فایل صوتی ؟؟



shahrzad87
شنبه 16 مهر 1390, 12:17 عصر
سلام
راهی هست که تو C# بشه طول زمان یک فایل صوتی رو بر اساس دقیقه یا ثانیه فهمید ؟؟

sanay_esh
شنبه 16 مهر 1390, 14:54 عصر
سلام
اگر بخواهی که اطلاعات فایل رو بدست بیاری که خیلی ساده است یه جستجو در مورد FileInfo بکنی خیلی مطالب پیدا میکنی
ولی اگر بخواهی برخی از ویژگیهای یک فایل رو بدست بیاری یه سری به این لینک (http://www.codeproject.com/KB/files/detailedfileinfo.aspx)بزن فکر کنم همون چیزی است که میخوایی!!!

shahrzad87
شنبه 16 مهر 1390, 15:01 عصر
سلام
اگر بخواهی که اطلاعات فایل رو بدست بیاری که خیلی ساده است یه جستجو در مورد FileInfo بکنی خیلی مطالب پیدا میکنی
ولی اگر بخواهی برخی از ویژگیهای یک فایل رو بدست بیاری یه سری به این لینک (http://www.codeproject.com/KB/files/detailedfileinfo.aspx)بزن فکر کنم همون چیزی است که میخوایی!!!

من طول زمان یک فایل صوتی رو می خوام نه مشخصات و نوع فایل !!

sanay_esh
شنبه 16 مهر 1390, 16:03 عصر
خوب همان لینک بالایی رو میدی که درست بود کمی دقت بکنی خودت باید دست به کد بشی تا بتونی مدت زمان فایل صوتی رو بدست بیاری!!!!

jeson_park
شنبه 16 مهر 1390, 17:28 عصر
سلام
فایل ضمیمه رو نگاه کنید

shahrzad87
یک شنبه 17 مهر 1390, 09:46 صبح
[QUOTE=jeson_park;1353585]سلام
فایل ضمیمه رو نگاه کنید[/QUOTE

فایل ضمیمه ای که گذاشتید در XP کار نمیکنه .


Unhandled Exception: System.DllNotFoundException: Unable to load DLL 'propsys.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

mehdi.mousavi
یک شنبه 17 مهر 1390, 13:30 عصر
سلام.
می تونید بدین شکل عمل کنید:


MediaPlayer player = new MediaPlayer();
player.Open(new Uri(@"C:\WINDOWS\ServicePackFiles\i386\xplogon.wav"));

while (!player.NaturalDuration.HasTimeSpan)
System.Threading.Thread.Sleep(100);

double sec = player.NaturalDuration.TimeSpan.TotalSeconds;
player.Close();


این روش، روش چندان جالبی به نظر نمیرسه، اما گمان می کنم ساده ترین روش برای رسیدن به نتیجه باشه. روش صحیح، استفاده از DirectShow برای بدست آوردن مدت زمان فایل صوتی است، اما متاسفانه فرصت نوشتن چنین کدی رو در حال حاضر ندارم... در هر حال، برای اینکه تابع فوق کار کنه، Reference به PresentationCore و WindowsBase رو به لیست Reference های پروژه اتون اضافه کرده و دو Namespace زیر رو نیز در بالای فایل تعیین کنید:

using System.Windows.Media;
using System.Windows;

موفق باشید.

Salar Ashgi
یک شنبه 17 مهر 1390, 15:00 عصر
گفتنی است که از کامپوننت TaglibSharp هم میتوانید استفاده کنید که برای مدیریت و بحث Tag Editing فایلهای صوتی
گزینه بسیار مناسبی است .

موفق باشید ./

Mahmoud Zaad
یک شنبه 17 مهر 1390, 16:17 عصر
سلام
کدی که آقای jeson_park گذاشتن رو به این صورت می تونید استفاده کنید.
دو تا dllی که توی فایل هست رو به پروژه اضافه کنید. طول فایل رو به صورت ثانیه میده.


OpenFileDialog ofd = newOpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
string file = ofd.FileName;
ShellFile so = ShellFile.FromFilePath(file);
double nanoseconds;
double.TryParse(so.Properties.System.Media.Duratio n.Value.ToString(), out nanoseconds);
if (nanoseconds > 0)
{
// double milliseconds = nanoseconds * 0.000001;

double seconds = Convert100NanosecondsToMilliseconds(nanoseconds) / 1000;
MessageBox.Show(seconds.ToString());
}
}