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.
205 lines
8.7 KiB
205 lines
8.7 KiB
4 years ago
|
__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/
|
||
|
|
||
|
|
||
|
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
|
||
|
- $ 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
|
||
|
|
||
|
|
||
|
|
||
|
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
|
||
|
--------------------------------------
|
||
|
|
||
|
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>
|
||
|
<audio id="player" preload="none" src="http://w-i-t-m.net:8001/nightnoises"> </audio>
|
||
|
<div>
|
||
|
<button onclick="document.getElementById('player').play()">Play</button>
|
||
|
<button onclick="document.getElementById('player').pause();document.getElementById('player').src=document.getElementById('player').src;">Stop</button>
|
||
|
<button onclick="document.getElementById('player').volume += 0.1">Vol +</button>
|
||
|
<button onclick="document.getElementById('player').volume -= 0.1">Vol -</button>
|
||
|
</div>
|
||
|
</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
|