4

Qt(5) でアプリケーションを開発しています。基本的に、QtMultimedia5 を使用して、同じビデオ ソースをウィンドウ内の 2 つの場所にレンダリングしようとしています。私は QML でやっていますが、C++ で解決策があれば喜んで実装します。

ウィンドウにビデオを表示するのに問題はありません。同じ QMediaSource を使用しようとすると問題が発生しますが、それを 2 つのウィンドウ/コントロールにレンダリングします。

私が見ているのは、QMediaService::requestControl が呼び出され、QVideoRendererControl オブジェクトを返すことです。次に、QVideoRendererControl::setSurface が呼び出され、ビデオをレンダリングするサーフェスを設定します。したがって、私が収集したことによると、QMediaService には、任意の時点でビデオをレンダリングする 1 つのサーフェスがあります。

2 つ以上のサーフェスにレンダリングするにはどうすればよいですか? 私のニーズにより適した他のクラスはありますか?

乾杯

4

1 に答える 1

7

まあ、これはかなり単純でしたが、私が期待した方法ではありませんでした。あなたはQtQuick2を愛さなければなりません。

したがって、QML コードに MediaPlayer ソースと VideoOutput アイテムがあります。

MediaPlayer {
    id: mp1
    source: "slide-1.wmv"
}
VideoOutput {
    id: tbltSlides
    anchors.fill: parent
    visible: true
    source: mp1
}

ShaderEffectSource を追加し、tbltSlides をそのソースとして設定するだけで済みました。とても簡単:

ShaderEffectSource {
    id: slides
    x: 600
    width:250
    height: 250
    sourceItem: tbltSlides
    visible: true
}

編集: 明らかに、最高の品質を得るには、tbltSlides アイテムを ShaderEffectSource よりも大きくして、シェーダーが元の画像を縮小するようにします。

于 2012-10-13T13:39:00.460 に答える