2009-06-13 20 views
5

Próbuję zaimplementować aplikację Flex, która będzie w stanie zarejestrować wideo z kamery internetowej, a następnie przesłać je na serwer.Czy nagrywanie z kamerą Flex wymaga serwera mediów (FMS, Red5, Wowza itp.)?

Znalazłem tylko samouczki i przykłady, które wymagają serwera multimediów, takiego jak Red5, Flash Media Server i Wowza oraz otwarty strumień rtmp na serwerze.

Chciałbym jednak wiedzieć, czy można nagrać film lokalnie, a następnie przesłać go na serwer za pomocą prostego żądania HTTP.

Czy jest gdzieś poradnik, który pokazuje, jak to zrobić? Jestem naprawdę nowy w rozwoju fleksów i chciałbym mieć krok po kroku: P

Odpowiedz

2

Jest szansa:)

haXevideo jest FMS/Red5 rodzaj serwera opracowany w haXe. Różnica polega na tym, że jest bardzo lekka i nie wymaga żadnej instalacji.

Możesz więc rozprowadzać je równolegle z aplikacją, aby rzeczywiście móc nagrywać dźwięk i wideo lokalnie w pliku FLV.

Nie jesteś pewien, czy pamiętasz Screenweaver, ale najnowsza wersja została opracowana przy użyciu haXe i nazywa się SWHX. Oprócz SWHX, Twój naprawdę zbudował opakowanie o nazwie HippoHX, a HippoHX robi wszystko za Ciebie. Jeśli go pobierzesz, istnieje próbka, która wykonuje dokładnie to, czego potrzebujesz (zapisz w pliku lokalnym).

Po nagraniu pliku pozostały tylko pozostały bit będzie przesyłany na serwer, ale to nic wielkiego.

Daj sobie spokój, a jeśli znajdziesz jakieś problemy, wyślij mi e-maila lub dołącz do (raczej całkiem) listy mailingowej, by uzyskać pomoc.

Wszystko daj mi znać,

Pozdrawiam!

Juan

2

Twoje szczęście z tym. Będziesz potrzebował jakiegoś serwera strumieniowego. Flex nie ma możliwości nagrywania wideo na dysk lokalny użytkownika lub dowolny dysk w tej sprawie.

0

Aby zakodować FLV ByteArray, zacznij od instancji ByteArrayFlvEncoder. Reszta jest podobna do ostatniej wersji, ale możesz teraz wywołać updateDurationMetadata(), gdy skończysz aktualizować właściwość duration w metadanych. Na koniec wywołaj kill(), aby przygotować obiekt do czyszczenia pamięci:?

var baFlvEncoder:ByteArrayFlvEncoder = new ByteArrayFlvEncoder(myFrameRate); 

baFlvEncoder.setVideoProperties(myWidth, myHeight, VideoPayloadMakerAlchemy); 
// (Omit the 3rd argument to NOT use Alchemy if you're targeting Flash 9) 
baFlvEncoder.setAudioProperties(BaseFlvEncoder.SAMPLERATE_44KHZ, true, false, true); 

baFlvEncoder.start(); 

baFlvEncoder.addFrame(myBitmapData, myAudioByteArray); 
baFlvEncoder.addFrame(myBitmapData, myAudioByteArray); // etc. 

baFlvEncoder.updateDurationMetadata(); 

saveOutMyFileUsingFileReference(baFlvEncoder.byteArray); 

baFlvEncoder.kill(); // for garbage collection 

I

Aby zakodować FLV bezpośrednio do pliku lokalnego (w powietrzu), wystąpienia FileStreamFlvEncoder z odniesieniem pliku i otworzyć odsłonięta FileStream, a następnie zamknij go, gdy skończysz :?

var myFile:File = File.documentsDirectory.resolvePath("video.flv"); 
var fsFlvEncoder:FileStreamFlvEncoder = new FileStreamFlvEncoder(myFile, myFrameRate); 
fsFlvEncoder.fileStream.openAsync(myFile, FileMode.UPDATE); 

fsFlvEncoder.setVideoProperties(myWidth, myHeight, VideoPayloadMakerAlchemy); 
fsFlvEncoder.setAudioProperties(BaseFlvEncoder.SAMPLERATE_44KHZ, true, false, true); 

fsFlvEncoder.start(); 

fsFlvEncoder.addFrame(myBitmapData, myAudioByteArray); 
fsFlvEncoder.addFrame(myBitmapData, myAudioByteArray); // etc. 

fsFlvEncoder.updateDurationMetadata(); 

fsFlvEncoder.fileStream.close(); 

fsFlvEncoder.kill(); 

więcej szczegółów skorzystać z poniższego LINK:

http://www.zeropointnine.com/blog/updated-flv-encoder-alchem/

Powiązane problemy