2013-07-19 16 views
7

QMLでアルファブレンディング効果をRGBAのビデオで取得しようとしています。QMLビデオアルファブレンディング/ビデオをQtクイックシーングラフにレンダリングする

ここで問題は、QtMultimediaによって提供されるビデオアイテムが実際にQtQuickシーンでオーバーレイウィンドウを開くため、他のQMLエレメントをVideoエレメントとアルファブレンドすることはできないと思います(私は、私は間違っていますが、私は解決策を見つけることができません)。

もう1つの方法は、updatePaintNodeメソッドでQQuickItemを継承するクラスでビデオを自分自身でレンダリングすることです。

  1. 誰もこれまでに見たことがありますか? QtMultimediaの背後にいる人がそれを達成できなかった場合でも可能ですか?

  2. MediaPlayer要素の背景を変更することはできますか。多分透明にするか、QMLで色を変えることができますか?

これまでのところ私はQAbstractVideoSurfaceとQVideoFrameを考えていたが、私はQSGにそれをレンダリングする方法が分からない、あるいはどのようGeometryNodeは、ビデオを探してください。

最善の解決策は、例えば他のQML要素でアルファブレンディングを取得するには、次のようになります。事前に

Rectangle { 
    width: 1024 
    height: 768 
    color: "yellow" 

    focus: true 

    Video { 
    id: video 
    anchors.fill: parent 
    source: "alpha-video.mov" 

    autoPlay: true 
    } 
} 

ありがとう!

答えて

2

私はいくつか試しましたが、最終的にQAbstractVideoSurfaceとQVideoFrameを使用するVideoWidgetというQtの例を使用し、MediaPlayerを使用してQMLからデータを読み込むためにフレームをQQuickPaintedItemにペイントしました。

QAbstractVideoSurfaceでサポートされているピクセル形式を記述するQListの上にARGB32を配置することが重要です。残念ながら、Qtロジックは最初のavailib形式をとるため、ネイティブVideo要素はアルファチャンネルを表示しません(ビデオはRGB32で再生されます。または、QtQuickシーングラフでペイントするのではなく、ネイティブエレメントのオーバーレイウィンドウを持つものです)。

関連する問題