etherpump/publish/streaming.raw.html

218 lines
16 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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