Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   flvdecoder на AS3 и извлечение звука в формате mp3 (http://www.flasher.ru/forum/showthread.php?t=166046)

Genzo 29.08.2011 14:16

flvdecoder на AS3 и извлечение звука в формате mp3
 
Есть готовый класс декодинга flv для того ,чтобы звуковую волну оттуда вытащить?
Нашел только https://github.com/zoharbabin/FlvWizard , но он выцепляет данные в флв формате ,а не в мр3...

cleptoman 29.08.2011 14:44

а кто вам сказал, что у вас звук в FLV именно в MP3 ?

Genzo 29.08.2011 17:17

Цитата:

а кто вам сказал, что у вас звук в FLV именно в MP3 ?
я так с спецификации прочитал , но оказалось что можно обращаться к нему напрямую

Код AS3:

var flv:FLVSlicer = new FLVSlicer(e.target.data);
                this.ba = flv.sound;
                this.ba.position = 0;
 
                var nc:NetConnection = new NetConnection();
                nc.connect(null);
                // retrieve the FLV stream
                var ns:NetStream = new NetStream(nc);
                // put the NetStream class into Data Generation mode
                ns.play(null);
                import flash.net.NetStreamAppendBytesAction;
                // before appending new bytes, reset the position to the beginning
                ns.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN);
                // append the FLV video bytes
                ns.appendBytes( this.ba );
                ns.client = new Object();
                ns.client.onMetaData = function (e:Object){};
                //ns.play(null);
                var MyVideo:Video = new Video();
                playerWrapper.addChild(MyVideo);
                MyVideo.attachNetStream(ns);


Тогда вопрос другой , что из себя представляет массив флоатов звука?

Nooob 29.08.2011 19:01

Sound ByteArray -> mp3
http://code.google.com/p/tonfall/
https://github.com/kikko/Shine-MP3-E...eMP3Encoder.as

Код AS3:

import org.bytearray.micrecorder.encoder.*;
import org.as3wavsound.*;
import fr.kikko.lab.ShineMP3Encoder;
 
function encoderSoundMp3(inputBytes:ByteArray):void
{
        inputBytes.position = 0;
 
        var waveEncoder:IEncoder = new WaveEncoder();
        var outputBytes:ByteArray = waveEncoder.encode(inputBytes,2);
 
        var mp3Encoder = new ShineMP3Encoder(outputBytes);
        mp3Encoder.addEventListener(Event.COMPLETE, mp3EncodeComplete);
        mp3Encoder.start();
}
 
function mp3EncodeComplete(event:Event):void
{
        (e.target as ShineMP3Encoder).saveAs();
}


Genzo 29.08.2011 19:23

Покопался и нашел ,что кодек у меня не mp3 ,а Nellymoser. Есть вариант как мне его в Sound перегнать?

cleptoman 30.08.2011 13:15

при чем тут кодек? при чем тут массив флоатов звука, если вы байты FLV файла загоняете в нетСтрим?

Genzo 30.08.2011 17:59

Цитата:

если вы байты FLV файла загоняете в нетСтрим?
на самом деле нет ,это просто единственно рабочий вариант ,чтобы прослушать отдельно звук. Мне все это нужно ибо FMS хранит звук с микрофона в FLV , а мне нужно с ним работать на низком уровне (sound => byteArray).

Код AS3:

var s:Sound = new Sound();
                s.addEventListener( SampleDataEvent.SAMPLE_DATA , mixAudio );
                s.play();

Если записывать в SampleData , идут одни шумы , скорее всего это связано с кодеком.. негде не смог найти реализацию FLV => ByteArray of SoundSamples..

cleptoman 30.08.2011 19:07

на самом деле у вас будет несколько иная схема. примерно так:
парсим FLV, выдергиваем аудиотэги в нем, смотрим каким кодеком завернут звук (их там превиликое множество, если вы читали спеку по FLV), забираем каждый аудиокусок..декодером разворачиваем ваши куски в несжатый звук (это и будет по сути ваш набор сэмплов, которые уже можно тулить в Саунд по событию СэмплДата)..

оно вам надо? )

хотя Адоби может чего изобрело уже, но то мне неведомо.

Genzo 30.08.2011 19:26

Цитата:

оно вам надо? )
к сожалению да)
Цитата:

хотя Адоби может чего изобрело уже, но то мне неведомо.
к сожалению нет , смотрю в сторону реализации флв декодера из исходников ffmpeg , больше негде декодера Nellymoser ненашел..
Цитата:

(их там превиликое множество, если вы читали спеку по FLV),
В данном случае флв всегда Nellymoser ибо так он туда и заливается (через фмс и микрофон)

cleptoman 30.08.2011 19:32

Цитата:

В данном случае флв всегда Nellymoser ибо так он туда и заливается (через фмс и микрофон)
ну, я не о том что куда заливается, а о том, что там может быть что угодно...и да, если микрофон, то не обязательно Nellymoser..есть еще и SPEEX

Добавлено через 2 минуты
для FLV вам нужен не декодер(который, в общем своими силами накидать легко, учитывая тот факт, что вы знаете что именно будет в FLV), а парсер..а вот для звука в FLV, да, декодер


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

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