wiki:Developer/MusicPlayers

Version 15 (modified by Brad Lanam, 5 months ago) (diff)

--

Music Players

What's required in a music player?

  • Play a file from disk (many players are playlist oriented and can only play music from their own internal playlist.)
  • Be able to play music via a socket interface.
  • Alternatively, have an API available that can be used to play music.
  • Pause and Play
  • Seek in song.
  • Speed/Pitch control. Preferably this would be interactive, but a player that can speed/pitch control the entire song could be used also.


VLC
VLC has all of the above and is actively maintained.

Unfortunately this is a bit rare. I would like to find alternatives to VLC so I am not locked in to a single vendor. At this time, it seems like the best alternative will be writing my own player -- this has its own set of problems.

mplayer and derivatives:
mplayer can 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.

mpv (2018-1-28)
MPV now has an IPC mechanism
https://github.com/mpv-player/mpv/blob/master/DOCS/man/ipc.rst
This needs to be researched to see if it is usable.
There is also a libmpv 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.

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.

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.