Pumping pads as files into publishing frameworks!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

218 lines
16 KiB

<html>
<head>
<script src="/versions.js"></script>
<link href="../stylesheet.css" rel="stylesheet">
<link href="https://pad.vvvvvvaria.org/p/streaming" rel="alternate" title="Etherpad" type="text/html">
<link href="streaming.raw.txt" rel="alternate" title="Plain text" type="text/plain">
<link href="streaming.raw.html" rel="alternate" title="HTML" type="text/html">
<link href="streaming.meta.json" rel="alternate" title="Meta data" type="application/json">
<meta charset="utf-8">
<title>streaming</title>
</head>
<body>__PUBLISH__<br>
<br>24th of March (during quarantine COVID19)<br>
<br>Set up video streaming in icecast<br>Set up icecast and ices to stream live from different computers darkice -c darkice_varia.conf <br>We could also try to stream from our phones<br>
<br>
<a href="http://echo.lurk.org:999/" rel="noreferrer noopener">http://echo.lurk.org:999/</a>
<br>
<a href="https://stream.vvvvvvaria.org/" rel="noreferrer noopener">https://stream.vvvvvvaria.org/</a>
<br>
<a href="https://echochamber.lurk.org/" rel="noreferrer noopener">https://echochamber.lurk.org/</a>    (xmpp chat + stream)<br>
<br>
<strong>Software:</strong>
<br>
<ul class="indent">
<li>Servers:</li>
</ul>    - Icecast <a href="https://directory.fsf.org/wiki/Icecast" rel="noreferrer noopener">https://directory.fsf.org/wiki/Icecast</a>
<br>
<ul class="indent">
<li></li>
<li>Clients(Audio):</li>
</ul>    - Darkice <a href="http://darkice.org/" rel="noreferrer noopener">http://darkice.org/</a>
<br>    - ices<br>    - liquidsoap (client on top of icecast, overly complicated, not necessarily recommended<br>
<ul class="indent">
<li>    uses a lot of CPU)</li>
</ul>    - mpv <a href="https://directory.fsf.org/wiki/Mpv" rel="noreferrer noopener">https://directory.fsf.org/wiki/Mpv</a>
<br>    - mixxx (GUI, intense-DJ-feeling)<br>    - ffmpeg<br>
<br>
<ul class="indent">
<li>Clients(Video):</li>
</ul>    - OBS <a href="https://obsproject.com/" rel="noreferrer noopener">https://obsproject.com/</a>
<br>
<br>
<ul class="indent">
<li>Clients </li>
<li></li>
</ul>
<strong>Experiences with libre streaming:</strong>
<br>
<br>    - LibrePlanet organising a conference online <a href="https://libreplanet.org/wiki/LibrePlanet:Conference/2020/Streaming" rel="noreferrer noopener">https://libreplanet.org/wiki/LibrePlanet:Conference/2020/Streaming</a> using:<br>        - mpv <a href="https://directory.fsf.org/wiki/Mpv" rel="noreferrer noopener">https://directory.fsf.org/wiki/Mpv</a>
<br>        - Gstreamer <a href="https://directory.fsf.org/wiki/Gstreamer" rel="noreferrer noopener">https://directory.fsf.org/wiki/Gstreamer</a> (streaming software)<br>        - Icecast <a href="https://directory.fsf.org/wiki/Icecast" rel="noreferrer noopener">https://directory.fsf.org/wiki/Icecast</a>  (receiving server)<br>        - Darkice config <a href="http://rabarar.github.io/blog/2015/07/02/darkice-and-icecast" rel="noreferrer noopener">http://rabarar.github.io/blog/2015/07/02/darkice-and-icecast</a>
<br>
<br>    - Thomas' event <a href="http://varia.zone/en/21-party-line.html" rel="noreferrer noopener">http://varia.zone/en/21-party-line.html</a> used:<br>        - OBS <a href="https://obsproject.com/" rel="noreferrer noopener">https://obsproject.com/</a>
<br>        - Twitch<br>
<s>        - Icecast </s>
<a href="https://directory.fsf.org/wiki/Icecast" rel="noreferrer noopener">
<s>https://directory.fsf.org/wiki/Icecast</s>
</a>
<s> (I did not use Icecast for that stream)</s>
<br>
<ul class="indent">
<li>
<ul class="indent">
<li>- Run your own Wiki<ul class="indent">
<li>- <a href="https://things.bleu255.com/runyourown/Streaming_Service_with_Icecast" rel="noreferrer noopener">https://things.bleu255.com/runyourown/Streaming_Service_with_Icecast</a>
</li>
<li>
<a href="https://we.riseup.net/assets/29773/Icecast-Streaming-Handbook.pdf" rel="noreferrer noopener">https://we.riseup.net/assets/29773/Icecast-Streaming-Handbook.pdf</a>
</li>
</ul>
</li>
</ul>
</li>
<li>- Angeliki hosting the varia streaming server for a while: <ul class="indent">
<li>- Through log files of icecast2 called access.log we can see how many listeners listened to our events</li>
<li>- Darkice is more easy, flexible to use than ices. </li>
</ul>
</li>
</ul>
<br>
<strong>RSS feed and podcasts:</strong>
<br>
<a href="https://pad.constantvzw.org/p/unboundlibraries_rss" rel="noreferrer noopener">https://pad.constantvzw.org/p/unboundlibraries_rss</a> (from the contribution of Wendy to the unbound libraries session of constant)<br>
<br>
<br>
<strong>  Streams enthusiasm  </strong>
<br>  ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓  <br>  ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓  <br>  ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓  <br>- LAG radio <a href="https://ikiwiki.laglab.org/Radio/" rel="noreferrer noopener">https://ikiwiki.laglab.org/Radio/</a>
<br>- <a href="http://stationofcommons.org/" rel="noreferrer noopener">http://stationofcommons.org/</a>
<br>- <a href="http://echoraeume.klingt.org/" rel="noreferrer noopener">http://echoraeume.klingt.org/</a> in Graz/Vienna<br>- <a href="http://bidstonobservatory.org/radio" rel="noreferrer noopener">http://bidstonobservatory.org/radio</a> in Liverpool observatory<br>- <a href="https://wiki.calafou.org/index.php/Radio_Calafou" rel="noreferrer noopener">https://wiki.calafou.org/index.php/Radio_Calafou</a> calafou radio<br>- Radio Rietveld - <a href="http://radiorietveld.com/" rel="noreferrer noopener">http://radiorietveld.com/</a>
<br>- Hammam Radio - <a href="https://yamakan.place/hammamradio/" rel="noreferrer noopener">https://yamakan.place/hammamradio/</a>
<br>- Radio Quarentena - <a href="https://cpr.org.ar/radio-cuarentena/" rel="noreferrer noopener">https://cpr.org.ar/radio-cuarentena/</a>
<br>- <a href="https://yamakan.place/palestine/" rel="noreferrer noopener">https://yamakan.place/palestine/</a>
<br>
<br>
<br>
<strong>Certificate issues</strong>
<br>
<a href="https://certbot.eff.org/docs/" rel="noreferrer noopener">https://certbot.eff.org/docs/</a>
<br>
<br>
<ul class="indent">
<li></li>
</ul>
<strong>
<u>How to's/ streaming homebrew style:</u>
</strong>
<br>
<br>On the server:<br>- install icecast: <br>
<ul class="indent">
<li>$ sudo apt install icecast2<ul class="indent">
<li>- fill in the hostname: yourdomain.tld</li>
<li>- fill in the passwords</li>
</ul>
</li>
</ul>- $ sudo iptables -A INPUT -p tcp -m tcp --dport 8000 -j ACCEPT<br>- follow this (from Basic Configuration): <a href="https://things.bleu255.com/runyourown/Streaming_Service_with_Icecast#Basic_Configuration" rel="noreferrer noopener">https://things.bleu255.com/runyourown/Streaming_Service_with_Icecast#Basic_Configuration</a>
<br>
<br>
<br>
<br>On your computer:<br>
<br>- install darkice<br>
<ul class="indent">
<li></li>
<li>$ sudo apt install darkice</li>
</ul>
<br>    Run Darkice with any config file<br>
<ul class="indent">
<li>
<ul class="indent">
<li>
<ul class="indent">
<li># Having jack as input is better for sound quality</li>
<li># Not so much in terms of sound quality but in options of combining different</li>
<li># programs (such as jamin, mpv, mplayer and incoming audio from devices)</li>
</ul>
</li>
</ul>
</li>
<li>
<ul class="indent">
<li>Setup that I use now (Crunk)<ul class="indent">
<li>audio sources(like hardware or mplayer) ---&gt; jack ---&gt; jamin (monitor audio levels) ---&gt; jack</li>
<li>---&gt; darkice ---&gt; icecast</li>
<li></li>
</ul>
</li>
</ul>
</li>
</ul>
<br>- download an example configuration file: <a href="http://w-i-t-m.net/darkice_varia.conf" rel="noreferrer noopener">http://w-i-t-m.net/darkice_varia.conf</a>
<br>- change the settings in the .conf file<br>- install a tool to loop your current soundcard audio as output, such as:<br>
<ul class="indent">
<li>- pulseaudio volume control (Linux)</li>
</ul>- don't forget to open port 8000 on your router (maybe better to open another port like 8001?)<br>- Ready! Run it with this command:<br>
<br>
<ul class="indent">
<li>$ darkice -c mysettings.conf </li>
</ul>
<br>for video streaming: <a href="https://epir.at/2018/03/08/obs-icecast-streaming/" rel="noreferrer noopener">https://epir.at/2018/03/08/obs-icecast-streaming/</a>
<br>
<br>
<br>
<br>Old javascript and jquery(eww) to put the metadata on the page<br>function radioTitle() {<br>
<br>// this is the URL of the json.xml file located on your server.<br>var url = window.location.origin + ':8000/status3.xsl';<br>// this is your mountpoint's name, mine is called /radio<br>var mountpoint = '/radio';<br>
<br>$.ajax({  type: 'GET',<br>           url: url,<br>           async: true,<br>           jsonpCallback: 'parseMusic',<br>           contentType: "application/json",<br>           dataType: 'jsonp',<br>           success: function (json) {<br>       // this is the element we're updating that will hold the track title    <br>       var title = json[mountpoint].title;<br>       title = title.replace(/'''/g, "'")<br>       var tracktitle = document.getElementById('tracktitle');<br>           tracktitle.innerHTML = title;<br>         },<br>           error: function (e) {    console.log(e.message);  <br>         }<br>     });<br>  }<br>
<br>
<br>
<br>connect pulse with JACK (when streaming microphone and soundcard at the same time): <a href="https://github.com/jackaudio/jackaudio.github.com/wiki/WalkThrough_User_PulseOnJack" rel="noreferrer noopener">https://github.com/jackaudio/jackaudio.github.com/wiki/WalkThrough_User_PulseOnJack</a>
<br>
<br>Varia <br>--------------------------------------<br>
<br>
<strong>
<u>EXperiments</u>
</strong>
<br>
<br>
<strong>Many broadcasters</strong>
<br>
<a href="https://echochamber.lurk.org/" rel="noreferrer noopener">https://echochamber.lurk.org/</a>
<br>
<a href="http://w-i-t-m.net:8001/nightnoises" rel="noreferrer noopener">http://w-i-t-m.net:8001/nightnoises</a>
<br>
<br>
<a href="https://wiki.radioreference.com/index.php/Live_Audio/Ubuntu_Darkice" rel="noreferrer noopener">https://wiki.radioreference.com/index.php/Live_Audio/Ubuntu_Darkice</a>
<br>
<br>
<strong>Embed m3u into an html page</strong>
<br>&gt; (autoplay cannot be used anymore)<br>&gt; you need this -&gt; <a href="https://lurk.org/muc/player.js" rel="noreferrer noopener">https://lurk.org/muc/player.js</a>
<br>
<br>&lt;span&gt;<br>
<ul class="indent">
<li>&lt;audio id="player" preload="none" src="<a href="http://w-i-t-m.net:8001/nightnoises" rel="noreferrer noopener">http://w-i-t-m.net:8001/nightnoises</a>"&gt; &lt;/audio&gt;</li>
<li>&lt;div&gt;<ul class="indent">
<li>&lt;button onclick="document.getElementById('player').play()"&gt;Play&lt;/button&gt;</li>
<li>&lt;button onclick="document.getElementById('player').pause();document.getElementById('player').src=document.getElementById('player').src;"&gt;Stop&lt;/button&gt;</li>
<li>&lt;button onclick="document.getElementById('player').volume += 0.1"&gt;Vol +&lt;/button&gt;</li>
<li>&lt;button onclick="document.getElementById('player').volume -= 0.1"&gt;Vol -&lt;/button&gt;</li>
</ul>
</li>
<li>&lt;/div&gt;</li>
</ul>&lt;/span&gt;<br>
<br>
<br>
<br>--------------------------------------<br>
<strong>Experiences</strong>
<br>
<br>Experiences streaming video (luke&amp;simon):<br>    icecast can do video! woot woot<br>    icecast + https is a bit tricky (to hide the source password)<br>    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)<br>    you can pipe output from ffmpeg straight to icecast, see <a href="https://raw.githubusercontent.com/nwgat/scripts/master/icewebm.sh" rel="noreferrer noopener">https://raw.githubusercontent.com/nwgat/scripts/master/icewebm.sh</a> (this works! but the video bombs out after a while...)<br>    video streaming is fucking black magic and i have no idea what i'm doing<br>    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<br>
<br>fucking hell this person is a wizard <a href="https://stackoverflow.com/questions/47509316/ffmpeg-mp4-to-webm-through-icecast-server-livestream" rel="noreferrer noopener">https://stackoverflow.com/questions/47509316/ffmpeg-mp4-to-webm-through-icecast-server-livestream</a> this seems to be the key to ascending into piracy nirvana<br>
<br>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 <br>
<br>(hacking on it @ <a href="https://git.autonomic.zone/decentral1se/stream.hbbs.decentral1.se/src/branch/master/stream.sh)" rel="noreferrer noopener">https://git.autonomic.zone/decentral1se/stream.hbbs.decentral1.se/src/branch/master/stream.sh)</a>
<br>
<br>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.<br>
<br>subtitles need to be added in somehow? unknown how to do that<br>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.<br>
<br>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.<br>
<br>Next day:<br>    streamed out total recall for 3 people and it was laggy and the CPU was 100% while streaming (1 core)<br>    chatted with crunk about this, we need to investigate hardware requirements to know what we need to have<br>    we need to investigated bandwidth requirements to know how much we can support<br>    aiming for &lt;= 5 screens (multiple people behind screens!) as the first milestone with non-laggy watching<br>    maybe ffmpeg+icecast is not the one true solution<br>    obs supports streaming: <a href="https://obsproject.com/wiki/Streaming-With-SRT-Protocol#general-overview" rel="noreferrer noopener">https://obsproject.com/wiki/Streaming-With-SRT-Protocol#general-overview</a> (SRT!)<br>    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<br>
<br>simoon &amp; decentral1se taking notes @ <a href="https://wiki.hbbs.decentral1.se" rel="noreferrer noopener">https://wiki.hbbs.decentral1.se</a>
<br>
</body>
</html>