2013-07-19 24 views
7

Tôi đang cố gắng để có được hiệu ứng trộn alpha trong QML với video trong RGBA.Trộn lẫn video QML/kết xuất video thành Biểu đồ cảnh nhanh Qt

Bây giờ vấn đề là Mục Video do QtMultimedia cung cấp mở một cửa sổ lớp phủ trong cảnh QtQuick, vì vậy tôi không nghĩ rằng có thể trộn lẫn các phần tử QML khác với phần tử Video (tôi chắc chắn hy vọng tôi ' m sai, nhưng tôi không thể tìm thấy một giải pháp).

Vì vậy, một cách khác sẽ tự kết xuất video trong một lớp kế thừa từ QQuickItem, trong phương thức updatePaintNode.

  1. Có ai đã từng thấy điều này trước đây không? Thậm chí có thể nếu những kẻ đứng đằng sau QtMultimedia không thể đạt được nó?

  2. Tôi có thể thay đổi nền của phần tử MediaPlayer, có thể là trong suốt hoặc chỉ là một màu trong QML?

Cho đến nay tôi đã suy nghĩ về QAbstractVideoSurface và QVideoFrame nhưng tôi không có ý tưởng làm thế nào để làm cho nó vào QSG, hoặc thậm chí làm thế nào nên giao diện GeometryNode cho video.

Giải pháp tốt nhất là để có được hòa trộn kênh alpha với QML Elements khác ví dụ như trong:

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

    focus: true 

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

    autoPlay: true 
    } 
} 

Cảm ơn trước!

Trả lời

2

Tôi đã thử một vài điều, nhưng cuối cùng tôi đã sử dụng ví dụ Qt có tên VideoWidget sử dụng QAbstractVideoSurface và QVideoFrame và vẽ các khung trong QQuickPaintedItem, sử dụng MediaPlayer để tải dữ liệu từ QML. Điều quan trọng là đặt ARGB32 lên trên QList mô tả các định dạng pixel được hỗ trợ trong QAbstractVideoSurface, không may là logic Qt là chúng lấy định dạng availcons đầu tiên và đó là lý do tại sao phần tử Video gốc không hiển thị kênh alpha (nó phát video trong RGB32, hoặc đó là một điều với cửa sổ lớp phủ trong phần tử gốc thay vì vẽ nó trong Đồ thị cảnh QtQuick).

Các vấn đề liên quan