Apple has officially ended the support for QuickTime on Windows a couple of months ago.
As a result, users will not receive a fix for at least two zero-day vulnerabilities that have been discovered since then.
We are currently using the
QuickTimeMovieComponent in some cross-platfrom products, and users are getting increasingly concerned about the security issues implied by this.
Is there some other video playback solution in JUCE at the moment?
I searched the documentation but I could find none, despite remembering that to be previously mentioned here in the forum recently (unfortunately, I have been unable to track down the topic)
In Tracktion we use a QuickTimeComponent on Mac, and the DirectShowComponent on Windows.
It is a bit of a pain though as users will typically have to install a 3rd party codec pack as well.
I haven’t noticed that before, thanks.
If I may ask, what video format are you using? Is there some common format that is supported by both QuickTimeComponent and DirectShowComponent?
The problem with these formats is that you’re at the mercy of the OS. Unfortunately that also means that even though Window Media Player will play some videos, the embedded players won’t. The Mac QuickTimeComponent seems to handle a lot better than Windows though.
I’ve not done a lot of testing to be honest and performance is patchy. I would expect a newer format like h.264 to be the best though.
Other’s thoughts are welcome here as I’d be interested to know what user reports are like.
An option might be to rely as much as possible on DirectShow, then cover the rest of the (patent free) codecs via dynamically linking ffmpeg (LGPL). Of course that may be playing with fire in some cases if you aren’t careful, but could be a solid choice if you need to support some incredibly obscure codecs.
how about a simple WebBrowserComponent an a video file embedded in html and check what format is accepted by the default browser on each platform?
Interesting idea. We do this in Tracktion for showing an introductory video as part of our first run wizard but I’ve never thought about playing local videos with it. I’ve not looked in to HTML5 video much, I wonder how much control you have over it (seeking etc.)? I would also assume that you’re still at the mercy of the OS codecs but will probably get better access than the DirectShowComponent on Windows at least.
I think ffmpeg is generally accepted as the best way to get the most compatibility without relying on user installed codecs but I’ve heard it’s a bit of a pain to set up. It would make an excellent JUCE module though…
Another option could be libvlc which again I’ve not used but I think someone else posted a JUCE project with appropriate wrapper code on here a few years ago.
yep the webbrowsercomp approach was intended for exactly that, simple video playing, for advanced features i think ive worked with ffmpeg in the past, once the initial pain is passed it works great
Unfortunately, for my projects I need some control over the playing of the video, like seeking and pausing, thus I cannot really use the WebBrowserComponent approach.
I also remember some talking here in the forum about wrapping some video lib as a JUCE module, I think that would be very convenient if the goal is to ultimately get rid of OS dependencies when it comes to video playback.
Perhaps @jules can comment on this, letting us know if this is in the works, or at least in the backlog for future developments
Wrapping a video library’s tricky because those things are enormous. Would be straightforward on linux where you can make it depend on having the appropriate packages installed, but to do this on Windows as a juce module is a problem because you’d need to make it dependent on the user installing ffmpeg. Not currently on our radar to work on this, I’m afraid… Would be nice in the future, but not critical path for us.