Logo Computer scientist,
engineer, and educator
• Software
• The kmediad project

kmediad — a cross-platform, browser-based audio player

screenshot kmediad is an open-source project to develop a browser-based audio player which will run on Linux and Windows servers. The main application is in multi-room audio, but kmediad can be used as a conventional desktop media player. It supports collection indexing and searching, album art, multi-lingual tags, and many features expected of a modern media player. But having no user interface of its own (or only a very trivial user interface on the Windows platform) it has minimal system requirements, and can be left to run unobtrusively in the backround.

Because kmediad is HTTP-based, it can easily be controlled by clients other than web browsers. Many operations can be controlled simply by sending an HTTP request using wget or curl, for example. A specific command language is provided in addition to the human-readable HTML interface, based on JSON objects. The user of JSON makes it relatively to interface the server to JavaScript applications.

kmediad embeds the Xine media player engine, and can therefore play a large range of audio formats. It should build on most modern Linux implementations, and on Windows under MinGW.

Using kmediad with a Web browser

kmediad works with most modern Web browsers, including up-to-date mobile browsers (e.g., the built-in browser provided with Android). To use the browser interface, simply enter the URL in the form http://host:port. The default port number is 30000, but this can be changed in the server configuration. The home page will ask the user to select between the desktop interface and the mobile interface; the difference is that the mobile interface is optimized for portrait-orientation displays, so generally only a single column of data is shown.

The kmediad server

The heart of the kmediad system is the server process. For more details, including how to build and install the server, see here.

The kmediad C API and interface

kmediad can be controlled by any C/C++ program, using the API and interface. The API provides functions for, for example, querying the track database, adding tracks to the playlist, and getting playback status. The interface takes care of the low-level protocol operations needed to communicate with the server. For more details, see here.

The kmediad ncurses interface

This is a very simple console-mode program for controlling the kmediad server. It is based on the C API and interface described above. For more informace, see here.

The kmediad command line interface

There is a fairly flexible command-line interface to kmediad, which can be used remotely. This is particularly helpful for scripting, and for embedded systems that can't run a web browser. For more information see here.

kmediad runs on Raspberry Pi

kmediad builds cleanly and runs well on the Raspberry Pi, provided you install Xine, the relevant Xine plugins, and the Xine development libraries. Of course, to build on the Pi you'll also need to install the C compiler and associated utilities.

Because the Pi is so cheap, it really is feasible to have one in every room. kmediad can play music from a local memory stick (connected to the USB port, for example, or from some central server).

In due course, I'm hoping to document in detail how to set up a Rasberry Pi from scratch to host kmediad.

kmediad streaming radio support

kmediad 0.5.0 has preliminary, and very rudimentary, support for streaming radio stations. See here for more details.
Copyright © 1994-2015 Kevin Boone. Updated Dec 12 2016