Wiki Home : Developer : MusicPlayers
What's required in a music player?
Unfortunately this is a bit rare. I would like to find alternatives to VLC so I am not locked in to a single vendor.
VLC VLC has all of the above and is actively maintained.
MPV MPV now has a libmpv API and supports most all of the above. The libmpv interface has issues on Windows. At this time, MPV can be used on Linux 64-bit.
MPRIS-enabled (Linux Only)
MPRIS can be used on Linux for many players, but the support for speed/pitch control is not common. There may be subtle differences in how the MPRIS interface reacts for different players.
quod libet
No speed control on windows.
No way to get the status when using the fifo. Would require command line usage, latency unknown.
http://quodlibet.readthedocs.io/en/latest/index.html#
Can use a FIFO to control it. Will need an interface to the Windows API FIFO functions (twapi? or our own?).
https://github.com/quodlibet/quodlibet/blob/master/quodlibet/quodlibet/cli.py (process_arguments)
portaudio
portaudio library could be used for audio playback. But it has no speed/pitch control. Would need to use http://www.mega-nerd.com/SRC/ or somesuch. Probably would need libsndfile also, but it needs mp3 support ( https://github.com/erikd/libsndfile/issues/258 ). This is a major project, as it means that BallroomDJ would become an actual audio player.
mplayer and derivatives:
mplayer could be used, but there are a lot of problems with sound glitches during startup, etc. Also mplayer and mplayer2 do not seem to have an active development community. One of the forks of mplayer (MPV) dropped the socket API.
MPD
MPD can probably be used, but it is quite complicated to set up (and I did not want to subject my users to that). It is playlist oriented and can only play files from the same machine.
HQPlayer
Someone once wanted support for HQPlayer. HQPlayer would not process commands via the socket in a timely manner, making pause/play impossible to use. It also had very poor seek sound quality. It does not have a speed control.
Foobar2000
Foobar2000 does not provide a socket API to control music playback.
There are claims that Foobar2000 has better quality than VLC. This is answered in the Foobar2000 FAQs. Virtually all decent music players are playing a digital stream, and it should be what is known as "bit-perfect" (i.e. no changes) from input to output. It is literally quite impossible for one player to have quality any different than another unless there are bugs or audio decoder issues. VLC fixed a bug with sound quality issues in version 2.2.6 of VLC.