clove-pink
کاربر فعال
سلام
امروز یکی از دوستان یه سوالی راجع به اینکه اگه یه صدای wav تو library داشته باشیم و بخواهیم اون رو استخراج کنیم مطرح کرد.
شاید روش های مختلفی وجود داشته باشه،اما این روش هم خالی از لطف نیست.
با اجازه اساتید...
1-یک package به نام waveEncoder هست که عمل encode اطلاعات از byteArray رو به داده های صدا با فرمت wav انجام می ده،
که ما ازش استفاده کردیم.
2-صدایی که داخل library هست رو linkage می کنیم و یه اسم دلخواهی مثل مثلا mySound بهش می دیم.
3-نمونه ای از این کلاس صدامون ایجاد می کنیم و اطلاعات صداش رو می کشیم بیرون.برای این کار از متد extract استفاده می کنیم که مربوط به خود کلاس
صدا هست.
پارامتر اولش یه پارامتری از نوع byteArray می گیره و داده های صدا رو توش می ریزه.پارامتر دوم هم اندازه ای که می خواهیم ازش بخونیم مشخص می کنیم.
4-حالا تنها کافیه که این اطلاعات byteArray رو به یه نمونه از کلاس WaveEncoder بدیم و نتیجه رو به صورت فایل ذخیره کنیم.
5-نتیجه همه این کارها یه کلاس ساده ای هست که به نام ExtractSound ایجاد کردیم.
کافیه فقط بعد از اونکه اون فایل صدای مورد نظر رو در کتاخونه linkage کردیم یه نمونه ازش بسازیم و به این کلاس پاس بدیم.
توسط function مربوط به save می تونیم فایل نهایی رو save کنیم .
اگه تنها داده های byteArray مربوطه واسمون مهم باشه هم می تونیم از property به نام encodedData استفاده کنیم.
امروز یکی از دوستان یه سوالی راجع به اینکه اگه یه صدای wav تو library داشته باشیم و بخواهیم اون رو استخراج کنیم مطرح کرد.
شاید روش های مختلفی وجود داشته باشه،اما این روش هم خالی از لطف نیست.
با اجازه اساتید...
1-یک package به نام waveEncoder هست که عمل encode اطلاعات از byteArray رو به داده های صدا با فرمت wav انجام می ده،
که ما ازش استفاده کردیم.
2-صدایی که داخل library هست رو linkage می کنیم و یه اسم دلخواهی مثل مثلا mySound بهش می دیم.

3-نمونه ای از این کلاس صدامون ایجاد می کنیم و اطلاعات صداش رو می کشیم بیرون.برای این کار از متد extract استفاده می کنیم که مربوط به خود کلاس
صدا هست.
پارامتر اولش یه پارامتری از نوع byteArray می گیره و داده های صدا رو توش می ریزه.پارامتر دوم هم اندازه ای که می خواهیم ازش بخونیم مشخص می کنیم.
کد:
_sound=new mySound();
_sound.extract(dataArray, soundLength);
5-نتیجه همه این کارها یه کلاس ساده ای هست که به نام ExtractSound ایجاد کردیم.
کد:
package
{
/**
* ...
* @author ami
*/
import flash.media.Sound;
import flash.net.FileReference;
import flash.utils.ByteArray;
import org.bytearray.micrecorder.encoder.WaveEncoder;
public class ExtractSound
{
private var sooundEncoder:WaveEncoder;
private var dataArray:ByteArray;
private var _sound:Sound;
private var fileSave:FileReference;
private var soundLength:Number;
private var _rate:Number;
private var _channel:uint;
private var _bit:uint;
public function ExtractSound(sound:Sound,channel:uint=2,rate:Number=44100,bit:uint=32):void {
_sound = sound;
dataArray = new ByteArray();
sooundEncoder = new WaveEncoder();
_rate = rate;
_channel = channel;
_bit = bit;
convertSound();
}
////////////////////////
public function SaveSound():void {
fileSave = new FileReference();
fileSave.save(dataArray, 'sound.wav');
}
////////////////////////
private function convertSound():void {
soundLength = Math.floor((_sound.length / 1000) * _rate);
_sound.extract(dataArray, soundLength);
//encode data
dataArray = sooundEncoder.encode(dataArray, _channel, _bit, _rate);
}
////////////////////////
public function get encodedData():ByteArray {
return dataArray;
}
////////////////////////
}
}
توسط function مربوط به save می تونیم فایل نهایی رو save کنیم .
اگه تنها داده های byteArray مربوطه واسمون مهم باشه هم می تونیم از property به نام encodedData استفاده کنیم.
پیوست ها
آخرین ویرایش: