We work with a application which uses QuickTime (QT) on Mac and Win platforms for following
- read/write QT movies frame by frame
- write QTVR
- show/edit QT compression settings (SC)
- play movies inside app (Movie Controller)
Now we use “classic” QT SDK on both platforms, that requies obsolete data types such as GWorldPtr etc.
We want to port our cross-platform QT code to make it workable on 64-bit and OSX SDK 10.7 or higher. On Win platform a minimal solution is to use seperated process and IRPC - because we know nothing about QT 64-bits for Windows. We are trying to find Better solutions on Win side.
Any Library suggestion to work on both Platforms which (read/write)?
gstreamer works on both windows and osx (and linux) and does read/write, https://github.com/arturoc/ofxGStreamer has instructions on how to install it
Hi Arturo, sorry to bother you, but can GStreamer WRITE? Where it’s written, Could you show me some info about it? Which Output formats are supported? They have examples of movies writing?
Thanks a lot
gstreamer can write in lots of formats, the codecs are usually based on ffmpeg which supports almost every format.
in openframeworks you’ll need to use an appsrc to send frames, i don’t have any example to specifically write video right now, the most similar is this addon: https://github.com/arturoc/ofxGstV4L2Sink/blob/master/src/ofxGstV4L2Sink.cpp which allows to create a virtual camera device. the logic should be the same create a pipeline and send frames through it in update.
a pipeline to write should be something similar to “appsrc ! x264enc ! qtmux ! filesink location=data/video.mov”
in general you’ll need to use ofGstUtils to create a custom pipeline and the first element of that pipeline should be an appsrc so you can send frames from outside gstreamer: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-appsrc.html
take also a look at how the pipeline concept works in gstreamer, try using the command line tool gst-launch before trying to implement it in code. ofGstUtils allows to run any pipeline so you don’t need to take care of setting everything, just pass the pipeline as a string to ofGstUtils::setPipeline() and then call startPipeline() and play()
We will investigate GStreamer!!
Thanks a lot!