Implicancies Caretakers Issue 12
What do the "caretakers" do ...
- Making message for the mailinglist
- Update the website
- Decide elements on the page / player like iframe with etherpad/xmpp chat ....
- Ensuring the collection of materials on sandbox is complete
- Making the playlist
- Testing the liquidsoap script ahead of time?
- Taking care of the archive
- Update this page
Prepare materials on hub
Move the recorded files to the radio folder: sandbox:/var/www/html/radio
scp file.mp3 hub.sandbox:/var/www/html/radio
If necessary, convert mp4 to mp3
fmpeg -i "name.mp4" "name.mp3"
Rename files
ssh sandbox cd /var/www/html/radio mv ORIGINALNAME.mp3 0_title.mp3
Make a playlist (liquid soap)
See also: https://pzwiki.wdka.nl/mediadesign/Prototyping/2019-2020/T3#Playlist
cd /srv/radio ls /var/www/html/*.mp3 >> playlist.m3u nano playlist.m3u # did some editing, reordered, removed ones we don't want...
Playlist is here ---> /srv/radio/playlist.m3u
The bash script = playlist.sh
Starting/stopping the stream
Caretaker starts a "tmux session", makes it shareable... (ssh to the sandbox)
tmux -S /tmp/radio attach -t radio
Go into the directory where the *.liq is and then
liquidsoap -v *.liq
Starting the playlist
bash playlist.sh
caretaker can eventually press:
ctrl-b d
... to detach from tmux, leaving liquidsoap (and the stream) running.
Watching tmux
others can watch what is happening with
tmux -S /tmp/radio attach -t radio -r
-r (read only) is to prevent you make accidental changes.
Icecast Dashboard
#12.2 21.05 Anna & Avital
Our contribution / decisions
- Full documentation of the entire process of broadcasting the playlist.
- Decisions regarding the webpage structure:
Radio Implicancies broadcasts are placed inside different sections, one for each episode. Every section is curated by the caretakers of the week who can provide a diversified style/navigation/technical implementation.
- 12.2 episode collects reactions through Your world of text, a whiteboard where the user can type inside an infinite space. The idea was to use this "pad" to collect reactions and comments regarding the broadcast during the stream as a sort of living chat moving through space and temporality (in a way). It has some relevant limitations (is not possible to copy and paste for example) that made for us impossibile to use this system to link resources so we decided to keep it only as a sort of live chat.
This is the whole process, step by step
Making the playlist
1] Open a new directory on sandbox in the radio directory for this week's broadcast
cd /var/www/html/radio mkdir 12.number of broadcast ex: mkdir 12.2
2] All the files should be uploaded to the new directory and converted to ogg. format
scp file.mp3 hub.sandbox:/var/www/html/radio/current broadcast directory
ffmpeg -i filename.typeoffile filename.ogg
3] Metadata should be added to the files : title, file name, authors, episode. The title will be used later in the websites javascript.
vorbiscomment -t "title=track_broadcast number_track number" -t "file=file name.ogg" -t "authors=name" -t "episode=12.broadcast number" -w file name.ogg
ex: vorbiscomment -t "title=track_2_1" -t "file=Signals_and_messages_1.0.ogg" -t "authors=mark, damla" -t "episode=12.2" -w Signals_and_messages_1.0.ogg
Check if you add the correct information:
ogginfo filename.ogg
to add a tag without affecting the others, use -a (append)...
vorbiscomment -a -t "title=the_div_id" audio.ogg
to check the tags
vorbiscomment -l audio.ogg
4] Make the playlist
ls *.ogg>>name of playlist.m3u
The playlist is saved as a m3u format.
The name should be unified with name of directory (12.number of broadcast)
ex: ls *.ogg>>12.2.m3u
4] Edit the playlist- you can arrange the order of the playlist
nano name of playlist.m3u
In the editor use ctrl+k to cut a line and ctrl+u to paste.
Playlist is ready for broadcast
Broadcasting
1] Copy the broadcasting liquidsoap script from last broadcast to current broadcast directory.
scp /var/www/html/radio/last broadcast directory/last broadcast script.liq .
The dot in the end means it will be copied to your current location (should be this weeks broadcast directory)
ex: scp /var/www/html/radio/12.1/12.1.liq .
2] Rename the script to have the name of this week's broadcast
ex: mv 12.1.liq 12.2.liq
3] In the script, update the playlist name to the current playlist
ex: nano 12.2.liq
4] Set fallback track - the fallback script should run in a tmux group for the case that the broadcast is not running.
The script live_interrupt.liq is in this directory
cd /var/www/html/radio
We are currently running the script in a tmux group called radio
Attach to group:
tmux -S /tmp/radio attach -t radio
Run the script in the group
liquidsoap -v live_interrupt.liq
Right now the we are using brownnoise.mp3 for the fallback, you can see it in the script
#!/usr/bin/liquidsoap -v set("log.file",false) # set("log.file.path","/tmp/<script>.log") set("log.stdout",true) %include "/srv/radio/passwords.liq" # Add the ability to relay live shows radio = fallback(track_sensitive=false, [input.http("http://echo.lurk.org:999/radioimplicancies_live.ogg"), single("brownnoise.mp3")]) radio = mksafe(radio) output.icecast(%vorbis, host = ICECAST_SERVER_HOST, port = ICECAST_SERVER_PORT, password = ICECAST_SERVER_PASSWORD, mount = "radioimplicancies.ogg", radio) # out(liveorstatic)
5] Create a tmux group that you will run the script where we will run the script.
tmux -S /tmp/group name new -s group name
Running the script in the tmux group allows it to run in the back, not directly from a personal terminal.
Make group public
chgrp publicweb /tmp/group name
6] Run the script in the current broadcast directory (if you are not there, cd to it)
liquidsoap -v 12.2.liq
The broadcast is now running and can be heard in the website
Tips
- You can become the radio user
su radio
You will need to enter the password
- To view all the processes that are currently running on sandbox use:
ps aux
To view only liquidsoap processes:
ps aux | grep liquidsoap
- Stop a process by using:
kill number of process
- Detach from tmux session using ctrl+B, let go and then D.
Archiving
This process will make a file of the broadcast and use the metadata to track indicate while playing the file on the website.
1] Copy archiving script from last week broadcast to current directory
cp /var/www/html/radio/LAST/archive_LAST.liq .
2] Copy ogginfo to srt script to current directory
cp /var/www/html/radio/12.2/ogginfo-to-srt.py
3] Rename archive script
mv archive_12.2.liq archive_12.3.liq
4] Edit script to current week playlist
nano archive_12.3.liq
Adjust the output .ogg file to the name of the script to keep consistency
archive_12.3.ogg
Add an output.file command instead of output.icecast...
output.file(%vorbis, "archive_12.2.ogg", myradio, fallible=true)
5] Run archive script (this process will play the broadcast again so it will take the length of the broadcast to finish)
liquidsoap -v archive_12.3.liq
When it's done you will see the .ogg file of the archived playlist in your directory (in our example archive_12.3.ogg).
You can use ogginfo to see if all the tracks have the metadata. This metadata is important.
ex: ogginfo archive_12.3.ogg
6] This chain of commands will make a .vtt file from our .ogg file. This file will contain our metadata that can later be used.
ogginfo archive_12.3.ogg | python3 ogginfo-to-srt.py --json
ogginfo archive_12.3.ogg | python3 ogginfo-to-srt.py
ogginfo archive_12.3.ogg | python3 ogginfo-to-srt.py --vtt
ogginfo archive_12.3.ogg | python3 ogginfo-to-srt.py --vtt > archive_12.3.vtt
Now the .vtt file is generated.
7] Convert playlist .ogg file to .mp3 (it will be used in the website and will be more stable)
ex: ffmpeg -i archive_12.2.ogg archive_12.2.mp3
8] Copy .mp3 and .vtt files from sandbox to the /12 website directory on the git (you can use scp if you have the repository cloned or your machine or use the online interface of gitea).
9] In index.html, alter the <audio> tag to contain the archived .mp3 file and the .vtt file
<audio controls> <source src="archive_12.2.mp3" type="audio/mp3"> <track default kind="captions" srclang="en" src="archive_12.2.vtt"/> </audio>
10] Give the "li" (list) components an id that correlates with the "title" in the metadata (you can use ogginfo on the .ogg archived playlist file to check again). You can see how it was done in the previous broadcasts.
The Javascript is already there and should work. You can checkout player2.js to see what the script is doing.
Right you can see that the current track that is playing is marked in the broadcast content table. It uses the class "now_playing" but a new script can be written that uses a different one if you like.
If you want to make a different script, that will use a different class, you should copy the current one and them alter.
Result: in the website you can play the archives broadcast (this is not a live stream anymore) and the current track that is playing is marked in the table of contant.
Alternative place for materials
scp -r folder radioimplicancies@pzwart1.wdka.hro.nl:public_html/
scp FILE.mp3 radioimplicancies@pzwart1.wdka.hro.nl:public_html/