Final organization
|
@ -1,16 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
book="booktype-25"
|
||||
base_path=`pwd`
|
||||
pandoc_cmd="docker run --rm -ti -v ${base_path}:${base_path} jagregory/pandoc"
|
||||
|
||||
for html in `find ${book} -name 'index.html'`; do
|
||||
pushd `dirname $html`
|
||||
mkdir -p ${base_path}/`dirname ${html#*/}`
|
||||
$pandoc_cmd -o - -f html -t markdown_github ${base_path}/${html} > `echo "${base_path}/${html#*/}" | sed 's/html$/md/'`
|
||||
popd
|
||||
done
|
||||
|
||||
for static in `find ${book} -name 'static'`; do
|
||||
cp -rp ${static} ${static#*/}
|
||||
done
|
|
@ -1,30 +0,0 @@
|
|||
LibreTime supports direct connection to two popular streaming media servers, the open source **Icecast** (<http://www.icecast.org>) and the proprietary **SHOUTcast** (<http://www.shoutcast.com>). Apart from the software license, the main difference between these two servers is that Icecast supports simultaneous MP3, AAC, Ogg Vorbis or Ogg Opus streaming from LibreTime, whereas SHOUTcast supports MP3 and AAC streams but not Ogg Vorbis or Opus. The royalty-free Ogg Vorbis format has the advantage of better sound quality than MP3 at lower bitrates, which has a direct impact on the amount of bandwidth that your station will require to serve the same number of listeners. Ogg Opus also benefits from good sound quality at low bitrates, with the added advantage of lower latency than other streaming formats. Opus is now an IETF standard (<http://tools.ietf.org/html/rfc6716>) and requires Icecast 2.4 or later to be installed on the streaming server.
|
||||
|
||||
Ogg Vorbis playback is supported in **Mozilla Firefox**, **Google Chrome** and **Opera** browsers, via **jPlayer** (<http://jplayer.org/>), and is also supported in several popular media players, including VideoLAN Client, also known as VLC (<http://www.videolan.org/vlc/>). (See the chapter *Stream player for your website* on how to deliver **jPlayer** to your audience). Ogg Opus is relatively new and is supported natively in the very latest browsers, such as Mozilla Firefox 25.0, and media players including VLC 2.0.4 or later.
|
||||
|
||||
Streaming MP3 below a bitrate of 128kbps is not recommended for music, because of a perceptible loss of high audio frequencies in the broadcast playout. A 96kbps or 64kbps MP3 stream may be acceptable for voice broadcasts if there is a requirement for compatibility with legacy hardware playback devices which do not support Ogg Vorbis or Opus streams.
|
||||
|
||||
Because LibreTime supports simultaneous streaming in multiple formats, it is possible to offer one or more streams via your website, and another independent stream for direct connection from hardware players. You can test whether Ogg streams sound better at low bitrates for yourself, by using the **LISTEN** button in LibreTime's **Master Panel** to switch between streaming formats.
|
||||
|
||||
Conversely, you may have a music station which wants to stream at 160kbps or 192kbps to offer a quality advantage over stations streaming at 128kbps or less. Since Ogg, AAC and MP3 formats use lossy compression, listeners will only hear the benefit of higher streaming bitrates if the media files in the LibreTime storage server are encoded at an equivalent bitrate, or higher.
|
||||
|
||||
UTF-8 metadata in Icecast MP3 streams
|
||||
-------------------------------------
|
||||
|
||||
When sending metadata about your stream to an Icecast server in non-Latin alphabets, you may find that Icecast does not display the characters correctly for an MP3 stream, even though they are displayed correctly for an Ogg Vorbis stream. In the following screenshot, Russian characters are being displayed incorrectly in the *Current Song* field for the MP3 stream:
|
||||
|
||||

|
||||
|
||||
The solution is to specify that the metadata for the MP3 mount point you are using should be interpreted using UTF-8 encoding. You can do this by adding the following stanza to the */etc/icecast2/icecast.xml* file, where *libretime.mp3* is the name of your mount point:
|
||||
|
||||
<mount>
|
||||
<mount-name>/libretime.mp3</mount-name>
|
||||
<charset>UTF-8</charset>
|
||||
</mount>
|
||||
|
||||
After saving the */etc/icecast2/icecast.xml* file, you should restart the Icecast server:
|
||||
|
||||
sudo invoke-rc.d icecast2 restart
|
||||
Restarting icecast2: Starting icecast2
|
||||
Detaching from the console
|
||||
icecast2.
|
Before Width: | Height: | Size: 74 KiB |
|
@ -1,3 +0,0 @@
|
|||
LibreTime's media library is inside the */srv/airtime/stor/* folder on your server, by default. Tracks are uploaded into the imported subdirectory and then a separate directory based upon the user ID # of the user who uploaded it and then into a folder based upon the artist.
|
||||
|
||||
LibreTime unlike Airtime does not currently monitor the files for changes after they are uploaded. The media library is not designed to be edited directly after files are uploaded. This was done as part of a move towards enabling cloud-based file hosting. There are currently two works in progress to support filesystem imports and sync but neither of them have been finished as of the time of this writing. See [#111](https://github.com/LibreTime/libretime/pull/111) and [#514](https://github.com/LibreTime/libretime/pull/514). In addition LibreTime does not write metadata changes back to the files. See [#621](https://github.com/LibreTime/libretime/issues/621)
|
Before Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 8 KiB |
Before Width: | Height: | Size: 21 KiB |
|
@ -1,33 +0,0 @@
|
|||
Live show recording from the input of the server's sound card, if one is fitted, can be enabled in the **Add Show** box of Airtime's **Calendar** (see the *Calendar* chapter for details). During a recording, a red light is shown in the Master Panel, and the word **Recording** appears in a red font to the left of the show name.
|
||||
|
||||

|
||||
|
||||
Before the first broadcast show scheduled for recording begins, you should check that the level of recording is sufficient to ensure a good signal to noise ratio, but not so high a level that clipping (distortion) occurs in the recorded file. You can perform this check using the command **alsamixer** on the Airtime server. This command opens a soundcard mixer application in the server console.
|
||||
|
||||

|
||||
|
||||
Press the **F4** key on your keyboard to set capture levels. Some experimentation may be required to find the correct control on the mixer, using the **Left** and **Right** arrow keys on your keyboard. Levels are set with the **Up** and **Down** arrows, and *Capture* is toggled with the **Space** bar. *Capture dB gain* should be set to *0.00, 0.00* initially.
|
||||
|
||||
If you hear nothing at all in the recording, you may need to set the value of *Input Source* to *Line*, using the **Up** or **Down** arrows. Depending on the particular sound card and sockets you are using, you may have to enable other inputs, such as *Digital* or *S/PDIF*. If a test recording is too quiet, try raising the line output level of your broadcast mixer towards *0dB* before increasing gain above *0dB* on the sound card, in order to achieve the optimal gain structure.
|
||||
|
||||
Using recordings
|
||||
----------------
|
||||
|
||||
After the recording has finished, you can find the recorded file in the **Library**, by searching for *recorder*. The file will be labelled with a **Title** containing a date and time stamp, as well as the name of the show.
|
||||
|
||||

|
||||
|
||||
Click a file and select **Edit Metadata** from the pop-up menu to enter additional details of the recording which will help you find it in searches later, such as **Album** or **Language**. Then click the **Save** button.
|
||||
|
||||

|
||||
|
||||
Cancelling a recording
|
||||
----------------------
|
||||
|
||||
If you wish to cancel the recording of a live show, click on the show in the **Calendar** and select **Cancel Current Show** from the pop-up menu.
|
||||
|
||||

|
||||
|
||||
Airtime will ask you if you are sure about this action, as it cannot be undone. The recorded show file in the Airtime library will be truncated if you click the **OK** button.
|
||||
|
||||

|
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 8.4 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 35 KiB |
|
@ -1,87 +0,0 @@
|
|||
Using an ordinary smartphone and LibreTime, you can upload your audio reports to the studio library or put them straight on the air. Here's how...
|
||||
|
||||
The basic voice recorder app on your phone may not have all the features you need for journalism, but there are plenty of more suitable recording apps available for both iPhone and Android. For instance, searching for 'ogg recorder' in the *Play Store* on an Android phone yields plenty of alternatives. The following example uses *RecForge Lite* because of its configurable recording formats. This free app is limited to three minutes per recording in Ogg and MP3 formats, but there is an unrestricted version available at very modest cost.
|
||||
|
||||

|
||||
|
||||
In the Settings window of the app, set the recording format as Ogg Vorbis, 44.1KHz sample rate, mono. Disable automatic gain control to get a consistent recording level, rather than artificially boosting quiet sounds, which should result in less distortion. Under 'Limit folders browsing' give the app access to all of the SD Card storage of the phone.
|
||||
|
||||
Back in the main recording window of RecForge, create a directory such as '*recordings*' under the */mnt/sdcard/media/audio/* path, which is normally used by the phone's music application. You can then make recordings using the big red button, watching the input level meter to ensure a good signal to noise ratio. The recorded files are automatically named with date and time stamps, but can be renamed in the app later by selecting the **Edit** feature. The latest recordings are listed in the main recording window; individual files can be auditioned by tapping on them.
|
||||
|
||||

|
||||
|
||||
Open the web interface of your station's LibreTime server in the phone's browser, log in with your username and password, and tap **Add Media** on LibreTime's main menu. After tapping the **Add Files** button, the phone will offer a choice of file to upload. By tapping **Select music track** you can browse the */mnt/sdcard/media/audio/* directory on the SD card filesystem, without requiring the installation of a file manager app on the phone.
|
||||
|
||||

|
||||
|
||||
Tap one of the date-and-time-stamped files listed from the '*recordings*' directory to select it, then tap the **OK** button. The files are credited to '*Unknown artist*' because they have not yet been tagged with creator metadata.
|
||||
|
||||

|
||||
|
||||
After tapping the **Start upload** button on the Add Media page, the files are now copied into the remote LibreTime library.
|
||||
|
||||

|
||||
|
||||
You can now add the uploaded files directly to a forthcoming show, use them to create smart blocks or playlists in the **Library**, or edit their metadata to make them easier to find in searches later. One of the limitations of mobile recording is that it isn't always convenient to enter large amounts of text metadata when you're on the move. So a phone app that tagged audio recordings with creator, location and other relevant metadata would be very useful.
|
||||
|
||||
Going live
|
||||
----------
|
||||
|
||||
Mobile apps which enable you to stream directly into LibreTime's live rebroadcast feature include **KoalaSan** for iOS: <http://koalasan.net/> and **BroadcastMySelf** for Android: <https://play.google.com/store/apps/details?id=sa.broadcastmyself> DemoIcesShout for Android also shows promise, although it can only stream a static file, rather than stream from a microphone: <http://droidtools.sourceforge.net/content/icecast-client-android>
|
||||
|
||||
A live workflow does of course depend on a steady network connection between the phone and LibreTime server. Because streaming media on a regular basis can use a lot of bandwidth, it is advisable to use WiFi rather than mobile data (3G/4G) whenever possible, especially when roaming across networks.
|
||||
|
||||
KoalaSan can stream input from either the built-in microphone or the external jack of the iOS device. An example configuration for the **Settings** tab might be:
|
||||
|
||||
Name: LibreTime
|
||||
Server: libretime.example.com
|
||||
Port: 8003
|
||||
Mountpoint: mastermount
|
||||
Stream name: LibreTime
|
||||
Description: A live stream to LibreTime
|
||||
Genre: News
|
||||
Username: masterstreamer
|
||||
Password: masterpassword
|
||||
Codec: mp3
|
||||
Bitrate: 128
|
||||
Protocol: Icecast2
|
||||
Stereo: off
|
||||
AudioBus: off
|
||||
Dump: on
|
||||
Broadcast: on
|
||||
|
||||
You can start streaming from the iOS device by tapping the start button in KoalaSan's **Stream!** tab.
|
||||
|
||||
To configure BroadcastMySelf, tap the gears icon in the top left corner to enter the settings page, then tap **Output Settings**. This action opens the **Icecast Settings** page, where example settings could be:
|
||||
|
||||
Hostname
|
||||
libretime.example.com
|
||||
|
||||
Port
|
||||
8003
|
||||
|
||||
Path
|
||||
/mastermount
|
||||
|
||||
Username
|
||||
masterstreamer
|
||||
|
||||
Password
|
||||
masterpassword
|
||||
|
||||
MP3 Encoder Bitrate
|
||||
128 Kbit/s
|
||||
|
||||
Metadata Template
|
||||
_song__artist
|
||||
|
||||
Streaming Buffer Size
|
||||
MP3 buffer size X 8
|
||||
|
||||
You may also wish to configure the **Tracks Folder** setting, which enables you to stream static files from the storage of the device. Depending on where you keep your audio files, this could be a path such as:
|
||||
|
||||
/mnt/sdcard/media/audio/
|
||||
|
||||
To connect the Android device to the LibreTime server, tap the square button in the lower middle of the main interface. The connection indicator on the button should turn blue, and the message *connected* should be shown. Push up the fader on the left to increase input level from the internal microphone, or push up the fader on the right and tap one of the named files in the upper right window to stream it. Tap either of the **LOCK** buttons to prevent the stream input level being changed accidentally.
|
||||
|
||||
When the connection is made, LibreTime output will fade from scheduled play to the stream from your mobile device. See the chapter *Stream settings* for more details of connection preferences.
|
Before Width: | Height: | Size: 544 KiB |
Before Width: | Height: | Size: 560 KiB |
Before Width: | Height: | Size: 282 KiB |
Before Width: | Height: | Size: 337 KiB |
Before Width: | Height: | Size: 317 KiB |
|
@ -1,68 +0,0 @@
|
|||
If you are using Airtime with Icecast or SHOUTcast for web streaming, you can embed a player applet into your website. **jPlayer** is a player applet (available under the GNU GPL from <http://jplayer.org/>) which uses the *<audio>* tag feature of HTML5 to play your streams. If the listener's browser does not support HTML5, the applet falls back to using Adobe Flash for MP3 format streams.
|
||||
|
||||
Proprietary browsers, such as Internet Explorer on Windows or Safari on Apple OS X, may not support Ogg Vorbis or Opus streams. Listeners who do not wish to install a browser with Ogg support (such as **Mozilla Firefox**, **Google Chrome** or **Opera**) can listen to these streams using a separate media player such as **VideoLAN Client**, also known as VLC (<http://www.videolan.org/vlc/>).
|
||||
|
||||
Example code
|
||||
------------
|
||||
|
||||
You can download the example code for this chapter from:
|
||||
|
||||
[http://sourcefabric.booktype.pro/airtime-25-for-broadcasters/help/static/jPlayer\_demo4.zip](../help/static/jPlayer_demo4.zip "jPlayer demo files")
|
||||
|
||||
Unzip this file on your computer, and then open the file *jplayer-demo.html* in your editor:
|
||||
|
||||
nano jplayer-demo.html
|
||||
|
||||
We'll focus on the two areas that you need to concern yourself with. Firstly, in the *<head>* tag of the document, you'll see some code like this:
|
||||
|
||||
$("#jquery_jplayer_1").jPlayer({
|
||||
ready: function (event) {
|
||||
$(this).jPlayer("setMedia", {
|
||||
oga:"http://sourcefabric.out.airtime.pro:8000/sourcefabric_a"
|
||||
});
|
||||
},
|
||||
swfPath: "js",
|
||||
supplied: "oga",
|
||||
wmode: "window",
|
||||
smoothPlayBar: true,
|
||||
keyEnabled: true
|
||||
});
|
||||
|
||||
This code loads jPlayer, and specifies the source of an Ogg Vorbis stream. When testing on your own server, you should change this setting to the IP address or domain name, port number and mount point of the Icecast server you are using, like so:
|
||||
|
||||
oga: "http://streaming.example.com:8000/airtime_128"
|
||||
|
||||
If your stream is in MP3 format, you will need to prefix the stream setting with mp3, like this:
|
||||
|
||||
mp3: "http://streaming.example.com:8000/airtime_128"
|
||||
|
||||
and change the *supplied* line from:
|
||||
|
||||
supplied: "oga"
|
||||
|
||||
to:
|
||||
|
||||
supplied: "mp3"
|
||||
|
||||
As soon as jPlayer has finished loading, it will automatically begin to play the stream. The parameters *ready*, *ended*, *swfPath* and *supplied* are arguments passed to jPlayer. A full list of constructor arguments is available in the *jPlayer Developer Guide* at <http://www.jplayer.org/latest/developer-guide/>
|
||||
|
||||
jPlayer controls
|
||||
----------------
|
||||
|
||||
Secondly, the *<body>* tag of the file *jplayer-demo.html* defines the controls displayed by jPlayer. These controls can be as simple as just one Play/Pause button, or a fully-fledged playback interface with a playlist, progress bar and volume control. This example code uses one of the simpler skins available for jPlayer, *Blue Monday*.
|
||||
|
||||
A stop button or progress bar is not useful when we are streaming continuously from Icecast or SHOUTcast, so we can remove these tags from the demo code, along with the tags specifying the playback time and file duration. The simplified HTML creates a play/pause button and a mute button, and looks as follows:
|
||||
|
||||
<ul class="jp-controls">
|
||||
<li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li>
|
||||
<li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>
|
||||
<li><a href="javascript:;" class="jp-mute" tabindex="1" title="mute">mute</a></li>
|
||||
<li><a href="javascript:;" class="jp-unmute" tabindex="1" title="unmute">unmute</a></li>
|
||||
<li><a href="javascript:;" class="jp-volume-max" tabindex="1" title="max volume">max volume</a></li>
|
||||
</ul>
|
||||
|
||||
When you open the HTML file *jplayer-demo.html* in a web browser, your player should appear as follows:
|
||||
|
||||

|
||||
|
||||
The original version of this demo code and skin are available from <http://jplayer.org/download/> for further experimentation.
|
Before Width: | Height: | Size: 32 KiB |
|
@ -1,88 +0,0 @@
|
|||
Using the import script
|
||||
=======================
|
||||
|
||||
###NOTE: This page has issues, as the import script is not currently functional
|
||||
|
||||
|
||||
If you have a large number of files in your media library, importing these files one at a time into a broadcast automation system would be time-consuming and tedious. That's why Airtime includes a script that can import an entire directory of files in one go.
|
||||
|
||||
Copying versus watching
|
||||
-----------------------
|
||||
|
||||
There are three main options when using the **airtime-import** script: Either to **copy** or **move** files into Airtime's main storage folder, or to **watch** files elsewhere. Each option has advantages and disadvantages, so you will have to think about how the files will be used in your station in the long term.
|
||||
|
||||
- For files that are *copied* or *moved*, you may run into problems with hard disk space if you do not remove files from the storage server periodically.
|
||||
- For files that are <span style="font-style: italic;">watched</span>, you must make sure that the files are actually going to be there at playout time, otherwise they will be skipped. For this reason, it is not recommended to use the **watch** option for easily-removable storage (like MP3 players or USB memory sticks). There's a strong likelihood that the storage might be unplugged and taken away before playout time. It is also important to make sure that any external hard disk with watched files is powered on, and stays on.
|
||||
|
||||
The **airtime-import** script works from the command line, so you must first log into a console on the Airtime server. In recent versions of Airtime, you no longer need to specify the full file system path to the media files that you wish to import. Copying is specified with the **copy** sub-command:
|
||||
|
||||
airtime-import --copy <directory>
|
||||
|
||||
where *<directory>* is the base directory of the media files that you wish to import.
|
||||
|
||||
Alternatively, you may wish to delete the files from the original location after copying them to the storage archive, which is accomplished with the **move** sub-command:
|
||||
|
||||
airtime-import --move <directory>
|
||||
|
||||
If the new files are exact duplicates of files that have already been imported, the **airtime-import** script will detect this.
|
||||
|
||||
Any users logged into the administration interface will be warned if a **File import** is **in progress**... Users assigned the *admin* privilege should not attempt to change Airtime's default storage directory while an import is taking place.
|
||||
|
||||

|
||||
|
||||
Watching a new folder on the command line is specified by using the **watch add** sub-command:
|
||||
|
||||
airtime-import --watch-add <directory>
|
||||
|
||||
The script will report the name of the folder now being watched, for example:
|
||||
|
||||
airtime-import --watch-add /home/Music/
|
||||
/home/Music/ added to watched folder list successfully
|
||||
|
||||
The watched folder will also be listed on the **Media Folders** page on the **System** menu of the Airtime administration interface. (See the chapter *Media Folders* for making changes to watched folders via the administration interface).
|
||||
|
||||
To obtain a list of currently watched folders in the server console, you can use the **watch list** sub-command:
|
||||
|
||||
airtime-import --watch-list
|
||||
/home/Music/
|
||||
|
||||
Any new files copied to a watched folder (for example, using your desktop computer's file manager) will automatically appear in the Airtime database, and are then ready for playout. In the same way, if you delete a media file using your file manager, it will be automatically removed from the Airtime database, and will no longer be available for playout.
|
||||
|
||||
If you wish to no longer watch a particular folder, you can use the **watch remove** sub-command:
|
||||
|
||||
airtime-import --watch-remove /home/Music/
|
||||
/home/Music/ removed from watched folder list successfully
|
||||
|
||||
Get or set the storage folder path
|
||||
----------------------------------
|
||||
|
||||
See the chapter *Media Folders* for making changes to the storage folder path via the administration interface. The **airtime-import** script also enables you to read or write Airtime's storage path configuration. You can find out the current setting with the **storage-dir get** sub-command:
|
||||
|
||||
airtime-import --storage-dir-get
|
||||
/srv/airtime/stor
|
||||
|
||||
A new storage folder path can be configured using the **storage-dir set** sub-command:
|
||||
|
||||
airtime-import --storage-dir-set /home/Music/
|
||||
Successfully set storage folder to /home/Music/
|
||||
|
||||
The **storage-dir set** sub-command should be used with caution on a production server, because moving the storage folder during scheduled programming has the potential to disrupt your broadcast playout. The Airtime playout engine caches files up to 24 hours ahead, but any last-minute additions to the schedule during storage migration could cause problems.
|
||||
|
||||
<span class="ui-icon ui-icon-circle-check" style="float:left; margin:0 7px 50px 0;"></span> There has been error in communication with Booktype server. Not sure right now where is the problem.
|
||||
|
||||
You should refresh this page.
|
||||
|
||||
- OK
|
||||
- Back
|
||||
- Create
|
||||
- Cancel
|
||||
- Next
|
||||
- Import
|
||||
- Save changes
|
||||
- Couldn't create a group!
|
||||
- enter epub URL
|
||||
- enter Archive.org ID
|
||||
- enter Wikibooks URL
|
||||
- enter Booktype URL
|
||||
- Delete book
|
||||
|
Before Width: | Height: | Size: 25 KiB |