'\" t .\" Title: glasscoder .\" Author: Fred Gleason .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 01/27/2020 .\" Manual: Linux Audio Manual .\" Source: October 2019 .\" Language: English .\" .TH "GLASSCODER" "1" "01/27/2020" "October 2019" "Linux Audio Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" glasscoder \- Minimalist audio encoder for live streaming .SH "SYNOPSIS" .HP \w'\fBglasscoder\fR\ 'u \fBglasscoder\fR [\fIOPTIONS\fR] .br .SH "DESCRIPTION" .PP \fBglasscoder\fR(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]\&. It is also capable of acting as an Icecast\-compatible server in its own right, serving streams directly to client players and thus eliminating the need for an intervening Icecast server instance\&. .PP \fBglasscoder\fR(1) has no GUI or configuration file components at all; its sole \*(Aquser interface\*(Aq being its command\-line invocation\&. As such, it is particularly well suited for being driven by an external process or controller such as \fBglassgui\fR(1) or \fBglasscommander\fR(1)\&. .SH "OPTIONS" .PP \fB\-\-audio\-atomic\-frames\fR .RS 4 Emit a stream consisting of self\-contained frames \-\-e\&.g\&. by disabling the MPEG\-1 bit reservoir\&. Useful mostly for debugging\&. .RE .PP \fB\-\-audio\-bitrate=\fR\fIkbps\fR .RS 4 The constant stream data rate in kilobits per second\&. Default value is \fB128\fR\&. Use of this option is mutually exclusive with that of the \fB\-\-audio\-quality\fR option (see below)\&. .RE .PP \fB\-\-audio\-channels=\fR\fIchans\fR .RS 4 The number of audio channels to use\&. Valid values are \fB1\fR or \fB2\fR\&. Default value is \fB2\fR\&. .RE .PP \fB\-\-audio\-device=\fR\fItype\fR .RS 4 The type of audio device to use\&. The default value is \fBJACK\fR\&. See the \fBDEVICE OPTIONS\fR section (below) for the options appropriate for each audio device type\&. Valid values are: .PP \fBALSA\fR .RS 4 The Advanced Linux Sound Architecture\&. .RE .sp .PP \fBFILE\fR .RS 4 Stream directly from a file\&. .RE .sp .PP \fBJACK\fR .RS 4 The Jack Audio Connection Kit\&. .RE .sp .RE .PP \fB\-\-audio\-format=\fR\fIfmt\fR .RS 4 The audio encoding format to use\&. The default value is \fBVORBIS\fR\&. Valid \fIfmt\fR values are: .PP \fBMP3\fR .RS 4 MPEG\-1/1\&.5 Layer 3 .RE .sp .PP \fBOPUS\fR .RS 4 Ogg Opus (RFC\-6716) .RE .sp .PP \fBPCM16\fR .RS 4 PCM16 Uncompressed .RE .sp .PP \fBVORBIS\fR .RS 4 Ogg Vorbis .RE .sp .RE .PP \fB\-\-audio\-quality=\fR\fIqual\fR .RS 4 Use variable bitrate streaming at the given audio quality\&. \fIqual\fR can be in the range \fB0\&.0\fR (lowest quality) to \fB1\&.0\fR (highest)\&. Use of this option is mutually exclusive with that of the \fB\-\-audio\-bitrate\fR option (see above)\&. .RE .PP \fB\-\-audio\-samplerate=\fR\fIrate\fR .RS 4 The audio sample rate to use for streaming\&. If the underlying audio layer is operating at a different sample rate, the input will be automatically resampled to this rate\&. Default value is \fB44100\fR\&. .RE .PP \fB\-\-errors\-string=\fR\fIstring\fR .RS 4 Prepend \fIstring\fR to messages sent to the \fBsyslog\fR service (see the \fB\-\-errors\-to\fR option, below)\&. Useful for disambiguating messages from multiple \fBglasscoder\fR(1) instances\&. .RE .PP \fB\-\-errors\-to=\fR\fIdest\fR .RS 4 Send error messages to \fIdest\fR (default standard error)\&. Valid destinations are: .PP \fBSTDERR\fR .RS 4 Standard error\&. .RE .sp .PP \fBSYSLOG\fR .RS 4 The system syslog service\&. .RE .sp .PP \fBSTDOUT\fR .RS 4 Standard output,in machine readable format (useful for communication with another \*(Aqcontroller\*(Aq program)\&. See also the \fB\-\-meter\-data\fR option below\&. .RE .sp .RE .PP \fB\-\-help\fR .RS 4 Print a short usage message and exit\&. .RE .PP \fB\-\-list\-codecs\fR .RS 4 Print a list of available codecs and then exit\&. .RE .PP \fB\-\-list\-devices\fR .RS 4 Print a list of available source devices and then exit\&. .RE .PP \fB\-\-metadata\-port=\fR\fIport\fR .RS 4 Accept metadata updates via HTTP at port \fIport\fR\&. Default value is \fB0\fR, which disables metadata updates\&. See the METADATA section (below) for information regarding the supported update formats\&. .RE .PP \fB\-\-meter\-data\fR .RS 4 Output meter level updates on standard output\&. Useful for driving an external metering display\&. .RE .PP \fB\-\-server\-auth=\fR[\fIusername\fR][\fB:\fR\fIpassword\fR] .RS 4 The authentication parameters to use\&. This parameter has no default\&. .RE .PP \fB\-\-server\-exit\-on\-last\fR .RS 4 Exit the program upon closure of the last player connection\&. This setting is used only by the IceStreamer server\&. .RE .PP \fB\-\-server\-max\-connections=\fR\fIconns\fR .RS 4 Allow a maximum of \fIconns\fR simultaneous player connections\&. Players beyond this maximum attempting to connect will receive an immediate TCP disconnect before the HTTP handshake\&. This setting is used only by the IceStreamer server\&. .RE .PP \fB\-\-server\-pipe=\fR\fIpathname\fR .RS 4 Location to create a UNIX socket for piping connection socket descriptors\&. Useful for implementing proxy connectors for the IceStreamer server\&. For further details about this feature, see the Proxy Connections section of the \fBglasscoder\-ipc\fR(7) man page\&. The default is to create no UNIX socket\&. This setting is used only by the IceStreamer server\&. .RE .PP \fB\-\-server\-script\-down=\fR\fIcmd\fR .RS 4 Run the command \fIcmd\fR when the connection enters the disconnected state\&. .RE .PP \fB\-\-server\-script\-up=\fR\fIcmd\fR .RS 4 Run the command \fIcmd\fR when the connection enters the connected state\&. .RE .PP \fB\-\-server\-start\-connections=\fR\fIconns\fR .RS 4 Do not start the audio transport until at least \fIconns\fR connections have been established\&. Used only by the IceStreamer server in conjunction with the \fBFILE\fR audio device\&. Default value is \fB0\fR \-\-i\&.e\&. start the transport immediately\&. .RE .PP \fB\-\-server\-type=\fR\fItype\fR .RS 4 The type of streaming server to use (default is \fBIcecast2\fR)\&. Valid values for \fItype\fR are: .PP \fBFILE\fR .RS 4 Local file .RE .PP \fBFILEARCHIVE\fR .RS 4 Local file archive\&. Stream to a set of files on the local system, starting a new file at the beginning of each hour\&. .RE .PP \fBHLS\fR .RS 4 HLS/HTTP Live Streaming .RE .PP \fBIceCast2\fR .RS 4 IceCast v2 .RE .PP \fBIceOut\fR .RS 4 Output an Icecast\-compatible stream on standard output\&. .RE .PP \fBIceStreamer\fR .RS 4 Stream directly to players using the internal Icecast\-compatible server\&. .RE .PP \fBShout1\fR .RS 4 Shoutcast v1 .RE .PP \fBShout2\fR .RS 4 Shoutcast v2 .RE .sp .RE .PP \fB\-\-server\-url=\fR\fIurl\fR .RS 4 The URL describing the server resource to stream to\&. See the SUPPORTED URL SCHEMES section (below) for a list of what URL schemes are appropriate for which server types\&. .sp When used with a \fB\-\-server\-type\fR of \fBIceStreamer\fR, the host part of the URL is used to specify the address of the network interface to use for streaming (use \fB0\&.0\&.0\&.0\fR to indicate ALL interfaces)\&. This parameter has no default\&. .RE .PP \fB\-\-server\-user\-agent=\fR\fIagent\-string\fR .RS 4 The User\-Agent header value to use when connecting to external servers\&. Default value is \fBGlassCoder/1\&.0\&.0\fR\&. This setting is used only by \fBIceCast2\fR and \fBHLS\fR servers\&. .RE .PP \fB\-\-stream\-aim=\fR\fIaim\fR .RS 4 The AOL Instant Messenger ID to associate with the stream\&. There is no default value\&. This setting is used only by Shoutcast servers\&. .RE .PP \fB\-\-stream\-description=\fR\fIstring\fR .RS 4 The string to show as the stream description\&. There is no default value\&. This setting is used only by Icecast servers\&. .RE .PP \fB\-\-stream\-genre=\fR\fIstring\fR .RS 4 The string to show as the stream genre\&. There is no default value\&. This setting is used only by Icecast and Shoutcast servers\&. .RE .PP \fB\-\-stream\-icq=\fR\fIicq\fR .RS 4 The ICQ ID to associate with the stream\&. There is no default value\&. This setting is used only by Shoutcast servers\&. .RE .PP \fB\-\-stream\-irc=\fR\fIirc\fR .RS 4 The Internet Relay Chat ID to associate with the stream\&. There is no default value\&. This setting is used only by Shoutcast servers\&. .RE .PP \fB\-\-stream\-name=\fR\fIstring\fR .RS 4 The string to show as the stream name\&. There is no default value\&. This setting is used only by Icecast and Shoutcast servers\&. .RE .PP \fB\-\-stream\-timestamp\-offset=\fR\fIoffset\fR .RS 4 The offset to add to the value of stream timestamps, in seconds\&. Default value is \fB0\fR\&. This setting is used only for HLS streams\&. .RE .PP \fB\-\-stream\-url=\fR\fIurl\fR .RS 4 The URL to show for a page giving more information about the stream\&. There is no default value\&. This setting is used only by Icecast and Shoutcast servers, but is ignored by Shoutcast v2 servers\&. .RE .PP \fB\-\-verbose\fR .RS 4 Increase verbosity level of information printed to standard error\&. WARNING: this may cause cleartext passwords to printed! .RE .PP \fB\-\-version\fR .RS 4 Output version information and exit\&. .RE .SH "DEVICE OPTIONS" .PP \fBAdvanced Linux Sound Architecture\fR (\fB\-\-audio\-device=\fR\fBALSA\fR) .RS 4 .PP \fB\-\-alsa\-device=\fR\fIdev\fR .RS 4 The name of the ALSA device to use\&. If no \fB\-\-audio\-device\fR option is given, then the \fBhw:0\fR device will be used\&. .RE .sp .RE .PP \fBDirect File Streaming\fR (\fB\-\-audio\-device=\fR\fBFILE\fR) .RS 4 .PP \fB\-\-file\-name=\fR\fIname\fR .RS 4 The name of the file to stream\&. If no \fB\-\-file\-name\fR option is given, then the name of the file will be read from standard input\&. .RE .sp .RE .PP \fBThe Jack Audio Connection Kit\fR (\fB\-\-audio\-device=\fR\fBJACK\fR) .RS 4 .PP \fB\-\-jack\-client\-name=\fR\fIname\fR .RS 4 The name of the JACK client to use\&. Default is \fBglasscoder\fR\&. .RE .PP \fB\-\-jack\-gain=\fR\fIgain\fR .RS 4 Apply a fixed gain of \fIgain\fR dB before encoding\&. Default is \fB0\fR dB\&. .RE .PP \fB\-\-jack\-server\-name=\fR\fIname\fR .RS 4 The name of the JACK server instance to use\&. .RE .sp .RE .SH "SUPPORTED URL SCHEMES" .PP Not all URL schemes are supported by all server types\&. The following chart breaks down the options\&. .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .B Table\ \&1.\ \&Supported URL Schemes by Server Type .TS allbox tab(:); cB cB cB cB. T{ Server Type T}:T{ FILE:// T}:T{ HTTP:// T}:T{ SFTP:// T} .T& l c c c l c c c l c c c l c c c l c c c l c c c l c c c l c c c l s s s l s s s l s s s. T{ FILE T}:T{ Yes T}:T{ No T}:T{ No T} T{ FILEARCHIVE T}:T{ Yes T}:T{ No T}:T{ No T} T{ HLS T}:T{ Yes T}:T{ Yes [1] T}:T{ Yes [3] T} T{ IceCast2 T}:T{ No T}:T{ Yes [2] T}:T{ No T} T{ IceOut T}:T{ No T}:T{ Yes T}:T{ No T} T{ IceStreamer T}:T{ No T}:T{ Yes T}:T{ No T} T{ Shout1 T}:T{ No T}:T{ Yes [2] T}:T{ No T} T{ Shout2 T}:T{ No T}:T{ Yes [2] T}:T{ No T} T{ [1] Utilizes the HTTP \fIPUT\fR and \fIDELETE\fR methods T} T{ [2] Utilizes the HTTP \fIGET\fR method T} T{ [3] Supports \fBssh\fR(1) password authentication only T} .TE .sp 1 .SH "METADATA" .PP GlassCoder supports the notion of two types of metadata: "channel\-based" metadata, which applies to the stream as a whole and does not change for the duration of an encoding session; and "timed" metadata, which can be changed in synchronization with the content of the audio stream\&. Channel\-based metadata can be specified by means of options given to \fBglasscoder\fR(1) and will be covered in detail in the sections devoted to specific server types (below)\&. .PP The primary mechanism for supplying timed metadata in GlassCoder is by means of a JSON document containing the desired metadata, sent to the target \fBglasscoder\fR(1) instance at the port specified by the \fB\-\-metadata\-port\fR option by means of an HTTP \fIPOST\fR operation\&. The basic format of the JSON document is as follows: .sp .if n \{\ .RS 4 .\} .nf { "Metadata": { "Field1": "Some value", "Field2": "Some other value" } } .fi .if n \{\ .RE .\} .PP Not all server types support metadata, and those that do utilize wildly different schemas\&. Following is a breakdown of the available metadata options by server type: .SS "IceCast2" .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBChannel Metadata\fR .RS 4 .PP IceCast2 supports the following channel metadata fields: .PP Name .RS 4 Specified by the \fB\-\-stream\-name\fR option\&. .RE .PP Description .RS 4 Specified by the \fB\-\-stream\-description\fR option\&. .RE .PP URL .RS 4 Should be a link to content related to the stream\&. Specified by the \fB\-\-stream\-url\fR option\&. .RE .PP Genre .RS 4 Should be a single word describing the nature of the stream content\&. Specified by the \fB\-\-stream\-genre\fR option\&. .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTimed Metadata\fR .RS 4 .PP IceCast2 provides one field of text, called StreamTitle, which can be dynamically updated to reflect the content currently playing on the stream\&. By convention, this is usually formatted as \*(Aq\fBArtist\fR \- \fBTitle\fR\*(Aq on streams containing musical content\&. .PP For example, to set the StreamTitle field to \fBThe Beatles \- Hey Jude\fR, the following JSON could be used: .sp .if n \{\ .RS 4 .\} .nf { "Metadata": { "StreamTitle": "The Beatles \- Hey Jude" } } .fi .if n \{\ .RE .\} .sp .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBLegacy Interface\fR .RS 4 .PP In addition to the primary JSON interface, the StreamTitle can be set by sending an HTTP \fIGET\fR request to a running \fBglasscoder\fR(1) instance, using the TCP port specified in the \fB\-\-metadata\-port=\fR\fIport\fR option\&. The request must be in the following format: .sp .if n \{\ .RS 4 .\} .nf http://\fIhostname\fR:\fItcp\-port\fR/admin/metadata?mount=\fImount\-point\fR&mode=updinfo&song=\fIstring\fR .fi .if n \{\ .RE .\} .sp .PP Where: .PP \fIhostname\fR \- The hostname or IP address of the system running \fBglasscoder\fR(1) .PP \fItcp\-port\fR \- The TCP port number specified in the \fB\-\-metadata\-port\fR option to \fBglasscoder\fR(1) .PP \fImount\-point\fR \- The mountpoint of the stream .PP \fIstring\fR \- The string to set, encoded as specified in Section 2 of RFC3986 .PP For example, to set a string of "The Beatles \- Hey Jude" via a \fBglasscoder\fR(1) instance running at \fBencoder\&.example\&.com\fR with a \fB\-\-metadata\-port\fR value of \fB1234\fR for a mountpoint of \fBMyStream\fR, the URL would be: .PP \fB http://encoder\&.example\&.com:1234/admin/metadata?mount=MyStream&mode=updinfo&song=The%20Beatles%20\-%20Hey%20Jude \fR .RE .SS "ShoutCast" .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBChannel Metadata\fR .RS 4 .PP ShoutCast supports the following channel metadata fields: .PP Name .RS 4 Specified by the \fB\-\-stream\-name\fR option\&. .RE .PP URL .RS 4 Should be a link to content related to the stream\&. Specified by the \fB\-\-stream\-url\fR option\&. .RE .PP Genre .RS 4 Should be a single word describing the nature of the stream content\&. Specified by the \fB\-\-stream\-genre\fR option\&. .RE .PP ICQ ID .RS 4 Should be User Identification Number for an ICQ user associated with the stream content\&. Specified by the \fB\-\-stream\-icq\fR option\&. .RE .PP AOL Instant Messenger ID .RS 4 Should be an ID for an AOL Instant Messenger user associated with the stream content\&. Specified by the \fB\-\-stream\-aim\fR option\&. .RE .PP IRC ID .RS 4 Should be an ID for an Internet Relay Chat channel associated with the stream content\&. Specified by the \fB\-\-stream\-irc\fR option\&. .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTimed Metadata\fR .RS 4 .PP ShoutCast provides two fields of text which can be dynamically updated to reflect the content currently playing on the stream, called StreamTitle and StreamUrl\&. By convention, the StreamTitle is usually formatted as \*(Aq\fBArtist\fR \- \fBTitle\fR\*(Aq on streams containing musical content, while StreamUrl is used to provide a URL whence stream specific content \-\-e\&.g\&. album cover art \-\- can be retrieved\&. .PP For example, to set the StreamTitle field to \fBThe Beatles \- Hey Jude\fR and the StreamUrl field to \fBhttp://images\&.example\&.com/1234\&.png\fR, the following JSON could be used: .sp .if n \{\ .RS 4 .\} .nf { "Metadata": { "StreamTitle": "The Beatles \- Hey Jude", "StreamUrl": "http://images\&.example\&.com/1234\&.png" } } .fi .if n \{\ .RE .\} .sp .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBNote\fR .ps -1 .br The use of either of these fields is optional in any given metadata update\&. If only one field is given, the other will remain unchanged\&. .sp .5v .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBLegacy Interface\fR .RS 4 .PP In addition to the primary JSON interface, the StreamTitle and StreamUrl fields can be set by sending an HTTP \fIGET\fR request to a running \fBglasscoder\fR(1) instance, using the TCP port specified in the \fB\-\-metadata\-port=\fR\fIport\fR option\&. The request must be in the following format: .sp .if n \{\ .RS 4 .\} .nf http://\fIhostname\fR:\fItcp\-port\fR/admin\&.cgi?pass=\fIpassword\fR&mode=updinfo&song=\fIstream\-title\fR&url=\fIstream\-url\fR .fi .if n \{\ .RE .\} .sp .PP Where: .PP \fIhostname\fR \- The hostname or IP address of the system running \fBglasscoder\fR(1) .PP \fItcp\-port\fR \- The TCP port number specified in the \fB\-\-metadata\-port\fR option to \fBglasscoder\fR(1) .PP \fIpassword\fR \- The ShoutCast password, encoded as specified in Section 2 of RFC3986 .PP \fIstream\-title\fR \- The string to set for StreamTitle, encoded as specified in Section 2 of RFC3986 .PP \fIstream\-url\fR \- The string to set for StreamUrl, encoded as specified in Section 2 of RFC3986 .PP For example, to set a StreamTitle of "The Beatles \- Hey Jude" and a StreamUrl of "http://image\&.example\&.com/1234\&.png" with a password of "MyPassword" via a \fBglasscoder\fR(1) instance running at \fBencoder\&.example\&.com\fR with a \fB\-\-metadata\-port\fR value of \fB1234\fR, the URL would be: .PP \fB http://encoder\&.example\&.com:1234/admin\&.cgi?pass=MyPassword&mode=updinfo&song=The%20Beatles%20\-%20Hey%20Jude&url=http://image\&.example\&.com/1234\&.png \fR .RE .SS "HTTP Live Streams (HLS)" .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTimed Metadata\fR .RS 4 .PP HLS supports timed metadata in the form of embedded ID3v2\&.4 tags\&. Available fields thus include the entire set of text tags defined in the ID3v2\&.4 frame specification (available at http://id3\&.org/id3v2\&.4\&.0\-frames)\&. .PP For example, a typical metadata update could use the following JSON: .sp .if n \{\ .RS 4 .\} .nf { "Metadata": { "TIT2": "Hey Jude", "TPE1": "The Beatles", "TALB": "The White Album", "TRSO": "WXYZ Radio" } } .fi .if n \{\ .RE .\} .sp .PP A user defined text information frame (\fBTXXX\fR) can be sent by using the following special notation for the field identifier: .PP TXXX\fIdesc\fR .PP Where: .PP \fIdesc\fR \- The TXXX Description string (see Section 4\&.2\&.6 of the ID3v2\&.4 Frame Specification) .PP For example: .sp .if n \{\ .RS 4 .\} .nf { "Metadata": { "TIT2": "Hey Jude", "TPE1": "The Beatles", "TALB": "The White Album", "TRSO": "WXYZ Radio", "TXXXxyz": "TXXX frame with a description string of \e"xyz\e"" } } .fi .if n \{\ .RE .\} .sp .RE .SH "NOTES" .PP The Debian version of GlassCoder does not support the MPEG-4 HE-AAC+ encoding, as it is non-free. The AudioScience HPI source device is excluded for the same reason. .SH "BUGS" .PP SFTP:// transfers are done in "insecure" mode (due to crippled support for \fBssh\fR(1) host keys in \fBcurl\fR(1))\&. .PP \fBssh\fR(1) public key authentication is unsupported (due to crippled support for ed25519 keys in \fBcurl\fR(1))\&. .PP Ogg metadata support is still missing\&. .SH "AUTHOR" .PP Fred Gleason .SH "SEE ALSO" .PP \fBglasscoder-ipc\fR(7), \fBglasscommander\fR(1), \fBglassgui\fR(1), \fBjackd\fR(1) .PP RFC3986 \- Uniform Resource Identifier (URI): Generic Syntax .PP ID3v2\&.4 Native Frame Specification (http://id3\&.org/id3v2\&.4\&.0\-frames) .SH "AUTHOR" .PP \fBFred Gleason\fR <\&fredg@paravelsystems\&.com\&> .RS 4 Application Author .RE