@green mpv is what I usually use. mpd could be an easier option if you're trying to interact with it programmatically.