glasscoder-ipc — IPC methods for the GlassCoder stream encoder
glasscoder(1) is an audio encoder that is capable of generating live streams using a variety of formats and sending them to an Icecast or Shoutcast audio streaming server or posting them as HTTP Live Streams [HLS]. For more information regarding its overall capabilities, see the glasscoder(1) man page.
A running glasscoder(1) instance can be monitored and controlled by means of two different IPC methods: its standard input/output streams and HTTP calls.
glasscoder(1) can output
realtime information about current operating state via its standard
output and/or error streams. The location and format in which this
information is generated is controlled by means of the
--errors-to
and --meter-data
options.
When --errors-to=STDOUT
is specified,
glasscoder(1) will output
error messages on standard output in the following machine-readable
format:
ER [priority
] [msg
]
where [priority
] is an
integer the indicates the priority level of the error as defined by
the syslog(3) interface and
[msg
] is a text
string describing the error. Each message is terminated by a newline
character.
When --meter-data
is specified,
glasscoder(1) will output
realtime audio level information suitable for being rendered as an
audio meter display in the following format:
ME [left-lvl
right-lvl
]
where each argument is the current audio level of the corresponding channel in hexidecimal, referenced to 0 dBFS. Each message is terminated by a newline character.
glasscoder(1) supports the following command, sent via standard input:
MD [text
]
Send the metadata
[text
] to the stream.
The command should be terminated by newline.
If the --metadata-port=
option is given a non-zero value, metadata updates can be sent to the
stream by means of one of the following HTTP GET calls
port
http://
hostname
:port
/admin.cgi?pass=password
&mode=updinfo&song=text
http://
hostname
:port
/admin/metadata?mount=mountpt
&mode=updinfo&song=text
It is possible to implement proxy connectors for
glasscoder(1)'s IceStreamer server
through use of the --server-pipe
command switch. This
switch will create a UNIX socket which can be used to pipe in open
descriptors for player connections by means of ancilliary socket messages
with the SCM_RIGHTS
message type. See the
unix(7) man page for more
information. A fully worked-out example is also available in the
GlassCoder source package in the 'src/tests/' subdirectory.