__PUBLISH__ 24th of March (during quarantine COVID19) Set up video streaming in icecast Set up icecast and ices to stream live from different computers darkice -c darkice_varia.conf We could also try to stream from our phones http://echo.lurk.org:999/ https://stream.vvvvvvaria.org/ https://echochamber.lurk.org/ (xmpp chat + stream) Software: Servers: - Icecast https://directory.fsf.org/wiki/Icecast Clients(Audio): - Darkice http://darkice.org/ - ices - liquidsoap (client on top of icecast, overly complicated, not necessarily recommended uses a lot of CPU) - mpv https://directory.fsf.org/wiki/Mpv - mixxx (GUI, intense-DJ-feeling) - ffmpeg Clients(Video): - OBS https://obsproject.com/ Clients Experiences with libre streaming: - LibrePlanet organising a conference online https://libreplanet.org/wiki/LibrePlanet:Conference/2020/Streaming using: - mpv https://directory.fsf.org/wiki/Mpv - Gstreamer https://directory.fsf.org/wiki/Gstreamer (streaming software) - Icecast https://directory.fsf.org/wiki/Icecast (receiving server) - Darkice config http://rabarar.github.io/blog/2015/07/02/darkice-and-icecast - Thomas' event http://varia.zone/en/21-party-line.html used: - OBS https://obsproject.com/ - Twitch - Icecast https://directory.fsf.org/wiki/Icecast (I did not use Icecast for that stream) - Run your own Wiki - https://things.bleu255.com/runyourown/Streaming_Service_with_Icecast https://we.riseup.net/assets/29773/Icecast-Streaming-Handbook.pdf - Angeliki hosting the varia streaming server for a while: - Through log files of icecast2 called access.log we can see how many listeners listened to our events - Darkice is more easy, flexible to use than ices. RSS feed and podcasts: https://pad.constantvzw.org/p/unboundlibraries_rss (from the contribution of Wendy to the unbound libraries session of constant) Streams enthusiasm ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ - LAG radio https://ikiwiki.laglab.org/Radio/ - http://stationofcommons.org/ - http://echoraeume.klingt.org/ in Graz/Vienna - http://bidstonobservatory.org/radio in Liverpool observatory - https://wiki.calafou.org/index.php/Radio_Calafou calafou radio - Radio Rietveld - http://radiorietveld.com/ - Hammam Radio - https://yamakan.place/hammamradio/ - Radio Quarentena - https://cpr.org.ar/radio-cuarentena/ - https://yamakan.place/palestine/ - WSK.fm - https://wskfm.bandcamp.com is the radio platform of Manila media art festival,WSK: Festival of the Recently Possible Certificate issues https://certbot.eff.org/docs/ How to's/ streaming homebrew style: On the server: - install icecast: $ sudo apt install icecast2 - fill in the hostname: yourdomain.tld - fill in the passwords - check which ports are occupied: $ netstat -ntlp | grep LISTEN - $ sudo iptables -A INPUT -p tcp -m tcp --dport 8000 -j ACCEPT - follow this (from Basic Configuration): https://things.bleu255.com/runyourown/Streaming_Service_with_Icecast#Basic_Configuration to check errors: $ nano /var/log/icecast/error.log On your computer: - install darkice $ sudo apt install darkice Run Darkice with any config file # Having jack as input is better for sound quality # Not so much in terms of sound quality but in options of combining different # programs (such as jamin, mpv, mplayer and incoming audio from devices) Setup that I use now (Crunk) audio sources(like hardware or mplayer) ---> jack ---> jamin (monitor audio levels) ---> jack ---> darkice ---> icecast - download an example configuration file: http://w-i-t-m.net/darkice_varia.conf - change the settings in the .conf file - install a tool to loop your current soundcard audio as output, such as: - pulseaudio volume control (Linux) - don't forget to open port 8000 on your router (maybe better to open another port like 8001?) - Ready! Run it with this command: $ darkice -c mysettings.conf for video streaming: https://epir.at/2018/03/08/obs-icecast-streaming/ Old javascript and jquery(eww) to put the metadata on the page function radioTitle() { // this is the URL of the json.xml file located on your server. var url = window.location.origin + ':8000/status3.xsl'; // this is your mountpoint's name, mine is called /radio var mountpoint = '/radio'; $.ajax({ type: 'GET', url: url, async: true, jsonpCallback: 'parseMusic', contentType: "application/json", dataType: 'jsonp', success: function (json) { // this is the element we're updating that will hold the track title var title = json[mountpoint].title; title = title.replace(/'''/g, "'") var tracktitle = document.getElementById('tracktitle'); tracktitle.innerHTML = title; }, error: function (e) { console.log(e.message); } }); } connect pulse with JACK (when streaming microphone and soundcard at the same time): https://github.com/jackaudio/jackaudio.github.com/wiki/WalkThrough_User_PulseOnJack Varia different computers/clients one mountpoint If a stream client is down you fallback to another fallback -------------------------------------- EXperiments Many broadcasters https://echochamber.lurk.org/ http://w-i-t-m.net:8001/nightnoises https://wiki.radioreference.com/index.php/Live_Audio/Ubuntu_Darkice Embed m3u into an html page > (autoplay cannot be used anymore) > you need this -> https://lurk.org/muc/player.js
-------------------------------------- Experiences Experiences streaming video (luke&simon): icecast can do video! woot woot icecast + https is a bit tricky (to hide the source password) anyone can load a film into VLC and connect to icecast to stream (but it only supports certain file types like webm and so on. A lot of good quality films come in proprietary formats like mkv (i think) and you need to convert them though) you can pipe output from ffmpeg straight to icecast, see https://raw.githubusercontent.com/nwgat/scripts/master/icewebm.sh (this works! but the video bombs out after a while...) video streaming is fucking black magic and i have no idea what i'm doing me and simon are trying to get our 200 films out of the hard drive but not just a link dump, we want to socialise through programming films together fucking hell this person is a wizard https://stackoverflow.com/questions/47509316/ffmpeg-mp4-to-webm-through-icecast-server-livestream this seems to be the key to ascending into piracy nirvana ffmpeg -i lajetee.mkv -acodec libopus -b:a 64k -vcodec libvpx -b:v 500K -crf 25 -vf scale=640:360 -content_type video/webm -loop 365 -g 10 -keyint_min 10 icecast://source:foobar@place.com:8000/lajetee.webm (hacking on it @ https://git.autonomic.zone/decentral1se/stream.hbbs.decentral1.se/src/branch/master/stream.sh) So, like, this seems to work for some period of time with a few watchers. When someone tunes in it is not clear if they join at the same time!? It was bombing out before I added the magic "-g 10 -keyint_min 10" (again, not a fucking clue what is going on) but it seems to work for at least 2 people so far. subtitles need to be added in somehow? unknown how to do that my laptop is maxing out 2 cores streaming this 2.2gb mkv file (ffmpeg is converting it to webm on the fly for the stream!? wtf is going on really i don't know) so it seems like this streaming would take out your laptop over time. The stream maybe bombed out after like 20 mins I think but maybe it was because I edited the file by accident. I am not sure but it seems like there are some reliability issues to sort out here. Next day: streamed out total recall for 3 people and it was laggy and the CPU was 100% while streaming (1 core) chatted with crunk about this, we need to investigate hardware requirements to know what we need to have we need to investigated bandwidth requirements to know how much we can support aiming for <= 5 screens (multiple people behind screens!) as the first milestone with non-laggy watching maybe ffmpeg+icecast is not the one true solution obs supports streaming: https://obsproject.com/wiki/Streaming-With-SRT-Protocol#general-overview (SRT!) next step: come up with some calculations based on research/discussisions on what are the hardware/network requirements for doing streaming for a few screens and decent quality so that we can plan for the next step simoon & decentral1se taking notes @ https://wiki.hbbs.decentral1.se