Harlan Iverson f716be29f4 added flossing without a boss | 6 年之前 | |
---|---|---|
app | 6 年之前 | |
doc | 6 年之前 | |
media | 6 年之前 | |
scripts | 6 年之前 | |
uspooge-app | 6 年之前 | |
.dockerignore | 6 年之前 | |
.gitignore | 6 年之前 | |
Dockerfile | 6 年之前 | |
Dockerfile.static | 6 年之前 | |
Dockerfile.streaming | 6 年之前 | |
MIT-LICENSE.txt | 6 年之前 | |
README.md | 6 年之前 | |
assets | 6 年之前 | |
config.edn | 6 年之前 | |
iSpooge.bfproject | 6 年之前 | |
layout | 6 年之前 | |
md-pages | 6 年之前 | |
md-posts | 6 年之前 | |
new.md | 6 年之前 | |
nginx.conf | 6 年之前 | |
public | 6 年之前 | |
screen.css | 6 年之前 |
A system for video websites and apps.
No centralization unless you want there to be.
Syndicate in common formats. Sites with the POSSE.
The site is built from the ground up to be static with progressive enhancement on the client. It should be able to run offline, and also be enhanced by the latest and greatest cloud services. Video can be hosted as an original file, or transcoded for adaptive web and mobile playback.
It was built on a RasPi to be as constrained an accessible as possible, and to demononstrate the Tiny DataCenter project in action. It could be ported to run on any static web host; current deployment model is a simple Docker container that serves HTTP and static content.
It's 2018... people can discover your website via word of mouth, ping of text, and RSS aggregators.
Each site has /feed.xml
which is an RSS feed of the latest items. In the
config.edn
file for the project, one can simply add tags to a list like
:rss-filters ["ispooge" "video"]
and then /ispooge.xml
and /video.xml
will be exposed with those items filtered.
Out of the box, feedback is solicited via Email and Phone number. Those enable a person to get started right away, without setting up IT systems or being concerned with moderation. Many YouTube Live and Twitch channels are based around live feedback, so that could very easily become a priority.
Marketing can happen as normal. Being that the mechanics of decentralization are different, the marketing channels and metrics will be different.
The IT scales by separating read and write paths intelligently, with read cache tunable at several levels, and scaling out of the box via CDN.
Scripts are mostly named with verbs and nouns. Eg. if you scripts/start-A.sh
there will be
a scripts/stop-A.sh
.
From a high level, the site needs to be build with Cryogen before anything can be served. Once it's built, it needs to go into a static container. Around that static container goes the streaming container... in techno babel, the streaming container proxies to the static container.
Media is served from the static container. Dev is currently possible without starting
the streaming container, but it's so cheap you should. This will very likely soon
change as more rules are added to the nginx.conf
file.
Note that we've not taken care to run multiple sites on one box yet... in theory just a few changes need to be made around mapping resources. It should be possible without much trouble.
The example only uses the 360p stream, but you can extrapolate the others. The
config is set to take any number; by convention I end it with _size
. Adaptive
playback is set for 360, 720, 240 in nginx.conf
.
scripts/start-build.sh
- starts the Cryogen builder processscripts/build-static.sh
- builds a snapshot from what Cryogen has builtscripts/start-static.sh
- starts the snapshot that was built
scripts/build-streaming.sh
- builds the live video streaming server
scripts/start-streaming.sh
- starts the live streamig server we just built
Connect to http://$HOST:33936/
and browse to Live
on the menu bar, or go direct
to http://$HOST:33936/live-360p.html
.
Publish an RTMP stream such as OBS or a webcam to rtmp://$HOST:33935/ispoogedaily_local/ispoogedaily_360
.
For the best results, you should use the transcoding options available... to do this
you publish instead to rtmp://$HOST:33935/ispoogedaily_source/ispoogedaily_360
and then run the
transcoding script scripts/transcode-stream-360p.sh
. This script is optimized for
RasPi3's H264 accelerated hardware.
Copy the RTMP stream you wish to syndicate upstream... usually the highest quality variant:
ffmpeg -i rtmp://$HOST:33935/ispoogedaily_local/ispoogedaily_720 -c copy -f flv rtmp://_____
Project is available under the MIT license. Please contact us for customizations; we prefer to keep them public and MIT licensed.