Skip to content

play/gst-playd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0ea8931 · Dec 18, 2012

History

87 Commits
Sep 10, 2012
Oct 16, 2012
Dec 18, 2012
Sep 10, 2012
Oct 12, 2012
Sep 10, 2012
Sep 10, 2012
Sep 10, 2012
Sep 10, 2012
Sep 10, 2012
Sep 10, 2012
Sep 11, 2012
Oct 14, 2012
Sep 21, 2012
Oct 12, 2012

Repository files navigation

What Is This?

gst-playd is a really simple cross-platform service whose sole job is to play back media files to a list of targets (IceCast and AirPlay), using the GStreamer API.

It's a single exe, it's simple to manage and configure, and you can run as many as you want in parallel for multiple audio streams.

What Doesn't It Do

gst-playd knows nothing about library management. Its goal is to replace Airfoil and Nicecast in the current Play implementation (Play v2)

But can you explain it in ASCII art?

Sure.

 +------------+
 |            |
 |  source1   |+                                                         +----------------+
 |            ||                                                         |                |
 +------------+|         +------------------+                         +-+|    icecast     |
               +---------+                  |    +---------------+    |  |                |
 +------------+          |                  |    |               +----+  +----------------+
 |            |          |                  |    |               |
 | source2    +----------+     mixer        +---->    splitter   |       +----------------+
 |            |          |                  |    |               |+      |                |
 +------------+     +----+                  |    |               |+------+    airport1    |
                    |    +------------------+    +-------------+-+       |                |
     ...            |                                          |         +----------------+
                    |                                          |
 +------------+-----+                                          |         +----------------+
 |            |                                                |         |                |
 | source_n   +                                                +---------+    airport2    |
 |            |                                                          |                |
 +------------+                                                          +----------------+

How does it work?

gst-playd will start up a REQ/REP ZeroMQ socket on a specified port - meaning, it will boot up and wait for a request to come in. The requests are really simple string-based, Redis-style commands, something like:

PLAY file:///home/foo/bar.mp3
STOP

And the responses will be equivalently structured:

OK
ERROR IceCast isn't installed. Install it via 'brew install icecast'

Internally, gst-playd will manage the GStreamer Pipeline as well as handle starting up and configuring the Icecast server (including tying the lifetime of the icecast process to gst-playd, so if gst-playd dies, it kills the associated icecasts on its way out)

How do I build this?

On OS X:

brew install zeromq --head
brew install gst-plugins-good gst-plugins-ugly gst-ffmpeg  ## Get some coffee.
brew link libxml2

./autogen.sh && make