私が取り組んでいる Flash アプリの機能の 1 つは、Web カメラを他のユーザーにストリーミングできることです。Flash に組み込まれている Web カメラのサポートを使用して、FMS 経由で送信しているだけです。
より高品質のビデオを求める声もありましたが、Flash で可能な最高の品質設定 (品質を 100% に設定) を既に使用しています。
私の理解では、新しいフラッシュ プレーヤーでは、ビデオの MPEG-4 エンコーディングのサポートが追加されました。MP4 エンコーディングと FLV エンコーディングのビデオ品質を比較するために、簡単なテスト Flex アプリを作成しました。ただし、MP4 をまったく動作させることができないようです。
Flex のドキュメントによると、FLV の代わりに MP4 を使用するために必要な唯一のことは、publish を呼び出すときにストリームの名前に「mp4:」を追加することです。
プレフィックス mp4: を付けた文字列としてストリーム名を指定します。ファイル名拡張子を付けても付けなくてもかまいません。プレフィックスは、ファイルに MPEG-4 Part 14 コンテナー形式内の H.264 でエンコードされたビデオと AAC でエンコードされたオーディオが含まれていることをサーバーに示します。
これを試しても何も起こりません。クライアント側でイベントが発生したり、例外がスローされたりすることはありません。また、サーバー側でログに記録しても、ストリームが開始されていることは示されません。
関連するコードは次のとおりです。
// These are all defined and created within the class.
private var nc:NetConnection;
private var sharing:Boolean;
private var pubStream:NetStream;
private var format:String;
private var streamName:String;
private var camera:Camera;
// called when the user clicks the start button
private function startSharing():void {
if (!nc.connected) {
return;
}
if (sharing) { return; }
if(pubStream == null) {
pubStream = new NetStream(nc);
pubStream.attachCamera(camera);
}
startPublish();
sharing = true;
}
private function startPublish():void {
var name:String;
if (this.format == "mp4") {
name = "mp4:" + streamName;
} else {
name = streamName;
}
//pubStream.publish(name, "live");
pubStream.publish(name, "record");
}