|
|
|
# Homebrew Bioscoop Wiki
|
|
|
|
|
|
|
|
[TOC]
|
|
|
|
|
|
|
|
## File sharing with Dat
|
|
|
|
|
|
|
|
Dat is a peer-to-peer file sharing technology. It means we can share our files
|
|
|
|
directly between our computers without using services like WeTransfer and
|
|
|
|
Google Drive as an intermediate step. It is still an experimental technology
|
|
|
|
but it's getting there.
|
|
|
|
|
|
|
|
We're still waiting on the newer more reliable version of [Dat desktop](https://github.com/datproject/dat-desktop/pull/649)
|
|
|
|
to be released. Until that day comes, we have to use the command-line interface. Luckily,
|
|
|
|
it's very easy to install.
|
|
|
|
|
|
|
|
To get started, just download and unzip this file for your operating system:
|
|
|
|
[GNU/Linux](https://github.com/datproject/dat/releases/download/v14.0.2/dat-14.0.2-linux-x64.zip),
|
|
|
|
[MacOS](https://github.com/datproject/dat/releases/download/v14.0.2/dat-14.0.2-macos-x64.zip)
|
|
|
|
or [Windows](https://github.com/datproject/dat/releases/download/v14.0.2/dat-14.0.2-win-x64.zip).
|
|
|
|
Then you can run the `dat` binary in the unzipped folder. On GNU/Linux, that
|
|
|
|
might look like the following commands.
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ curl -sOL https://github.com/datproject/dat/releases/download/v14.0.2/dat-14.0.2-linux-x64.zip
|
|
|
|
$ unzip dat-14.0.2-linux-x64.zip
|
|
|
|
$ cd dat-14.0.2-linux-x64
|
|
|
|
$ ./dat --version # just testing...
|
|
|
|
```
|
|
|
|
|
|
|
|
Then, creating a new Dat is as easy as the following.
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ dat create myfolder
|
|
|
|
```
|
|
|
|
|
|
|
|
Where `myfolder` is the folder you want to share with friends.
|
|
|
|
|
|
|
|
See the [Dat usage documentation](https://github.com/datproject/dat#usage) for more.
|
|
|
|
|
|
|
|
## Video streaming with Icecast
|
|
|
|
|
|
|
|
Video streaming is hard. It seems to be more about how many data centers you
|
|
|
|
have hardware in and what deals you've struck with ISPs for larger bandwidth.
|
|
|
|
We don't have any of that.
|
|
|
|
|
|
|
|
The aim is to stream visual media between small numbers of friends on regular
|
|
|
|
household laptops and old computers. We aim to explore what are the limits for
|
|
|
|
the homebrew setup.
|
|
|
|
|
|
|
|
### The Architecture
|
|
|
|
|
|
|
|
Most people seem to recommend [Icecast](https://icecast.org/) and
|
|
|
|
[OBS](https://obsproject.com/). It also seems to be possible to use plain old
|
|
|
|
[ffmpeg](https://www.ffmpeg.org/).
|
|
|
|
|
|
|
|
### Requirements
|
|
|
|
|
|
|
|
What are the CPU requirements? What are the bandwidth requirements? What kind
|
|
|
|
of RAM do we need? What are the other things we need to take into account and
|
|
|
|
how can we reason about the requirements for video streaming between friends?
|
|
|
|
We hope to document all this as we find out.
|
|
|
|
|
|
|
|
### Icecast Format
|
|
|
|
|
|
|
|
> What is Icecast, the program?
|
|
|
|
>
|
|
|
|
> Icecast is a streaming server, which can stream audio (and video) to
|
|
|
|
> listeners/viewers. It supports Ogg (Vorbis, Theora), Opus, FLAC and WebM
|
|
|
|
> (VP8/VP9), nonfree codecs/formats like MP4 (H.264, MPEG4), M4A, NSV, AAC and
|
|
|
|
> MP3 might work, but we do not officially support those.
|
|
|
|
|
|
|
|
So, we aim for [WebM](https://www.webmproject.org/).
|
|
|
|
|
|
|
|
### Setting up Icecast
|
|
|
|
|
|
|
|
TODO.
|
|
|
|
|
|
|
|
### Tweaking Icecast
|
|
|
|
|
|
|
|
- [Configuring Icecast](https://epir.at/2018/03/08/obs-icecast-streaming/)
|
|
|
|
|
|
|
|
### Converting Film File Formats
|
|
|
|
|
|
|
|
Trying the following so far.
|
|
|
|
|
|
|
|
```
|
|
|
|
$ ffmpeg -i myfilm.format myfilm.otherformat
|
|
|
|
```
|
|
|
|
|
|
|
|
However, that seems to take 10 years to convert anything. There is an epic
|
|
|
|
looking ffmpeg [documetation page](https://trac.ffmpeg.org/wiki/Encode/VP9) all
|
|
|
|
about convert to webm which we are looking into.
|
|
|
|
|
|
|
|
Some notes from IRC chat:
|
|
|
|
|
|
|
|
- If your film was recorded with 25 FPS and you're encoding with 100 FPS (see
|
|
|
|
status line at the bottom from ffmpeg conversion) then it will be done in 4
|
|
|
|
times faster than real time. If encoding at less than 25 FPS, then it will go
|
|
|
|
slower than real time.
|
|
|
|
|
|
|
|
- The FPS that you can encode is determined by your CPU power. GPUs can be used
|
|
|
|
but a random person on IRC tells me that better results are seen whilst using
|
|
|
|
CPUs.
|
|
|
|
|
|
|
|
- Amazing human from IRC says: "I use an i9-9900K with 16 threads at 5ghz per
|
|
|
|
thread and things still take long... whatever you have it will never be fast
|
|
|
|
enough"
|
|
|
|
|
|
|
|
- Someone on the Icecast IRC said that we can stream any format we like but
|
|
|
|
some might just break (and then don't even bother asking haha). So it might
|
|
|
|
be possible to skip the conversion step.
|
|
|
|
|
|
|
|
It also seems to be possible to use [HandBrake](https://handbrake.fr/) although
|
|
|
|
it's unclear where the options in the menu are for doing the conversion.
|
|
|
|
|
|
|
|
### Streaming to Icecast
|
|
|
|
|
|
|
|
- [support.mayfirst.org/wiki/StreamDesktop](https://support.mayfirst.org/wiki/StreamDesktop)
|
|
|
|
- [wiki.xiph.org/index.php?title=Icecast_Server/Streaming_WebM_to_Icecast_with_FFmpeg](https://wiki.xiph.org/index.php?title=Icecast_Server/Streaming_WebM_to_Icecast_with_FFmpeg&mobileaction=toggle_view_desktop)
|