0

一度に 20 のビデオ ストリームを監視するアプリケーションを開発しています。JFrame と、JFrame 内に 20 個のボックス (JPanel など) を用意して、20 個のストリームを表示します。xuggler を使用してストリームを読み込んでデコードすることはできますが、これを Swing JPanel で表示するにはどうすればよいですか?

SourceDataLine でサウンドを再生できます。私の問題は、Swing コンポーネントで秒単位で 20 * 30 = 600 ビデオ フレームを表示する方法だけです。

また、xuggler は YUV420P ピクセル形式のデコードされたフレームを出力しますが、これを RGB に変換し、BufferedImage を作成して Swing コンポーネントに表示する際のオーバーヘッドはありますか?

これについて私を案内してください。Swing コンポーネントで一度に 20 個のビデオ ストリームを表示したいと考えています。

4

1 に答える 1

1

YUV420 ファイルを BufferedImage frames に変換する Google で検索したコードを次に示します。これは、必要なもののベースとして使用できます。

おそらく、PC でも 1 秒間に 600 のビデオ フレームを処理することはできません。1 秒あたりに変換できるビデオ フレームの数を確認し、残りのフレームを削除する必要があります。

おそらく、20 個のビデオ フィードを処理する最善の方法は、20 個のスレッドでビデオ フレームを取得し、ビデオ フレームを BufferedImage に変換し、その BufferedImage をイベント ディスパッチ スレッド (EDT) に渡して Swing が対応する JPanel に描画するようにすることです。スレッドが戻って次のビデオ フレームを取得すると、PC が処理する時間がなかったフレームが自動的に削除されます。

于 2013-04-03T09:11:04.607 に答える