4

次のコードを取ります。

m_h264Settings = new H264VideoStreamSettings();
<some configuration in between>
m_ns.videoStreamSettings = m_h264Settings;

m_nsのvideoStreamSettingsがまだH264を使用しているかどうかを切り替えるための適切な方法は何ですか?

NetStreamsのプライマリドキュメント( http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html )でプロパティvideoStreamSettingsを検索しようとしましたが、Adobeはその詳細をスキップしたようです。 。NetStreamがH264を使用するか、アプリケーションの実行全体を通じて「デフォルト」を使用するかを効果的に制御する方法を知っていますが、NetStreamを交換したり何もしなくても、ボタンをクリックして前後に切り替えることができるようにしたいと考えています。そうでなければ、そのように夢中です。

これはどのように適切に行われますか?ありがとう!

4

1 に答える 1

1

あなたの質問を読むと、あなたの質問がいくつかあるように見えますが、もう少し明確にすることが役立つので、私はいくつかの仮定をして答えようとします:

質問1:

m_nsのvideoStreamSettingsがまだH264を使用しているかどうかを切り替えるための適切な方法は何ですか?

デフォルトでは、On2 VP6ビデオコーデックを使用して、F4VではなくFLV形式で公開することを意味しますか?

あなたのクエリは、公開されたストリームを再生している接続アプリケーションに関連していると思いますか?それ以外の場合は、変数を使用して、レコーディングアプリケーション自体の中でストリームに適用した設定を追跡できます。

公開されたストリームを取り込む別のアプリケーションがあり、ストリームがOn2VP6ではなくH264を使用して公開されているかどうかを判断しようとしていることを前提に実行します。まず、ファイルタイプが異なります。1つはFLVで、もう1つはF4Vです。次に、公開時にメタデータをストリームに割り当てることを利用できます。

protected function sendMetadata():void {
    var metaData:Object = new Object();
    metaData.codec = stream.videoStreamSettings.codec;
    metaData.profile = m_h264Settings.profile;
    metaData.level = m_h264Settings.level;
    metaData.hasMetadata = true;
    stream.send("@setDataFrame", "onMetaData", metaData);
}  

次に、再生アプリケーションで、onMetaData()コールバックを使用して、必要な情報を取得できます。

public function onMetaData(infoObject:Object):void {}

質問2:

NetStreamを交換したり、そのようなクレイジーなことをしたりせずに、ボタンをクリックして前後に切り替えることができるようにしたいと思います。

設定を切り替えて既存のストリームを非公開にし、カメラを再接続して新しいストリームを別のビデオ設定で公開するための再接続ルーチンをお勧めします。これにより、ストリームの整合性が維持されます。正直なところ、ストリームの非公開と再公開は、あなたが言うほどクレイジーではありません。

設定を切り替える必要がある場合は、デフォルトとして宣言する上記の仮定により、すでに公開されているストリームのファイル形式を変更できなくなります。

私は個人的に同じコーデックを使用せず 、ストリームの公開中に異なるH264VideoStreamSettingsを適用します。H264VideoStreamSettingsは、カメラをストリームに追加するときにのみ検証され、圧縮が開始されると適用されます。圧縮はストリームの公開から始まるので、すでに公開されているストリームで圧縮をいじり回そうとしていることを示唆するように切り替えることは私の理解です。結果として生じるストリームは、私の意見にあまりにも多くの変動をもたらすことになり、なぜこれが必要になるのかを理解するのに苦労します。ただし、私は修正される可能性があります。または、テスト目的である可能性があります。

これは完全にテストされていませんが、カメラインスタンスを作成し、videoStreamSettingsを適用し、カメラをストリームインスタンスにアタッチしてから、公開することができます。設定を切り替えるために公開している間に、カメラインスタンスをネットストリームから切り離すことができます。

stream.attachCamera(null);

次に、カメラの新しいインスタンスを作成し、新しいvideoStreamSettingsを適用して、最後に公開済みのストリームにアタッチします。

通常、ステータスイベント「NetStream.Publish.Start」を受信したときにメタデータを送信します。ストリームが公開されている限り、これを変更して、カメラをストリームに再接続するたびに再送信する必要があります。これがどのような影響を与えるかはわかりませんが、接続されているプレーヤーは、メタデータの変更に関するコールバックを受信する必要があります。

于 2012-11-21T12:08:03.727 に答える