3.3 KiB
This is a not ready to use, toy project
Since I just need a simple player which just works right now, so I did many things in a dirty way. Don't feel so weird if you saw something I did in this project is using a bad approach.
Note
The Qt Multimedia APIs build upon the multimedia framework of the underlying platform. This can mean that support for various codecs or containers can vary between machines, depending on what the end user has installed.
Current implementation use all stuff from Qt which include the multimedia playback support, which means user may need to install codecs by themself. There is a link provided by QtWiki about Qt 5.13 Multimedia Backends, and here is a chart about some other things which might be helpful.
Platform | Built-in support | Probably useful 3rd-party codecs |
---|---|---|
Windows | Supported Formats In DirectsShow | Xiph.org: Directshow Filters for Ogg Vorbis, Speex, Theora, FLAC, and WebM |
macOS | Media formats supported by QuickTime Player | Sorry, I don't know... |
Unix/Linux | depends on GStreamer plugins which user installed | GStreamer Plug-ins: gst-plugins-base, gst-plugins-good, gst-plugins-ugly, gst-plugins-bad |
Build
Current state, we need:
cmake
as the build system.qt5
withqt5-multimedia
since we use it for playback.taglib
to get the audio file properties.pkg-config
to find the installed taglib.
Then we can build it with any proper c++ compiler like g++ or msvc.
Linux
Just normal build process as other program. Nothing special ;)
Windows
Install the depts manually is a nightmare. I use KDE Craft but MSYS2 should also works. FYI currently this project is not intended to works under Windows (it should works and I also did some simple test though).
macOS
I don't have a mac, so no support at all.
About License
Since this is a toy repo, I don't spend much time about the license stuff. Currently this project use some assets and code from ShadowPlayer, which have a very interesting license -- do whatever you want but cannot be used as homework -- obviously it's not a so called free license. I may do some license housecleaning works by replaceing the assets and code implementation when the code become reasonable, and the final codebase may probably released under MIT license.
Anyway here is a list of file which is in non-free state (with license: do whatever you want but cannot be used as homework):
- All png images inside
icons
folder. - seekableslider.{h,cpp}
And something from ShadowPlayer but in other license:
- {Flac,ID3v2}Pic.h : AlbumCoverExtractor, with MIT License
Also there are some source code which I copy-paste from Qt codebase, which released under BSD-3-Clause license by the Qt Company:
- playlistmodel.{h,cpp}