[Interest] [Qt3D] Render to video

Harald Vistnes harald.vistnes at gmail.com
Mon Apr 18 09:26:54 CEST 2016


Hi Andy,

An alternative is to use the FFMPEG encoding library instead of the command
line tools. Then you can pass each frame to the video encoder as you
generate it without writing them all to disk first.

The natural way to generate the QImages would be to render to an offscreen
surface of the desired resolution, and then pass each frame to the video
encoder. Unfortunately, reading back the content of offscreen surfaces is
missing in Qt3D. According to these it will not come before 5.8.

https://bugreports.qt.io/browse/QTBUG-52136
https://bugreports.qt.io/browse/QTBUG-52074

So AFAIK we just have to wait with generating images and videos with Qt3D.

Cheers,
Harald


2016-04-18 5:46 GMT+02:00 Andy <asmaloney at gmail.com>:

> Goal: generate video with a user-specified resolution, frame rate, &
> container/codec format from an animation in my Qt3D window
>
> (Disclaimer: I've never worked with video files before!)
>
> As far as I can tell, Qt doesn't provide a way to generate video files
> directly, so I think I have to write a series of QImages to disk and use
> them to generate a video using ffmpeg.  This seems like it will take a
> large amount of disk space, be pretty heavy on the I/O, and generally be
> slow.  Are there better solutions?
>
> If I need to do it that way though, I must generate QImages from my
> existing Qt3DCore::QAspectEngine in my QWindow-derived class.  I don't see
> a clear/elegant way to do this.
>
> I think I need to create an offscreen surface? window? with the correct
> resolution and then somehow render & animate my scene to it, saving
> snapshots as I move the camera.  (I am already using QAbstractAnimation to
> move the camera, so I would use it to grab the snapshots as well.)  Can I
> use the same root entity in multiple QAspectEngines? (i.e. setRootEntity()
> to my root entity in the new offscreen and tell it to render.)
>
> Has anyone done this before?  Is this even close to the right approach?
>
> (I'm using straight C++ - no QML.)
>
> Thanks!
>
> ---
> Andy Maloney  //  https://asmaloney.com
> twitter ~ @asmaloney <https://twitter.com/asmaloney>
>
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20160418/5b42e8c9/attachment.html>


More information about the Interest mailing list