1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta name="description" content="Internet DJ Console (IDJC) is a Shoutcast/Icecast internet radio client incorporating features for live radio show production." />
<meta name="keywords" xml:lang="en" content="idjc dj shoutcast icecast radio linux gtk live recorded voip irc" />
<link rel="shortcut icon" href="favicon.png" type="application/png" />
<link rel="stylesheet" href="style.css" type="text/css" />
<!--[if lte IE 7]><link rel="stylesheet" href="style_ie.css" type="text/css" /><![endif]-->
<title>Internet DJ Console Homepage</title>
<script type="text/javascript">
// Change the title text and highlight a navigation bar option.
function ui(title, menu) {
document.getElementById('title').innerHTML = title;
s = document.getElementById(menu).style;
s.color = "#F70";
s.fontWeight = "bold";
s.textDecoration = "underline";
}
</script>
</head>
<body>
<!-- Hidden h1 title for search engine seeding -->
<h1 class="unshown">Internet DJ Console Homepage IDJC</h1>
<table id="main-table">
<tr><td>
<table>
<tr id="logo-holder">
<td>
<img src="site-logo.png" width="148" height="212" alt="website logo" title="Internet DJ Console homepage"/>
</td>
</tr>
<tr>
<td id="left-sidebar">
<h3>Contents</h3>
<ul id="sidebar-menu">
<li><a href="index.html" id="front-page-nav">Front page</a></li>
<li><a href="tour.html" id="tour-nav">Tour</a></li>
<li>
<ul>
<li><a href="tour_main.html" id="tour-main-nav">Main window</a></li>
<li><a href="tour_miniplayers.html" id="tour-miniplayers-nav">Mini Players</a></li>
<li><a href="tour_output.html" id="tour-output-nav">Output</a></li>
<li><a href="tour_preferences.html" id="tour-preferences-nav">Preferences</a></li>
</ul>
</li>
<li><a href="install.html" id="install-nav">Installation</a></li>
<li>
<ul>
<li><a href="install_standard.html" id="install-standard-nav">Standard</a></li>
<li><a href="install_build.html" id="install-build-nav">Building</a></li>
<li><a href="install_first_run.html" id="install-first-run-nav">First run</a></li>
</ul>
</li>
<li><a href="tutorials.html" id="tutorials-nav">Tutorials</a></li>
<li>
<ul>
<li><a href="tutorials_icecast.html" id="tutorials-icecast-nav">Icecast</a></li>
<li><a href="tutorials_shoutcast.html" id="tutorials-shoutcast-nav">Shoutcast</a></li>
<li><a href="tutorials_voip.html" id="tutorials-voip-nav">VoIP</a></li>
<li><a href="tutorials_jack_ports_demystified.html" id="tutorials-jackportsdemyst-nav">JACK Ports</a></li>
<li><a href="tutorials_secrets.html" id="tutorials-secrets-nav">Secrets</a></li>
</ul>
</li>
<li><a href="code.html" id="code-nav">Extra code</a></li>
<li>
<ul>
<li><a href="code_idjcmon.html" id="code-idjcmon-nav">idjcmon.py</a></li>
<li><a href="code_pipewire_appname.html" id="code-pipewire-appname-nav">pipewire patch</a></li>
</ul>
</li>
<li><a href="contact.html" id="contact-nav">Contact</a></li>
</ul>
</td>
</tr>
</table>
</td>
<td>
<table id="right-table">
<tr>
<td id="top-titlebar">
<h2 id="title"></h2>
</td>
</tr>
<tr>
<td>
<script type="text/javascript">
ui('Installation: Building from source', 'install-build-nav')
</script>
<h4>Deciding if this is a good idea</h4>
<p>The following list contains valid reasons for going to the trouble of installing IDJC from source.</p>
<ul>
<li>IDJC is absent from the repository.</li>
<li>The repository version is ancient but functional.</li>
<li>The repository version has features removed for fear of legal action.</li>
<li>The repository version has a minimum set of features generally.</li>
<li>The repository version is broken.</li>
</ul>
<h4>Removing old versions</h4>
<p>It's a good idea to remove any old versions of IDJC at this point.</p>
<h4>Installing dependencies</h4>
<p>The following software is required to build IDJC or is used by IDJC at run-time.
There should be similarly named binary packages in your package management system for all of these of
which you typically want the library development packages whose names carry the <i>-dev</i> or <i>-devel</i> suffix.</p>
<table id="dep-table">
<tr>
<th>Project name</th><th>Version</th><th>Comment</th>
</tr>
<tr>
<td><a href="https://sourceforge.net/projects/libshoutidjc.idjc.p/files/">libshout-idjc</a> / <a href="https://icecast.org/download/">libshout</a></td><td>2.4.6+</td><td>Required—libshout-idjc is needed for streaming aac(+) and mp2 formats otherwise libshout is recommended</td>
</tr>
<tr>
<td><a href="https://www.python.org/">Python</a></td><td>3.9+</td><td>Required—probably installed already</td>
</tr>
<tr>
<td><a href="https://github.com/quodlibet/mutagen/">mutagen</a></td><td>1.44+</td><td>Required</td>
</tr>
<tr>
<td><a href="https://jackaudio.org/">Jack Audio Connection Kit</a></td><td>0.116.0+</td><td>Required—need library and server</td>
</tr>
<tr>
<td><a href="https://pygobject.readthedocs.io/en/latest/">PyGObject</a></td><td>3.36+</td><td>Required</td>
</tr>
<tr>
<td><a href="https://xiph.org/vorbis/">vorbis-tools</a></td><td>1.2.0+</td><td>Required</td>
</tr>
<tr>
<td><a href="http://www.mega-nerd.com/libsndfile/">libsndfile</a></td><td>1.0.12+</td><td>Required</td>
</tr>
<tr>
<td><a href="http://www.mega-nerd.com/SRC/">libsamplerate</a></td><td>0.1.4+</td><td>Required</td>
</tr>
<tr>
<td><a href="https://developer.gnome.org/glib/">GLib2</a></td><td>2.0.0+</td><td>Required</td>
</tr>
<tr>
<td><a href="https://github.com/jiixyj/libebur128/">libebur128</a></td><td>1.2.4</td><td>Required—for loudness metering</td>
</tr>
<tr>
<td><a href="https://mpg123.org/">mpg123</a></td><td>1.13+</td><td>Recommended—for mp2/mp3 playback</td>
</tr>
<tr>
<td><a href="https://www.twolame.org/">TwoLAME</a></td><td>0.3+</td><td>Recommended—for streaming/recording in the mp2 format</td>
</tr>
<tr>
<td><a href="https://lame.sourceforge.io/">Lame</a></td><td>3.97+</td><td>Recommended—for streaming/recording in the mp3 format</td>
</tr>
<tr>
<td><a href="https://ffmpeg.org/">FFmpeg</a></td><td>5+</td><td>Recommended—for mp4/m4a, ape, mpc, aac(+), webm</td>
</tr>
<tr>
<td><a href="https://xiph.org/flac/">FLAC</a></td><td>1.1.3+</td><td>Recommended—for FLAC playback, recording, and streaming</td>
</tr>
<tr>
<td><a href="https://speex.org/">Speex</a></td><td>1.2rc1+</td><td>Recommended—for Speex playback and streaming</td>
</tr>
<tr>
<td><a href="https://opus-codec.org/">Opus</a></td><td>1.0+</td><td>Recommended—for Opus playback and streaming</td>
</tr>
</table>
<p>For Ubuntu 23.10 users the following command installs the dependencies.</p>
<pre class="ie6-one-line-pre">$ sudo apt install build-essential libc6-dev libglib2.0-dev jackd2 libjack-jackd2-dev libvorbis-dev libsamplerate0-dev libsndfile1-dev python-gi-dev libmpg123-dev libavcodec-dev libavformat-dev libtwolame-dev libmp3lame-dev libflac-dev python3-mutagen libspeex-dev libswscale-dev python3-gi-cairo libebur128-dev libshout-dev pipewire-jack</pre>
<p>If during the execution of the above command you are asked whether to configure your system for jack/realtime I suggest you choose yes if you intend to use the pre-pipewire jack 1 or 2 implementations and choose no if going the pipewire route or if running in a virtual environment.</p>
<p>The following line ensures you have a working python commmand. If it is unavailable to install at least check that /usr/bin/python opens an appropriate version of python e.g. version 3.11, not python 2.7.</p>
<pre>$ <span style="color:green;font-style:italic">sudo apt install python-is-python3</span></pre>
<h4>Optional: Using libshout-idjc (a requirement for streaming aac and mp2)</h4>
<p>Click the relevant link above to download the libshout-idjc source code, then in a console type the following.</p>
<pre>$ cd <span style="color:red" title="This could be correct. If not you need to specify the directory where the downloaded file currently resides.">Downloads</span>
$ tar xzvf libshout-idjc-<span style="color:red;" title="Replace with the actual version number.">[version]</span>.tar.gz
$ cd libshout-idjc-<span style="color:red;" title="Replace with the actual version number.">[version]</span>/
$ ./configure CFLAGS="-O2" --prefix=/usr <span style="color:green;font-style:italic" title="This option is for distributions that primarily use the /usr/lib64 directory for libraries.">--libdir=/usr/lib64</span>
$ make
$ sudo make install
$ sudo ldconfig</pre>
<p>Some distributions primarily keep 64 bit libraries in a directory called lib64 and if that is the case the libdir directive may be necessary (green italic text above and further down the page).</p>
<p>Note that prefix is set to /usr due to some Linux distributions not having a nicely configured /etc/ld.so.conf file.</p>
<h4>Building IDJC from source</h4>
<p>There are two options available to you. One is to get the official release (recommended), the other is to
obtain the development sources which are only casually tested.</p>
<h5>Option 1: Build the latest official release</h5>
<p>Navigate to <a href="https://sourceforge.net/projects/idjc/">https://sourceforge.net/projects/idjc/</a>.</p>
<p>Hit the big green <i>Download</i> button and wait for the download to finish. Make a note of the version number.</p>
<pre>$ cd <span style="color:red" title="This could be correct. If not you need to specify the directory where the downloaded file currently resides.">Downloads</span>
$ tar xzvf idjc-<span style="color:red;" title="Replace with the actual version number.">[version]</span>.tar.gz
$ cd idjc-<span style="color:red;" title="Replace with the actual version number.">[version]</span>/
$ ./configure CFLAGS="-O2" --prefix=/usr <span style="color:green;font-style:italic" title="This option is for distributions that primarily use the /usr/lib64 directory for libraries.">--libdir=/usr/lib64</span>
$ make
$ sudo make install</pre>
<h5>Option 2: Build from the development sources</h5>
<p>Install the additional build dependencies. For Ubuntu 23.10 that would be the following line.</p>
<pre>$ sudo apt install git-core autoconf libtool-bin autopoint imagemagick</pre>
<p>Then type the following.</p>
<pre>
$ git clone git://idjc.git.sourceforge.net/gitroot/idjc/idjc
$ cd idjc/
$ ./bootstrap
$ ./configure CFLAGS="-O2" --prefix=/usr <span style="color:green;font-style:italic" title="This option is for distributions that primarily use the /usr/lib64 directory for libraries.">--libdir=/usr/lib64</span>
$ make
$ sudo make install
</pre>
<p>For systems that don't have <i>sudo</i> configured, use the following form instead.</p>
<pre>su -c "make install"</pre>
<h4>Finally</h4>
<p>At this stage it's installed but see the <a href="install_first_run.html">First run</a> section
to help iron out potential system configuration problems.</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
|