2009-06-13 12 views
5

J'essaie de mettre en œuvre une application flexible qui sera capable d'enregistrer une vidéo à partir d'une webcam et ensuite le télécharger sur un serveur.L'enregistrement de webcam avec Flex nécessite-t-il strictement un serveur multimédia (FMS, Red5, Wowza, etc.)?

J'ai seulement trouvé des tutoriels et des exemples qui nécessitent un serveur de médias en cours d'exécution tels que Red5, Flash Media Server et Wowza et un flux rtmp ouvert sur le serveur.

Cependant, je veux savoir s'il est possible d'enregistrer une vidéo localement puis de la soumettre au serveur avec une simple requête HTTP.

Y at-il un tutoriel quelque part qui montre comment faire cela? Je suis vraiment nouveau dans le développement de flex et aimerais avoir une procédure étape par étape: P

Répondre

2

Il y a une chance:)

haXevideo est une sorte FMS/Red5 du serveur développé en haXe. La différence avec ceux-ci est qu'il est très léger et qu'il n'a pas besoin d'installation. Par conséquent, vous pouvez le redistribuer à côté de votre application afin de pouvoir enregistrer l'audio et la vidéo localement dans un fichier FLV.

Vous n'êtes pas sûr de vous souvenir de Screenweaver, mais la dernière version a été développée avec haXe et s'appelle SWHX. En plus de SWHX, vous avez vraiment construit un emballage appelé HippoHX et HippoHX fait tout le montage pour vous. Si vous le téléchargez, un exemple fait exactement ce dont vous avez besoin (enregistrer dans un fichier local).

Une fois que vous avez enregistré le fichier, il ne reste plus que le téléchargement vers le serveur, mais ce n'est pas grave.

Essayez-le et si vous avez des problèmes, envoyez-moi un e-mail ou joignez-vous à la liste de diffusion (plutôt calme) pour obtenir de l'aide.

Tout laissez-moi savoir,

Cheers!

Juan

2

Votre chance avec celui-ci. Vous allez avoir besoin d'un serveur de streaming en quelque sorte. Flex n'a pas les capacités pour enregistrer de la vidéo sur le lecteur local des utilisateurs ou n'importe quel lecteur d'ailleurs.

0

Pour encoder un fichier FLV à un ByteArray, commencez par instanciation ByteArrayFlvEncoder. Le reste est similaire à la dernière version, mais vous pouvez maintenant appeler updateDurationMetadata() lorsque vous avez terminé de mettre à jour la propriété duration dans les métadonnées. Enfin, appelez kill() pour préparer l'objet à la récupération de place:?

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 

Et

Pour encoder un fichier FLV directement dans un fichier local (dans l'air), instancier FileStreamFlvEncoder avec une référence de fichier, et ouvrir le FileStream exposé, puis fermez-le quand vous êtes tous fait :?

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

Pour une utilisation plus détaillée ci-dessous Référence Lien:

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