Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Запись звука (http://www.flasher.ru/forum/showthread.php?t=202546)

xrapa 22.07.2013 18:09

Запись звука
 
Здрасте, делаю приложение, где пользователь сможет составлять из сэмплов песню. Вопрос встал в том как записать эту песню.

xrapa 22.07.2013 20:22

нет с микрафона не пойдет, появятся дополнитильные шумы

NikolyA 23.07.2013 02:20

ну тут мало кто записывает свои голоса в своей собственной студии звукозаписи

GBee 23.07.2013 14:18

Я так понял автору не нужен микрофон, а из семплов набранное сохранить во внешний играбельный формат.

xrapa 23.07.2013 15:36

Цитата:

Сообщение от okouser (Сообщение 1141758)
Вы, наверное, не поняли.
Есть поддержка любых устройств (в том числе виртуальных), которые относятся к записи звука. Просто стандартный класс называется Microphone:

http://help.adobe.com/ru_RU/FlashPla...icrophone.html

Попробовал я с помощью микрафона записался лишь только шум.
Свойстом names высветился только один микрафон.
Как можно еще попробовать записать?

Добавлено через 2 минуты
Цитата:

Сообщение от okouser (Сообщение 1141786)
А, можно конечно.
Но фактически всё в этой задаче нужно кодировать самому.

Не понял вас, объясните как это сделать

xrapa 04.08.2013 00:55

если кому понадобиться то проблему решил с помощью этой ссылки
http://suzhiyam.wordpress.com/2011/0...cord-and-save/
(Karaoke)
но тут сохраняется в wav, а он много весит, может кто объяснить как сделать чтоб файл был mp3.
Код AS3:

package org.bytearray.micrecorder.encoder
{
        import flash.events.Event;
        import flash.utils.ByteArray;
        import flash.utils.Endian;
 
        import org.bytearray.micrecorder.IEncoder;
 
        public class WaveEncoder implements IEncoder
        {
                private static const RIFF:String = "RIFF";       
                private static const WAVE:String = "WAVE";       
                private static const FMT:String = "fmt ";       
                private static const DATA:String = "data";       
 
                private var _bytes:ByteArray = new ByteArray();
                private var _buffer:ByteArray = new ByteArray();
                private var _volume:Number;
 
                /**
                *
                * @param volume
                *
                */
               
                public function WaveEncoder( volume:Number=1 )
                {
                        _volume = volume;
                }
 
                /**
                *
                * @param samples
                * @param channels
                * @param bits
                * @param rate
                * @return
                *
                */
               
                public function encode( samples:ByteArray, channels:int=2, bits:int=16, rate:int=44100 ):ByteArray
                {
                        var data:ByteArray = create( samples );
 
                        _bytes.length = 0;
                        _bytes.endian = Endian.LITTLE_ENDIAN;
 
                        _bytes.writeUTFBytes( WaveEncoder.RIFF );
                        _bytes.writeInt( uint( data.length + 44 ) );
                        _bytes.writeUTFBytes( WaveEncoder.WAVE );
                        _bytes.writeUTFBytes( WaveEncoder.FMT );
                        _bytes.writeInt( uint( 16 ) );
                        _bytes.writeShort( uint( 1 ) );
                        _bytes.writeShort( channels );
                        _bytes.writeInt( rate );
                        _bytes.writeInt( uint( rate * channels * ( bits >> 3 ) ) );
                        _bytes.writeShort( uint( channels * ( bits >> 3 ) ) );
                        _bytes.writeShort( bits );
                        _bytes.writeUTFBytes( WaveEncoder.DATA );
                        _bytes.writeInt( data.length );
                        _bytes.writeBytes( data );
                        _bytes.position = 0;
 
                        return _bytes;
                }
 
                private function create( bytes:ByteArray ):ByteArray
                {
                        _buffer.endian = Endian.LITTLE_ENDIAN;
                        _buffer.length = 0;
                        bytes.position = 0;
 
                        while( bytes.bytesAvailable )
                                _buffer.writeShort( bytes.readFloat() * (0x7fff * _volume) );
                        return _buffer;
                }
        }
}


cleptoman 04.08.2013 05:02

поищите kikko Shine MP3 Encoder. вероятно,чуть ли не единственная либа для кодирования в мп3, но с ограничениями

tsarapkabel 05.08.2013 18:45

Alchemy библиотека.


Часовой пояс GMT +4, время: 05:34.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.