On Mon, Apr 18, 2016 at 9:05 AM, Sean Harmer <sean.har...@kdab.com> wrote:
> Hi, > > I think it's possible, although it's not an out of the box feature yet, as > Harald pointed out. > > Have a look into this kind of approach: > > * Implement something similar to the Scene3DItem that allows to embed Qt 3D > into a Qt Quick 2 scene > Thanks Sean. I wouldn't have thought to go through Qt Quick since I've never used it and it's not on my radar. > > * This requires using a little bit of private (for now) API to feed the Qt > 3D > renderer your own OpenGL context and to ask it to render when needed. > > * Use an FBO (as the Scene3D item does) as the render target - take care to > tell the framegraph the size of this "external" render target. > > * Then, once the scene is rendered on your custom context, either: > > a) use glReadPixels to grab the contents of the texture you attached to the > FBO and pass it to a software encoder. > > or > > b) use the texture id to pass the data to a hardware encoder such as nvenc > without needing a round trip from the GPU->CPU->GPU. > > I think that can be made to work. > nvenc looks like it would be a big win for those with NVIDIA cards, and I see AMD has the analogous VCE. Thanks everyone for helping me get a better sense of the problem I'm trying to solve! > > Cheers, > > Sean > > On Monday 18 April 2016 08:38:21 Andy wrote: > > On Mon, Apr 18, 2016 at 3:26 AM, Harald Vistnes < > harald.vist...@gmail.com> > > > > wrote: > > > 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. > > > > This is non-GPL software, so I can't use the lib directly (I should have > > mentioned that). I haven't found a BSD or MIT lib that encodes the > common > > formats - is anyone aware of one? > > > > > 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. > > > > Great - so I'm on the right track! > > > > > 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. > > > > Thanks Harald. Your report is exactly what I'm looking for... That's > > unfortunate though - a real showstopper. > > > > > Cheers, > > > Harald > > > > > > 2016-04-18 5:46 GMT+02:00 Andy <asmalo...@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@qt-project.org > > >> http://lists.qt-project.org/mailman/listinfo/interest > > > > --- > > Andy Maloney // https://asmaloney.com > > twitter ~ @asmaloney <https://twitter.com/asmaloney> > > -- > Dr Sean Harmer | sean.har...@kdab.com | Managing Director UK > KDAB (UK) Ltd, a KDAB Group company > Tel. +44 (0)1625 809908; Sweden (HQ) +46-563-540090 > Mobile: +44 (0)7545 140604 > KDAB - Qt Experts > --- Andy Maloney // https://asmaloney.com twitter ~ @asmaloney <https://twitter.com/asmaloney>
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest