Poll: video engine for JUCE?


#1

Some may know, almost 3 years ago I wrote a wrapper to stream videos in JUCE called filmstro_ffmpeg*. It allows to process the audio stream with the JUCE tools and display the images synchronously, also writing back to a file.
Even with very little to none maintenance meanwhile it seems to be useful to some.

I am contemplating writing a more comprehensive video image processing engine, that would allow

  • Video clip objects to stream
  • mixing/overlaying frames
  • interface for visual effects
  • colour curve processing
  • resize/scale/crop frames to render virtual camera moves
  • display film strips
  • display live histograms
  • using stills as video objects

I would offer that on similar terms like the Tracktion engine. Is that something people would be interested in? Maybe adopt? What would be other must-have features?

*) I was working at Filmstro back then, the project was partly in my work time, hence it bears their name. Today I run my own company Foleys Finest Audio and might pull that over to my space, once I make major additions there


VideoComponent audio device
Is there any way to encode a component to Video
#2

I would love to be able to capture my app’s GUI at 60FPS via createComponentSnapshot and dump it into an mp4 file without having to leave the JUCE eco system to do it.


#3

Yes, that is a good use case, although it wouldn’t need the whole engine in that case. The video wrapper should do that. But I remember our conversation from back then and figuring out, what made Quicktime not showing the videos, while VLC could is definitely necessary to figure out.

Just nitpicking a bit on 60FPS: I think the gaming and graphics board industry spoilt a bit the perception of FPS. While it is a good thing to trim performance for the painting to be as fast as possible, for a video it is much more important, to have a constant time interval between the frames. For sure, a minimum of guaranteed frames in the video stream is necessary, but 30 is a good value to aim for. You will need to send those frames later on, so consider your bandwidth.

The reason, why the graphics board manufacturers and gamers love their FPS display is IMHO, because the rendering runs on it’s own, and the graphics board has no other jobs anyway, so there is no loss in rendering as fast as possible. And it makes you feel good, that you bought the right graphics board (or you start saving for the next better one, they will be happy).

Rendering with 60FPS is like recording in 192kHz IMHO. You can do it, theoretically your information is more detailed, but in the end, it doesn’t matter too much.