2009-06-13 9 views
5

Estoy tratando de implementar una aplicación flexible que pueda grabar un video desde una cámara web y luego subirlo a un servidor.¿La grabación con cámara web con Flex requiere estrictamente un servidor de medios (FMS, Red5, Wowza, etc.)?

sólo he encontrado tutoriales y ejemplos que requieren un servidor de medios se ejecuta como Red5, Flash Media Server y Wowza y un flujo de RTMP abierto en el servidor.

Sin embargo, quiero saber si es posible grabar un video localmente y luego enviarlo al servidor con una simple solicitud HTTP.

¿Hay un tutorial en algún lugar que muestra cómo hacer esto? Estoy muy nuevo en el desarrollo de la flexión y me gustaría tener un procedimiento paso a paso: P

Respuesta

2

Hay una posibilidad:)

haXevideo es una especie FMS/Red5 del servidor desarrollada en haXe. La diferencia con esos es que es muy ligero y no necesita ningún tipo de instalación.

Entonces, lo que puede hacer es redistribuirlo junto con su aplicación para que pueda grabar audio y video localmente en un archivo FLV.

No estoy seguro de que recordar Screenweaver, pero la última versión fue desarrollado usando haXe y se llama SWHX. Además de SWHX, el suyo realmente ha creado un contenedor llamado HippoHX e HippoHX hace toda la configuración por usted. Si lo descargas, hay una muestra que hace exactamente lo que necesitas (grabar en un archivo local).

Una vez que haya grabado el archivo de la única parte izquierda sería la posibilidad de subir al servidor, pero eso no es gran cosa.

Pruébalo y si encuentras algún problema, llámame un correo electrónico o únete a la (bastante bastante) lista de correo para obtener ayuda.

Cualquier cosa hágamelo saber,

¡Salud!

Juan

2

Su fuera de suerte con éste. Va a necesitar un servidor de transmisión de algún tipo. Flex no tiene la capacidad de grabar video en la unidad local del usuario o en cualquier unidad.

0

para codificar un archivo FLV en un ByteArray, a empezar por crear instancias de ByteArrayFlvEncoder. El resto es similar a la última versión, pero ahora puede llamar a updateDurationMetadata() cuando haya terminado de actualizar la propiedad de duración en los metadatos. Finalmente, llame a kill() para preparar el objeto para la recolección de basura:?

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 

Y

para codificar un FLV directamente a un archivo local (en el aire), instanciar FileStreamFlvEncoder con una referencia de archivo, y abrir el FileStream expuesta, y luego cerrarlo cuando ya está todo hecho :?

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(); 

Para más detalle utiliza Debajo de referencia Enlace:

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

Cuestiones relacionadas