2011-10-24 2 views
-1

В настоящее время я работаю над проектом - онлайн-системой образования, и мне нужно, чтобы шпильки представились в 30-секундном аудиоклипе.Как захватить аудио из браузера и сохранить его на сервере?

Мне нужно реализовать его с помощью Adobe Flash. Проблема в том, что я понятия не имею, как дуэт Flash + Red5 работает вместе. Есть не так много полезных ресурсов в Интернете, по крайней мере для меня, так как я новичок в Flash. (Я делаю в основном материал PHP.)

1) Когда вы подключаетесь к серверу, как вы его записываете аудио с флэш-клиента?

2) Через 30 секунд как остановить запись и сохранить файл в определенной папке на сервере?

3) Как перенести этот файл в HTTP-папку сервера, чтобы после этого получить доступ к нему с домашней страницы?

Обратите внимание, что я новичок во flash и Red5, поэтому мне действительно нужно подробное объяснение от вас, ребята.

Большое спасибо!

ответ

1

Я буду стараться, чтобы ответить четко.

1) Когда вы подключаетесь к серверу, как вы его записываете аудио с флэш-клиента?

Прежде всего, вам необходимо знать соединение между протоколом сервера и клиента, например RTMP. Поэтому на стороне сервера нам нужно настроить наш адрес, например, rtmp://127.0.0.1/demoServer (в red5 demoServer - ваше имя приложения). Далее в сторону флэш, мы можем подключить сервер с NetConnection:

import flash.net.NetConnection; 
    public var nc:NetConnection; 
    nc = new NetConnection(); 
    nc.connect("rtmp://127.0.0.1/demoServer"); 

Я могу определенно сказать, 80% работают в сторону флэш-клиента. Для того, чтобы захватить голос, нам нужна настройка нашего Microphone:

import flash.media.Microphone; 
    public var mic:Microphone; 
    mic = Microphone.getMicrophone(); 

После этих нам нужна труба для транспортировки голоса захватил микрофон формы.К счастью, у нас есть NetStream:

import flash.net.NetStream; 
    private var stream:NetStream; 
    var sm:NetStream=new NetStream(nc); 
    stream.attachAudio(mic); 

соединение так же, как строительство моста, так что поток может нести форму вещи клиента к серверу. OK, последнее, что горе нужно сделать, это publish:

stream.publish("some name","record"); 

Теперь вы можете увидеть файл .flv с именем some name на стороне сервера. Этот файл станет больше, если вы открыли микрофон.

2) Через 30 секунд как остановить запись и сохранить файл в определенной папке на сервере?

Создайте таймер 30 секунд, который начинается при записи. Закрытие потока Когда тайм-аут:

import flash.utils.Timer; 
    t = new Timer(1000, 30); 
    t.addEventListener(TimerEvent.TIMER_COMPLETE, timerComplete); 
    private function timerComplete(event:TimerEvent):void{ 
     //close the stream 
     stream.close(); 
     mic.setSilenceLevel(0); 
    } 

По умолчанию red5 сохранит файл в \webapps\dictRed5Server\streams. Если вы хотите изменить это, отметьте это guide.

3) Как перенести этот файл в HTTP-папку сервера, чтобы после этого получить доступ к нему с домашней страницы?

Red5 может работать вместе с apache tomcat, и вы можете использовать проигрыватель flv для воспроизведения этих записей.

Надеюсь, что над фрагментами могут помочь вам. Я предлагаю вам, что можно установить red5 и запустить некоторые демо и Google, что вы не понимаете.

+0

Большое вам спасибо! Это было очень полезно. – NoobDev4iPhone

0

Чувак хорошая часть, что вы знаете все ключевые слова - red5 особенно. Плохая часть заключается в том, что вам нужно много читать, чтобы настроить и заставить ее работать.

Лучшая часть заключается в том, что вы будете так счастливы и гордитесь собой. , Как только вы его завершите. , Ты понятия не имеешь.

Продолжайте движение. Не забудьте опубликовать свои результаты.

+0

Это точно. Не могли бы вы хотя бы дать мне несколько советов о том, как это сделать? – NoobDev4iPhone

+0

С вашего начального поста звучит так, как будто вы знаете, что делаете, я прав. Приобретите документы red5 и exqmples и играйте с ними. На самом деле у них есть демоверсия, которая записывает звук из браузера. – Deian

0

Если вы можете настроить таргетинг на Flash Player 10.1 или выше, вы можете вообще избежать FMS или Red5. Вы можете получить доступ к необработанным данным PCM, а затем загрузить его в скрипт, который хранит его для вас. Либо ваш SWF, либо скрипт должен будет сохранить эти данные в виде звукового файла, например WAV или MP3.

проверить эту статью на Adobe Developer Connection, это делает большинство из того, что вы хотите минус UPLOADING бит: http://www.adobe.com/devnet/air/flex/articles/using_mic_api.html

0

Как указано выше, если вы нацеливаете FP 10.1 или выше, вы можете избежать необходимости иметь специальный сервер и просто использовать фоновый сервер, к которому вы привыкли.

В AS3 все, что вам нужно сделать, это сохранить записанные данные PCM в ByteArray, а затем отправить ByteArray на ваш сервер; однако, если вы хотите сжать его, чтобы сэкономить полосу пропускания, есть тонна библиотек, которые могут вам помочь.

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

http://wonderfl.net/c/zE8I

Я пытался сохранить его в качестве основных, как это возможно, и комментировать, насколько я мог; но если вам нужна помощь, вы всегда можете спросить.

Что касается отправки ByteArray на сервер:

Sending ByteArray through as3 to PHP

Надеется, что это помогает.

Смежные вопросы