https://github.com/awakening-church/awakening-nginx-rtmp/tre...
You can hack on this foundation to create your own solution.
Also, you can use Terraform to easily run this on Azure:
https://github.com/awakening-church/live-infrastructure
Or DigitalOcean:
https://github.com/awakening-church/live-infrastructure/tree...
It's fairly cheap, costs about 25 cents an hour on DigitalOcean. Compare to hundreds of dollars for some other live streaming services.
Thanks for sharing.
You can also get per-hour Wowza AMI EC2 instances, so scale to those when you peak, and fallback to self-hosted for lulls.
Much better deal (and probably way better CDN) than AWS provides, but AWS egress rates are suicidally bad, especially for high bandwidth stuff like video. If you're doing any serious streaming, avoid AWS like the plague unless you like livestreaming yourself filing for bankruptcy.
I'll definitely keep this in my pocket as we move towards our own live streaming platform. Thanks for sharing!
ffmpeg -i [...] -codec:v libx264 -profile:v baseline -pix_fmt yuv420p -codec:a aac -tune zerolatency -f dash -window_size 5 /tmp/live/live.mpd
Check out the ffmpeg-formats man page for a list of options you can use with -f dash. Then serve /tmp via nginx and point the reference client [0] at your mpd file. Tada!You might want to use the nginx RTMP module, too, if you want to receive an RTMP stream from e.g. obs and wang-bang it into DASH.
[0] http://reference.dashif.org/dash.js/v2.6.8/samples/dash-if-r...
I'll write up a more detailed blog post at some point.
Chrome does not support HLS.
DASH isn't plug and play. It's an XML representation describing how to ingest media streams using something like Media Source Extensions.
There are a lot of players out there that will do this heavy lifting for you.
https://www.github.com/krad/morsel https://www.github.com/krad/plainview https://www.github.com/krad/pupil
morsel ingests h264 & aac and produces fragmented mp4 files & playlists. plainview reads the playlists and uses MSE in the browser to play them via the web pupil is a WIP server that reads h264 & aac over TCP and passes that data to morsel, then uploads to any s3 compatible storage (AWS, Minio, etc)
The swift stuff works on Linux, iOS, tvOS, etc
edit:
There's also a WIP project called "kubrick" https://github.com/krad/kubrick
It's a simple POP wrapper around AVFoundation that allows for building media processing pipelines.
There's an example in the project for reading video samples and passing them through a series of Metal shaders to produce fun effects.
I feel like any streaming implementation should be setup you broadcast to put yourself hosted setup, and to twitch/youtube/facebook/et. al. I haven't done any live stream/podcasts, but I think there is already proxy software that does this.