استخراج فایل صوتی wave از کتابخانه فایل fla

clove-pink

کاربر فعال
سلام
امروز یکی از دوستان یه سوالی راجع به اینکه اگه یه صدای wav تو library داشته باشیم و بخواهیم اون رو استخراج کنیم مطرح کرد.
شاید روش های مختلفی وجود داشته باشه،اما این روش هم خالی از لطف نیست.
با اجازه اساتید...

1-یک package به نام waveEncoder هست که عمل encode اطلاعات از byteArray رو به داده های صدا با فرمت wav انجام می ده،
که ما ازش استفاده کردیم.

2-صدایی که داخل library هست رو linkage می کنیم و یه اسم دلخواهی مثل مثلا mySound بهش می دیم.

1.jpg




3-نمونه ای از این کلاس صدامون ایجاد می کنیم و اطلاعات صداش رو می کشیم بیرون.برای این کار از متد extract استفاده می کنیم که مربوط به خود کلاس
صدا هست.
پارامتر اولش یه پارامتری از نوع byteArray می گیره و داده های صدا رو توش می ریزه.پارامتر دوم هم اندازه ای که می خواهیم ازش بخونیم مشخص می کنیم.

کد:
_sound=new mySound();
_sound.extract(dataArray, soundLength);
4-حالا تنها کافیه که این اطلاعات byteArray رو به یه نمونه از کلاس WaveEncoder بدیم و نتیجه رو به صورت فایل ذخیره کنیم.

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;
        }
        ////////////////////////
    }
    
}
کافیه فقط بعد از اونکه اون فایل صدای مورد نظر رو در کتاخونه linkage کردیم یه نمونه ازش بسازیم و به این کلاس پاس بدیم.
توسط function مربوط به save می تونیم فایل نهایی رو save کنیم .
اگه تنها داده های byteArray مربوطه واسمون مهم باشه هم می تونیم از property به نام encodedData استفاده کنیم.
 

پیوست ها

  • files.rar
    30.9 کیلوبایت · بازدیدها: 15
آخرین ویرایش:

جدیدترین ارسال ها

بالا