__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:
    - Icecast https://directory.fsf.org/wiki/Icecast
    - Darkice http://darkice.org/
    - ices
    - liquidsoap (client on top of icecast, overly complicated, not necessarily recommended
    - mpv https://directory.fsf.org/wiki/Mpv
    - mixxx (GUI, intense-DJ-feeling)
    - ffmpeg

    - OBS https://obsproject.com/

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)

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: 
- 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

    Run Darkice with any config file

- 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:
- don't forget to open port 8000 on your router (maybe better to open another port like 8001?)
- Ready! Run it with this command:


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

<span>
</span>



--------------------------------------
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