Marco Trapanese
unread,Jun 8, 2013, 11:28:28 AM6/8/13You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Ciao,
provo a chiedere anche qui, non si sa mai. Come sempre cerco di fare una
cosa semplice e mi ritrovo impantanato.
Parliamo di Debian Jessie, 32-bit, GStreamer-0.10, Qt4.8.2.
Ho un QWidget su cui voglio visualizzare uno stream video:
class Player : public QGst::Ui::VideoWidget { ... }
void Player::play() {
QGst::PipelinePtr pipeline =
QGst::ElementFactory::make("playbin2").dynamicCast<QGst::Pipeline>();
watchPipeline(pipeline);
pipeline->setProperty("uri", "/path/to/my/video.mp4");
QGst::BusPtr bus = pipeline->bus();
bus->addSignalWatch();
QGlib::connect(bus, "message", this, &Player::onBusMessage);
pipeline->setState(QGst::StatePlaying);
}
Ottimo! Ora voglio creare un altro QWidget sovrapposto al primo, in modo
da poterci disegnare o inserire altri controlli, con le dovute
trasparenze. Quindi nella app principale scrivo:
Player *player = new Player(this);
QWidget *videoOverlay = new QWidget(player);
// set the videoOverlay geometry
videoOverlay->setWindowFlags(Qt::FramelessWindowHint |
Qt::WindowStaysOnTopHint);
videoOverlay->setAttribute(Qt::WA_TranslucentBackground);
Tutto perfetto, se non che chiamando il metodo play() di cui sopra... le
trasparenze tornano opache! Ciò accade quando viene eseguita la funzione
watchPipeline().
Dovrebbe essere una cosa banale, ma non ne vengo a capo. La
documentazione ufficiale langue in proposito, e i vari forum non mi sono
stati di aiuto.
Avete qualche idea?
Grazie!
Marco