2009-06-13 24 views
5

私はWebカメラからビデオを録画してサーバーにアップロードできるフレックスアプリを実装しようとしています。Flexで録画するWebカメラには、メディアサーバー(FMS、Red5、Wowzaなど)が厳密に必要ですか?

Red5、Flash Media Server、Wowzaなどのメディアサーバー、およびサーバーへのオープンrtmpストリームが必要なチュートリアルとサンプルが見つかりました。

しかし、ビデオをローカルで録画して、簡単なHTTPリクエストでサーバーに送信できるかどうかを知りたいと思います。

これを行う方法を示すチュートリアルはありますか?私はフレックス開発に本当に新しいですし、ステップ手順でステップしたいと思っています:P

答えて

2

チャンスがあります。)

haXevideohaXeで開発されたサーバーのFMS/Red5のソートです。それらとの違いは、それは非常に軽量であり、それはどんな種類のインストールも必要ないということです。

あなたのアプリと一緒に再配布すれば、実際にオーディオとビデオをローカルでFLVファイルに記録できます。

スクリーンウィーバーは覚えていませんが、最新のバージョンはhaXeを使用して開発されており、SWHXと呼ばれています。 SWHXの上には、実際にHippoHXと呼ばれるラッパーが組み込まれており、HippoHXがすべての設定を行います。ダウンロードした場合は、必要なものを正確に実行する(ローカルファイルに記録する)サンプルがあります。

ファイルを録画したら、残ったビットだけがサーバーにアップロードされますが、それは大きな問題ではありません。

問題が見つかった場合は、私にメールを送ってもらうか、(むしろかなり)メーリングリストに参加してください。

何かお知らせください、

乾杯!フアン

2

あなたはこれで不運です。あなたは何らかのストリーミングサーバーが必要になります。 Flexには、ユーザーのローカルドライブやそのドライブにビデオを記録する機能はありません。

0

は、ByteArrayのにFLVをエンコードByteArrayFlvEncoderをインスタンス化することによって開始します。残りは前バージョンと似ていますが、メタデータ内のdurationプロパティの更新が完了したら、updateDurationMetadata()を呼び出すことができます。最後に、kill()を呼び出してガベージコレクションのオブジェクトを準備します。

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 

そして

、(AIRで)ローカルファイルに直接FLVをエンコードするファイルを参照してFileStreamFlvEncoderをインスタンス化し、露出のFileStreamを開き、その後、あなたがすべて完了したら、それを閉じるには:?

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

:参考リンク以下でより詳細用の

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

関連する問題