2

によると:

AVFoundationを使用して、ダウンロードしたビデオフレームをOpenGL ESテクスチャにストリーミングできますか?

リモートメディアからフレームを取得することは可能です。しかし、私は提案を試みてきましたが、の使用に関するドキュメントAVPlayerItemVideoOutputはあまり明確ではありません。インスタンスoutputMediaDataWillChangeへのポインタを持つデリゲートメソッドがあるようです。AVPlayerItemVideoOutput

間違った仮定をしているのかもしれませんが、このデリゲートメソッドは、データが変更されるたびに呼び出されますか??を取得するのに適した場所CVPixelBufferです。

4

3 に答える 3

0

このライブラリは任意のストリーミング サーバーに接続し、生データで画像を取得できるため、ffmpeg ライブラリを使用する必要があると思います。その後、その写真で何でもできます。

于 2013-02-28T22:16:35.880 に答える
0

おそらくそうではありません。メディア データが更新されたデリゲート コールバックを取得するスレッドではなく、GL がすべての作業を行っているのと同じスレッドまたは共有コンテキストを持つ他のスレッドでテクスチャを更新する必要があります。このコールバックでブール値を true に設定して、GL スレッドにバッファーの準備ができており、それを収集する必要があることを通知できます。別の方法として、GL スレッドで実行される「ターゲット セレクター ペア」をプッシュしてデータを収集することもできます (「performSelectorOnMainThread」のようなシステム) が、メディアの更新が行われた場合に、そのようなペアがスタックに既に存在するかどうかを自問する必要があります。データをより速く変更すると、GL が更新されます...そのデリゲートを使用して正しく処理しないと、テクスチャがまったく更新されないか、GL スレッドがブロックされます。

于 2012-11-23T09:28:38.403 に答える
0

メソッドは、通常、アプリを一時停止するときなどに、outputMediaDataWillChange登録後にのみ呼び出されます。requestNotificationOfMediaDataChangeWithAdvanceInterval

ディスプレイ リンク フックでピクセル バッファにアクセスできます。hasNewPixelBufferForItemTimeApple のサンプルでandを探しcopyPixelBufferForItemTimeます (OS X 用ですが、基本的に iOS も同じです。

于 2012-11-23T09:44:59.967 に答える