SajjadKhati
کاربر فعال <A href="http://forum.majidonline.com/f
بر اساس زمانی که الان هست کار انجام میدهند، نه اینکه ترتیبی داده رو با یک نرخ مشخص بخونند. شما وقتی در حالت ترتیبی هر بار N نمونه به جلو پیشرفت می کنید کاری به زمان ندارید، چشم بسته دارید بر اساس یک ترتیبی عمل می کنید که مستقل از زمانه. وقتی در زمان 12.4 هستید باید نمونه ای رو بخونید که در زمان 12.4 بهش میرسه. با زمان فعلی کار کنید، کاری نداشته باشید که چند تا نمونه از دفعه جلوتر رفتید. ببینید الان چقدر زمان از شروع پخش گذشته و نوبت چه نمونه ای شده.
ممنون استاد علی
آها
یعنی هر بار نسبت به زمان شروع ، محاسبه کنم ؛ نه نسبت به دفعه ی قبل اش
ممنون
دقیق؟ هیچ مشخصات دقیقی از پارامتر های دخیل در این مورد رو ندارید که بخواهید رویش زمان دقیقی محاسبه کنید. در ضمن زمان لازم خوندن هدر فایل اهمیت خاصی نداره، وقتی شما یک فایل mp3 رو باز می کنید مدتی طول میکشه تا Player باز بشه و فایل خونده بشه و بعد تازه پخش اش شروع بشه، نه زمان مشخص و ثابتیه و نه اهمیتی داره. خیلی ساده منتظر میشید تا پخش شروع بشه. تازه شما که هم متد مناسب برای Load کردن رو دارید و هم رخداد لازم برای فهمیدن اینکه کی Loading به پایان رسید.
ولی قبل از کد play ، کد load (در همون نخ . یعنی loadAsync نه) را اضافه کردم ولی اصلا منتظر خوندن هدر فایل نمیشه (یا دوباره در کد play ، هدر فایل خونده میشه یا کلا یه مشکلی هست که نمیدونم) :
کد:
wavPlayer.Load();
wavPlayer.Play();
اگه منظورتون رویداد LoadCompleted هست ، این رویداد ، بعد ازتمام شدن هدر فایل و زمان خوندن دیتای فایل که اجرا نمیشه (زمان خوندن هدر فایل اجرا میشه) . تازه اونم در شی SoundPlayer اگه پروپرتی Stream شو مقدار بدیم
شما که واقعا کاری به پخش صوت ندارید که بگید صوت تموم شد پس باید یه اتفاقی بیافته، پخش صوت جدا است، پیمایش داده شما جدا. یک داده صوتی رو کند تر از سرعت پخشش پیمایش می کنید و رویش مانور میدید. میتوانید اونقدر کند اینکار رو انجام بدید که خیلی بیشتر طول بکشه ولی این ربطی به زمان عادی پخش که نداره، کند میخونیدش، همین.
نه کند پخش نمیشد
کل زمان آهنگم 406 ثانیه هست
اطلاعات شو که داده بودم :
مشخصات آهنگ ، فرمت wav هه و sample rate 44100 hz و bit depth 16 bite و 2 کانال هه هست و حجم کل فایل 71,769,100 بایت هست به مدت 6 دقیقه و 46 ثانیه (کلا 406 ثانیه)
سودوکدش رو این جوری تحلیل کردم که بیت ریت برای 1 ثانیه اش (1000 میلی ثانیه) میشه :
44,100 * 2 * 2 = 176,400 بایت بر ثانیه
که میشه همون 7056 بایت در هر 40 میلی ثانیه
بنابراین 176,400 * 406 میشه 71,618,400 بایت که حجم کل فایل ام هم 71,769,100 بایت هست که تقریبا 150 کیلوبایت اختلاف شون هم برای هدرش هست و بلکه هم بخاطر میلی ثانیه های اضافی که در آهنگ محاسبه نمیشه
آخرین ویرایش: