[B]
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
فضای نام های مورد نیاز:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
پخش صدا:
برای پخش و قطع صوت می توانید از چنین کدی استفاده کنید:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر کلاس MP3FileReader را به کلاسی مثلا WMAFileReader تبدیل کنید و یا WAVEFileReader تبدیل کنید می توانید این دو پسند را نیز پخش کنید.
در توضیحات کد نیز باید این طور بررسی کرد:
1- ابتدا کلاس MP3FileReader را به فایل مورد نظر متصل می کنیم. این کار مانند اتصال StreamReader به یک فایل متنی است.
2- با استفاده از WavChannel32 اطلاعات فایل را تبدیل به Wav 32bit می کنیم. چرا؟ چون کارت صدا فقط ساختار Wav را می شناسد. (در این باره می توانید درباره مدولاسیون PCM صوتی و مبدل های D/A مطالعه کنید.)
3- با استفاده از WavOut یک کانال صوتی برای پخش این Wav در اختیار می گیریم. که می تواند اطلاعات WavChannel را پخش کند.
4- برای STOP کردن ابتدا باید خروجی کانال صوتی که از سیستم عامل گرفته شده است آزاد کرد. یعنی STOP نیست. چرا که STOP تنها توقف خواندن از فایل و پخش است و ما نیاز داریم تا کل کانال گرفته شده آزاد شود. پس Dispose می کنیم.
5- در نهایت فایل خود را نیز که به صورت یک منبع تعریف شده است را نیز Dispose کرده تا کاربری آن آزاد شود.
تبدیل به بایت wav یا همان بایت های PCM:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
1- در این کد ابتدا بررسی می شود که پسوند فایل ورودی قابل قبول است یا خیر.
2- ConvertionStream برای تبدیل ساختار فایل ها به کار می رود. مثلا تبدیل wave با نرخ نمونه برداری 128K به 8K و یا تبدیل استریو به مونو و یا تبدیل واحد نمونه برداری مثلا از 32بیت به 8 بیت. معکوس هم می شود یعنی افزایشی این مواردی که گفتم. ولی تاثیری در کیفیت ندارد و کلا کار پوچی است! در آرگومان های Constructor های این کلاس این پارامتر ها وارد می شوند.
3- زمانی که instance کلاس ConvertionStream خوانده می شود(Read) عمل تبدیل صورت می گیرد و اینجا بایت های تبدیلی را برمی داریم و برمی گردانیم. به همین راحتی.
نکته: اکثر کلاس های Naudio باید Dispose شوند برای همین باید به این نکته دقت کرد و با استفاده از using و یا وراثت IDisposable برای اجبار وجود Dispose و یا نوشتن Dispose پس از اتمام کار و..... این عمل را انجام داد.
تبدیل بایت به Wav (معکوس بالا، تولید فایلwav)
دو راه وجود دارد (تا اینجایی که من می دانم!):
1- استفاده از خود بایت های تبدیلی. یعنی خروجی کلاسی مثل ConvertionStream . در واقع وراثت IWaveProvider را داشته باشد.
2- استفاده از آرایه ی بایتی.
در راه اول:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
dADR آدرس مقصد است. و conv نمونه کلاس ConvertionStream .
در راه دوم شیوه کاملا مشابه ساخت یک فایل متنی است با این تفاوت که کلاس مورد استفاده به جای مثلا StreamWriter کلاس WafeFileWriter است:
ابتدا format فایل خود را تعیین می کنیم، مثلا:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سپس بایت های خود را درونش می نویسیم و فایل را می بندیم. کاملا مشابه یک فایل متنی کد می نویسیم.
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید.