Internet radio browser GUI for music/video streams from various directory services.

โŒˆโŒ‹ โŽ‡ branch:  streamtuner2


Artifact [dbf8d8b1b8]

Artifact dbf8d8b1b8883d45c7fe996f4f8df4f243dc6bd9:


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>Audio players</title>
<link rel="stylesheet" type="text/css" href="C.css">
<script type="text/javascript" src="jquery.js"></script><script type="text/javascript" src="jquery.syntax.js"></script><script type="text/javascript" src="yelp.js"></script>
</head>
<body><div class="page" role="main">
<div class="header"><div class="trails" role="navigation"><div class="trail">
<a class="trail" href="index.html" title="โ™ช Streamtuner2"><span class="media"><span class="media media-image"><img src="img/logo.png" class="media media-inline" alt="โ™ช"></span></span> Streamtuner2 </a>ย โ€บ <a class="trail" href="index.html#functions" title="Functions">Functions</a>ย ยป <a class="trail" href="configuration.html" title="Configuration / Settings dialog">Configuration / Settings dialog</a>ย โ€บ <a class="trail" href="configuration.html#apps" title="Player application settings">Player application settings</a>ย ยป </div></div></div>
<div class="body">
<div class="hgroup"><h1 class="title"><span class="title">Audio players</span></h1></div>
<div class="region">
<div class="contents">
<p class="p">On BSD/Linux systems there are a plethora of audio players. In streamtuner2 you can
	<span class="link"><a href="configuration.html" title="Configuration / Settings dialog">configure</a></span> most of them as target application. Mostly it makes sense to use a single
	application for all audio formats. But at least the */* media type should be handled
	by a generic player, like vlc.</p>
<p class="p"><span class="media"><span class="media media-image"><img src="img/configapps.png" class="media media-inline" alt=""></span></span></p>
<p class="p">A few common applications and invocation strings to use are:</p>
<div class="table"><div class="inner"><div class="region"><table class="table">
<tr>
<td><p class="p"><span class="app">Audacious</span></p></td>
<td style="border-left-style: solid;"><p class="p"><span class="cmd">audacious</span></p></td>
<td style="border-left-style: solid;"><p class="p">audio</p></td>
</tr>
<tr class="shade">
<td style="border-top-style: solid;"><p class="p"><span class="app">XMMS2</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p"><span class="cmd">xmms2 %m3u</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">audio</p></td>
</tr>
<tr>
<td style="border-top-style: solid;"><p class="p"><span class="app">Amarok</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p"><span class="cmd">amarok -l %pls</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">audio</p></td>
</tr>
<tr class="shade">
<td style="border-top-style: solid;"><p class="p"><span class="app">Exaile</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p"><span class="cmd">exaile</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">audio</p></td>
</tr>
<tr>
<td style="border-top-style: solid;"><p class="p"><span class="app">mplayer</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p"><span class="cmd">mplayer %srv</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">console</p></td>
</tr>
<tr class="shade">
<td style="border-top-style: solid;"><p class="p"><span class="app">VLC</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p"><span class="cmd">vlc %u</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">video</p></td>
</tr>
<tr>
<td style="border-top-style: solid;"><p class="p"><span class="app">Totem</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p"><span class="cmd">totem %u</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">video</p></td>
</tr>
<tr class="shade">
<td style="border-top-style: solid;"><p class="p"><span class="app">Media Player</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p"><span class="cmd">wmplayer.exe %asx</span></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">Win32</p></td>
</tr>
</table></div></div></div>
<p class="p">Some audio players open a second instance when you actually want to switch radios.
	In this case it's a common workaround to write <span class="code">pkill vlc ; vlc %u</span> instead,
	which ends the previous player process and starts it anew.
        For VLC there's however also the <span class="code">--one-instance</span> option, which sometimes
        works better. (And sometimes not.)</p>
<p class="p">Some applications, like Rhythmbox or Banshee, are primarily playlist managers, not players,
        and cannot be invoked with a station URL. This makes them less suitable for use with streamtuner2.
        (Same goes for streamtuner2 itself. It's not a player, but just a playlist browser.)</p>
</div>
<div id="placeholders" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">URL placeholders</span></h2></div>
<div class="region"><div class="contents">
<p class="p">Listed audio players get run with a streaming server address (URL).
	These can either be direct MP3/Ogg servers (<span class="var">http://example.org:7843/</span>)
	and sometimes playlist files (<span class="var">http://example.org/listen.pls</span>)
	- depending on the channel directory.</p>
<p class="p">Most audio players automatically handle any station URLs. Some however
	support just a few formats, or can't handle modern XSPF playlists for
	instance. Which is why you can control this by adding a placeholder
	after the configured application name:</p>
<div class="table"><div class="inner"><div class="region"><table class="table">
<thead><tr>
<td><p class="p">Placeholder</p></td>
<td style="border-left-style: solid;"><p class="p">Alternatives</p></td>
<td style="border-left-style: solid;"><p class="p">URL/Filename type</p></td>
</tr></thead>
<tr>
<td><p class="p">%pls</p></td>
<td style="border-left-style: solid;"><p class="p">%url %u %r</p></td>
<td style="border-left-style: solid;"><p class="p">Either a remote .pls resource (fastest), or a local .pls file (if converted)</p></td>
</tr>
<tr class="shade">
<td style="border-top-style: solid;"><p class="p">%m3u</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">%f %g %m</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">Provides a local .m3u file for the streaming station</p></td>
</tr>
<tr>
<td style="border-top-style: solid;"><p class="p">%srv</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">%d %s</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">Direct link to first streaming address, e.g. http://72.5.9.33:7500</p></td>
</tr>
<tr class="shade">
<td style="border-top-style: solid;"><p class="p">%xspf</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">%x</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">Xiph.org shareable playlist format (for modern players)</p></td>
</tr>
<tr>
<td style="border-top-style: solid;"><p class="p">%jspf</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">%j</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">JSON playlist format (widely unsupported)</p></td>
</tr>
<tr class="shade">
<td style="border-top-style: solid;"><p class="p">%asx</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p"></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">Some obscure Windows playlist format (don't use that)</p></td>
</tr>
<tr>
<td style="border-top-style: solid;"><p class="p">%smil</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p"></p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">Standardized multimedia sequencing lists (which nobody uses either)</p></td>
</tr>
</table></div></div></div>
<p class="p">Preferrably use the long %abbr names for configuration. The
        default is <span class="var">%pls</span> if you leave it out. (Most directories
        already provide PLS files, which avoids any extra conversion by ST2
        which sometimes delay playback.)</p>
<p class="p">A few channels (like Jamendo) send custom JSON playlist snippets,
        which no audio player would understand. Which is why they're always
        pre-converted.</p>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents">
<p class="p">Most audio players like %pls, yet sometimes the
	older %m3u format more.  Streamripper requires %srv for recording.</p>
<p class="p">Use the newer <span class="var">%xspf</span> format if your player supports
	it. This format retains the maximum of station infos (such as
	homepages etc.), and thus often makes for better bookmarking directly
	in your player.</p>
</div></div></div></div>
</div></div>
</div></div>
<div id="row_placeholders" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Other placeholders</span></h2></div>
<div class="region"><div class="contents">
<p class="p">In addition to stream URL + type placeholders (<span class="var">%r</span>, <span class="var">%x</span>, 
	<span class="var">%pls</span>, <span class="var">%m3u</span>, etc),	you can also pass row
	placeholders. These contain the stream information like title or
	bitrate, or any other internal field:</p>
<div class="table"><div class="inner"><div class="region"><table class="table">
<thead><tr>
<td><p class="p">Placeholder</p></td>
<td style="border-left-style: solid;"><p class="p">As variable</p></td>
<td style="border-left-style: solid;"><p class="p">Field content</p></td>
</tr></thead>
<tr>
<td><p class="p">%title</p></td>
<td style="border-left-style: solid;"><p class="p">$title</p></td>
<td style="border-left-style: solid;"><p class="p">Station title</p></td>
</tr>
<tr class="shade">
<td style="border-top-style: solid;"><p class="p">%genre</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">$genre</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">Stream category or genre list</p></td>
</tr>
<tr>
<td style="border-top-style: solid;"><p class="p">%playing</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">$playing</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">Currently playing song, or geographic location</p></td>
</tr>
<tr class="shade">
<td style="border-top-style: solid;"><p class="p">-</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">$url</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">Unfiltered stream url (may contain internal urn:xx:id)</p></td>
</tr>
<tr>
<td style="border-top-style: solid;"><p class="p">%format</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">$format</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">The MIME type ("audio/mpeg")</p></td>
</tr>
<tr class="shade">
<td style="border-top-style: solid;"><p class="p">%bitrate</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">$bitrate</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">Known stream bitrate, if any</p></td>
</tr>
<tr>
<td style="border-top-style: solid;"><p class="p">%extra</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">$extra</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">Comments or timer settings</p></td>
</tr>
<tr class="shade">
<td style="border-top-style: solid;"><p class="p">%favourite</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">$favourite</p></td>
<td style="border-top-style: solid;border-left-style: solid;"><p class="p">If bookmarked</p></td>
</tr>
</table></div></div></div>
<p class="p">Not all fields are used in all channels. Sometimes they're repurposed (like <span class="var">playing</span>
	often doubles as Location: field). And some channels may even use custom internal names.</p>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">You often want to use such placeholders if you have a player or recording shell script, such as
	<span class="link"><a href="http://fossil.include-once.org/streamtuner2/artifact/51b695f41d9f9ad2" title="http://fossil.include-once.org/streamtuner2/artifact/51b695f41d9f9ad2"><span class="file">contrib/cmdline/streamripper_addgenre</span></a></span>
	to handle them. Or if you define a <span class="link"><a href="specbuttons.html" title="Special extra/mini buttons">mini-toolbar specbutton</a></span>
	with custom commands.</p></div></div></div></div>
</div></div>
</div></div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Other players</span></h2></div>
<div class="region"><div class="contents">
<p class="p">Here a few other configuration examples for other
players/backends.</p>
<div class="terms"><div class="inner"><div class="region"><dl class="terms">
<dt class="terms">MPD</dt>
<dd class="terms">
<p class="p">
       Rocus van Oosten <span class="link"><a href="https://sourceforge.net/p/streamtuner2/discussion/1173108/thread/82b6be86/" title="https://sourceforge.net/p/streamtuner2/discussion/1173108/thread/82b6be86/">recommends</a></span>
       following wrapper script to start playing radio streams via MPD right away:
    </p>
<div class="code"><pre class="contents ">MPD_HOST='10.0.0.222' # or your MPD host
export MPD_HOST
mpc clear
mpc load $1
mpc play</pre></div>
<p class="p">
	Save it as <span class="file">mpc-pls</span> script and configure it in streamtuner as
	<span class="cmd">mpc-pls %pls</span> for example. You can find an extended
	version in the <span class="file">contrib/cmdline/</span> directory.
    </p>
</dd>
</dl></div></div></div>
</div></div>
</div></div>
<div id="" class="sect"><div class="inner">
<div class="hgroup"><h2 class="title"><span class="title">Windows config</span></h2></div>
<div class="region"><div class="contents">
<div class="note note-bug" title="Bug"><div class="inner"><div class="region"><div class="contents"><p class="p">There's a few gothchas when running streamtuner2 on
Windows.</p></div></div></div></div>
<div class="list"><div class="inner"><div class="region"><ul class="list">
<li class="list"><p class="p">You will often have to quote command paths (e.g. to 
  <span class="cmd">"C:/Program Files/Mozilla Firefox/firefox.exe"</span> or
  <span class="cmd">vlc.exe</span>) in double quotes.  In particular if those paths
  contain spaces.</p></li>
<li class="list"><p class="p">If you're using streamripper.exe it's best to put it into a directory
  without spaces. For some reason quoting the full exe path will not pass on
  parameters.</p></li>
<li class="list"><p class="p">If you want to be extra safe, just extend your system %PATH variable
  to include all relevant directories. Then just specify the basenames, like
  <span class="file">firefox.exe</span> for browsing, or <span class="file">vlc.exe</span> as
  player.</p></li>
</ul></div></div></div>
<div class="note" title="Note"><div class="inner"><div class="region"><div class="contents"><p class="p">As reported by Oliver in the sourceforge Discussion
board.</p></div></div></div></div>
</div></div>
</div></div>
<div class="sect sect-links" role="navigation">
<div class="hgroup"></div>
<div class="contents">
<div class="links guidelinks"><div class="inner">
<div class="title"><h2><span class="title">More Information</span></h2></div>
<div class="region"><ul><li class="links "><a href="configuration.html#apps" title="Player application settings">Player application settings</a></li></ul></div>
</div></div>
<div class="links seealsolinks"><div class="inner">
<div class="title"><h2><span class="title">See Also</span></h2></div>
<div class="region"><ul><li class="links "><a href="index.html#functions" title="Functions">Functions</a></li></ul></div>
</div></div>
</div>
</div>
</div>
<div class="clear"></div>
</div>
<div class="footer"></div>
</div></body>
</html>