如何让 QWebView 直接渲染到 GStreamer 缓冲区

How to have QWebView render directly to a GStreamer Buffer?

本文关键字:GStreamer 缓冲区 QWebView      更新时间:2023-10-16

我希望编写一个简单的基于 QT 的 Web 浏览器,其中包含一个 gstreamer 后端,作为更复杂程序的概念验证。这个想法是让 QWebView 渲染到 gstreamer 缓冲区,这些缓冲区将由 gstreamer 根据提供的参数显示或流式传输。

但是,我对QT很陌生,我不清楚如何让QWebView渲染到我选择的后端。任何提示将不胜感激。

事实证明它并不难。给定一个 gstBuffer * 在 buf 中填写:

QApplication app;
QWebView web;
web.load(QUrl("www.google.ca"));
web.resize(1024,768);
GstMapInfo inf;
if( !gst_buffer_map(buf,&inf,GST_MAP_WRITE) )
  GST_ERROR("Couldn't map output buffer for writing!");
else
  { QImage img
      ( inf.data
      , 1024, 768
      , 1024*sizeof(uint32)
      , QImage::Format_xRGB
      );
    web.render(&img);   // render our webpage to our image buffer;
    app.processEvents();
    gst_buffer_unmap(buf,&inf);
    return buf;
  }