![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Modus ponens
|
Ну, ситуация вроде как немного поменялась =) Кто-нибудь пробовал/кому-нибудь попадались какие-нибудь статьи на тему Sound -> ByteArray -> WAVE? Ну и если есть просто общая информация по поводу того, как собстенно Флеш проигрывает и "видит" звуки - тоже интересно =) Zinc просьба сразу не учитывать, не потому что, а потому что уже учтен, как вариант (есть один маленький недостаток - максимальный сампрейт немного не дотягивает, надо бы 48Кгц, а так вполне устроил бы) =)
__________________
Hell is the possibility of sanity |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Собственно, на данный момент под девяткой единственный метод генерации звука — создание небольшого wav-файла в несколько семплов, обернутого в swf и загруженным через Loader.
|
|
|||||
|
Modus ponens
|
Не, мне нужно наоборот =) wave/mp3 уже существует, а мне нужно его просто перезаписать (возможно, внеся изменения по дороге - продвинутая стадия). 10-ка тоже вполне приемлимый вариант, я даж скорее на нее и рассчитываю - где-то попадалась инфа, что данные о звуке можно получить в виде массива байтов (вот ток на что этот массив будет похож - я, ессно, не знаю, но если это что-то легко трансформируещееся в RIFF / AIFF, то можно было бы попробывать сваять из этого новый WAVE, ну а дальше - по той же схеме, что и с картинками - послать серверу на хранение =)
__________________
Hell is the possibility of sanity |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
WAVE проблем нет, а для mp3 тебе нужен декодер и кодер, соответственно. Таковых на AS3 я не видел.
|
|
|||||
|
Modus ponens
|
mp3 и не нужно =) я просто еще даж не начинал особенно поиски в эту сторону, но если есть авторитетное мнение, что нет проблем - завтра же пойду убеждать начальство в реализуемости %) еще бы, конечно, какой-нибудь примерчик в тему найти...
__________________
Hell is the possibility of sanity |
|
|||||
|
на счет реализации во флеше сказать не могу. но недавно имел дело с wav форматом и могу сказать что он очень прост в реализации.
есть заголовок, есть массив значений амплитуд.
__________________
я могу стать всем, если только захочу |
|
|||||
|
Modus ponens
|
Ну, я где-то так и надеялся в душе, что не должно быть очень сложно %) Но пока что загвоздка оказалась немного в другом - не могу понять как флеш описывает звук...
package encoding {
/**
* ...
* @author wvxvw
*/
import flash.media.SoundMixer;
import flash.utils.ByteArray;
import flash.utils.Endian;
private static var _dataSize:int = 0;
private static var _header:ByteArray;
private static function writeHeader():void
{
_header = new ByteArray();
_header.endian = Endian.LITTLE_ENDIAN;
_header.writeMultiByte('RIFF', 'us-ascii');
_header.writeInt(0); // size! should redefine!!!!!!!!
_header.writeMultiByte('WAVE', 'us-ascii');
_header.writeMultiByte('fmt ', 'us-ascii');
_header.writeInt(40); //fmt chunk size may be different!
_header.writeByte(0xFF);
_header.writeByte(0xFE); // WAVE_FORMAT_EXTENSIBLE may be different!
_header.writeByte(0x02);
_header.writeByte(0x00); // channels
_header.writeInt(44100); // sample rate : 44100 Hz
_header.writeInt(352800); // bytes per second
_header.writeByte(0x08);
_header.writeByte(0x00); // bytes per block
_header.writeByte(0x20);
_header.writeByte(0x00); // bytes per sample
_header.writeByte(0x0D);
_header.writeByte(0x00); // additional info
_header.writeByte(0x20);
_header.writeByte(0x00); // valid bytes per sample
_header.writeByte(0x04);
_header.writeByte(0x00);
_header.writeByte(0x00);
_header.writeByte(0x00);// bytes per channel
_header.writeByte(0x01);
_header.writeByte(0x00);
_header.writeByte(0x00);
_header.writeByte(0x00);
_header.writeByte(0x00);
_header.writeByte(0x00);
_header.writeByte(0x10);
_header.writeByte(0x00);
_header.writeByte(0x80);
_header.writeByte(0x00);
_header.writeByte(0x00);
_header.writeByte(0xAA);
_header.writeByte(0x00);
_header.writeByte(0x38);
_header.writeByte(0x9B);
_header.writeByte(0x71); // subformat
_header.writeMultiByte('fact', 'us-ascii');
_header.writeInt(4);
_header.writeInt(0);
_header.writeMultiByte('data', 'us-ascii');
_header.writeInt(0); //data size! should redefine!!!!!!!!
}
public static function encode():ByteArray
{
return _header;
}
public static function append(b:ByteArray):void
{
if (!_header) writeHeader();
_dataSize += b.length;
_header.position = 3;
_header.writeInt(_header.length);
_header.position = 79;
_header.writeInt(_dataSize);
_header.position = _header.length - 1;
_header.writeBytes(b);
}
}
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 17.06.2008 в 20:33. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
А что мешает посмотреть мой WAV Player?
![]() |
|
|||||
|
Modus ponens
|
Ничего, а где смотреть? %)
о, все, пасиб, смотрю =) Ха, кто бы мог подумать... единственное, спрятан SWFFormat... %) и не совсем понятно, как wave в итоге вставляется в SWF, но как-то не верится, что кто-то его в MP3 перекодировал Почитал коменты... собственно, есть некоторые мысли по поводу того, как можно снять амплитуду (Timer сразу отпадает - он просто никогда в жизни не успеет... интервал между снимками меньше 1 миллисекунды, а таймер так быстро не умеет реагировать, да и вообще при значениях меньше 30 миллисекунд вудает погрешность около 10 миллисекунд... что как бы вообще ни в какие ворота...) Но можно пытаться в цикле проверять одинаковость снимков (если эта операция займет меньше 1/44 миллисекунды), что тоже сомнительно... тогда делать в несколько проходов... но опять же точность... Вобщем, либо такой вариант, либо пытаться парсить и перезаписывать сам WAVE... тут тож не совсем понятно... ну, скажем, громче-тише еще можно придумать как посчитать... а вот наложения... я такое точно не потяну =(
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 18.06.2008 в 01:30. |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:45. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| bytearray , export sound , samplerate , wave |
|
|