List of Video formats Qt supports?
-
Is there a list anywhere of the video formats Qt (5.5) supports?
I've seen the Qt Multimedia Backend page but there is no specific information about formats there. Same for the specific doc pages for the various video classes.
-
because it depends on the used multimedia backend.
Which are basically the plugins/filters installed on the target system. -
So that's a "no", as in there is no list.
-
@TOMATO_QT
there is no (official) list, because Qt itself doesn't support any format directly.
You need to check the official sources of used backend or search the web for what types the backend supports.
At least nobody created such a list in the wiki, maybe you can share your findings then and create a wiki article (or extend the one you've linked)? ;) -
for example my quick findings on the web:
Windows: DirectShow
Linux: gstreamerMAC/iOS: AV Foundation (IIRC all that also QuickTime can play)
NO GUARANTEE FOR CORRECTNESS:
- supported video file formats: QuickTime Movie (.mov), MPEG-4 (.mp4, .m4v), MPEG-2, MPEG-1, 3GPP, 3GPP2, AVCHD, AVI, DV;
- supported video codecs: MPEG-2, MPEG-4, H.264, H.263 H.261, Apple ProRes, Apple Pixlet, Animation, Cinepak, Component Video, DV, DVC Pro 50, Graphics, Motion JPEG, Photo JPEG, Sorenson Video 2, Sorenson Video 3, H.263, H.261, Apple ProRes, Apple Pixlet, Animation, Cinepak, Component Video, DV, DVC Pro 50, Graphics, Motion JPEG, Photo JPEG, Sorenson Video 2, Sorenson Video 3
- supported audio file formats: M4A, m4b, .m4p, MP3, Core Audio (.caf), AIFF, AU, SD2, WAV, SND, AMR
- supported audio codecs: AAC, HE-AAC, Apple Lossless,MP3, AMR Narrowband, MS ADPCM, QDesign Music 2, Qualcomm PureVoice (QCELP), IMA 4:1, ALaw 2:1, ULaw 2:1, Integer (24-bit, 32-bit), Floating Point (32-Bit,64-Bit)
-
Thanks – my point is that shouldn't this info be easy to find within the Qt documentation?
After all, the Qt developers clearly know what is supported and what is not by each multimedia backend. -
Hi,
It's an info that's not easy to generate because as @raven-worx mentioned, the formats supported depend heavily on the codec packs installed on your system.
Unless I'm mistaken, QMediaRecorder::supportedVideoCodecs might be what you are looking for.
-
Hi Samuel,
It's an info that's not easy to generate ...
Mm... respectfully... that's just silly. ;-)
Certainly the developers and maintainers of Qt who work with these backends + libs are well positioned to document what formats are supported. Certainly better than many of the users of Qt. -
@TOMATO_QT said:
Certainly the developers and maintainers of Qt who work with these backends + libs are well positioned to document what formats are supported. Certainly better than many of the users of Qt.
The supported formats are determined by the codecs your computer, not by Qt.
The developers and maintainers of Qt who work with these backends + libs do not know what codecs are available on your computer, so they cannot provide this list. The best thing that the Qt developers can do is to document the fact that users need to check their codecs.
Note: Two different computers that run the same OS could have different codecs installed, so their list of supported formats would be different!
-
@TOMATO_QT said:
Certainly the developers and maintainers of Qt who work with these backends + libs are well positioned to document what formats are supported. Certainly better than many of the users of Qt.
ehm ... i would say it's enough to support the interface of the backend. What the backend then supports is out of scope of the Qt devs, dont you agree?
-
ehm ... i would say it's enough to support the interface of the backend. What the backend then supports is out of scope of the Qt devs, dont you agree?
I'm not arguing – the snark quotient which you may perceive is due to the time I have wasted in thinking Qt supports some tech because of what I have read in the docs (Bluetooth, audio data access, etc) only to find out after much effort that the support is "sorta, kinda, or only these platforms". And that is fine. But just put it out there – right in the documentation of a class purporting to support some functionality: doesn't work on OSX, or Android or whatever
As for your comment – you make no sense.(sorry!) I am only asking that Qt document what the backends (that they support) support. Why make it hard? Clearly they know which platform Bluetooth is currently supported on by Qt, and which features are or are not supported. Or audio formats. Or video formats.
Is this some macho developer "you should know" bullshite? – I think we would all agree that that would be ridiculous.
So the meta point is: Qt needs to put some effort into stating what it does and doesn't do: in the documentation, with details and not hidden away in some single page or expect developers to chase down the info: the Qt developers have this info at hand.
-
@TOMATO_QT said:
Who ships an application which doesn't have the required libs embedded? A hobbyist?
I mean that question sincerely.
Assuming that by "required libs" you mean "multimedia codecs", here is my sincere answer: Lots of people, from hobbyists to full-time professional developers .
Libraries and applications often do not support specific multimedia formats directly. Instead, they only talk to the operating system's multimedia backend. Examples of multimedia backends include Windows Media Foundation on Windows, and GStreamer for Linux.
Then, developers of a new multimedia format will create codecs and filters for their format. These allow the multimedia backend to play back files of this format and convert data into this format. Note: Qt does not use any of these codecs directly.
Qt <-+-> WMF (Backend 1) <-+-> H.264 (Format 1) | +-> MPEG-4 (Format 2) | +-> AVI (Format 3) | +-> ... | +-> GStremer (Backend 2) <-+-> H.264 (Format 1) | +-> MPEG-4 (Format 2) | +-> AVI (Format 3) | +-> ... +-> ...
In summary, Qt does not support any video formats by itself, which is why there is no documentation for "list of formats supported". Instead, Qt supports different multimedia backends.
I am only asking that Qt document what the backends (that they support) support. Why make it hard? Clearly they know which platform Bluetooth is currently supported on by Qt, and which features are or are not supported. Or audio formats. Or video formats.
You already found the audio/video one: https://wiki.qt.io/Qt_5.5.0_Multimedia_Backends
For Bluetooth and others, see the "Target Platforms" column under "Qt Add-Ons": http://doc.qt.io/qt-5/qtmodules.html
-
You are missing my point. Qt developers KNOW what is supported on each platform. They should document it CLEARLY in the CLASSES which refer to that functionality so that users of Qt don't:
- Make false assumptions that because there is a Qt class for a certain functionality, it is actually supported on the target OS. (e.g.
QAudioProbe
seems like a very useful class. Oops... not supported on OSX – but nowhere in theQAudioProbe
docs does it SAY that.) - have to chase around trying to find what is or isn't supported.
As for shipping without required libs, I was referring to something like FFmpeg – if your app requires that, you don't expect your end user to have it installed (or you shouldn't).
- Make false assumptions that because there is a Qt class for a certain functionality, it is actually supported on the target OS. (e.g.
-
@TOMATO_QT said:
You are missing my point.
Sorry if I've misunderstood you. Please clarify: Are you focussing on documenting formats, or backend features, or both? I thought it's the former, since your thread is about the list of supported formats.
I want to make one thing clear: Qt can (and should) document which classes support which platforms/backends. However, Qt cannot document which multimedia formats are supported.
As for shipping without required libs, I was referring to something like FFmpeg – if your app requires that, you don't expect your end user to have it installed (or you shouldn't).
And I was explaining that Qt doesn't require libraries like FFmpeg, which is why there is no list of supported video formats (addressing your original post).
Qt doesn't choose which formats are supported. You, the app developer, get to choose. You can either (i) embed codecs like FFmpeg into your app, or (ii) bundle backend filter installers like Xiph with your app installer.
Qt developers KNOW what is supported on each platform. They should document it CLEARLY in the CLASSES which refer to that functionality so that users of Qt don't:
- Make false assumptions that because there is a Qt class for a certain functionality, it is actually supported on the target OS. (e.g.
QAudioProbe
seems like a very useful class. Oops... not supported on OSX – but nowhere in theQAudioProbe
docs does it SAY that.) - have to chase around trying to find what is or isn't supported.
Good points. I'd like to see clearer docs too. I've started a discussion at http://lists.qt-project.org/pipermail/development/2016-January/024617.html
Please join the Development mailing list (http://lists.qt-project.org/mailman/listinfo/development ) and add your concerns and ideas.
- Make false assumptions that because there is a Qt class for a certain functionality, it is actually supported on the target OS. (e.g.
-
Thanks – I think we are mostly in agreement and it is just internet noise garbling communication. And please don't misunderstand – Qt is great and vast. But I have had my excitement smacked repeatedly after perusing the docs and playing with some code, only to discover that "oops... doesn't work on OSX (or iOS, or wherever)."
I read your comment on that mailing list and that is pretty much what I am saying: some blurb in the header of the doc page of a particular class which spells out current compatibility (through a link or other web mechanism to inject it) That way, if someone is reading the docs, it is right there.
I posted an issue on this a few weeks back: https://bugreports.qt.io/browse/QTBUG-50425
Cheers!