2013-07-19 83 views
7

我試圖在RGBA中用QML獲得alpha混合效果。QML視頻alpha混合/渲染視頻到Qt快速場景圖

現在的問題是,QtMultimedia提供的視頻項目在QtQuick場景中打開了一個覆蓋窗口,所以我不認爲有可能將其他QML元素與視頻元素進行α混合(我當然希望我'米錯了,但我找不到解決方案)。

因此,另一種方法是在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

我嘗試了一些東西,但最終我使用了QT示例,名爲VideoWidget,它使用QAbstractVideoSurface和QVideoFrame,並使用MediaPlayer從QML中加載數據,將這些幀繪製在QQuickPaintedItem中。

將ARGB32放在描述QAbstractVideoSurface支持的像素格式的QList之上很重要,不幸的是Qt邏輯是他們採用了第一種availibe格式,這就是爲什麼原生視頻元素不顯示alpha通道(它在RGB32中播放視頻,無論是在本地元素中覆蓋窗口而不是在QtQuick場景圖中繪製它)。