This project allow anyone to live stream with several different video quality similar to big platforms. The first part is the streamer app, it bridge the gap between the transcoding app FFMPEG and IPFS. The second part is the viewer app, it receive and reconstruct the live stream in HLS format to be used with any compatible media player.
How It's Made
The streamer app first launch FFMPEG to transcode video receive on a local UDP address. I use OBS studio to feed that address with a live view of my screen. The app also starts an HTTP server configured to receive the 4 stream variants; 1080p60, 720p60, 720p30, 480p30 in HLS format. Video data is then sent to IPFS via HTTP. IPFS chunks and hashes the 4 video segments then I create a DAG node to tie the 4 segments plus the previous node. This node hash is finally publish with GossipSub on the topic "livelike". On the other side. The viewer app subscribe to the same topic and receive the hash of some node. The node received contains a link to the previous one and so the stream can be reconstructed if needed. Nodes also links to the 4 video segments. Those hashes are used to keep updated HLS playlists of the stream variants and they are served via HTTP to any compatible player. The HLS player continuously call the local IPFS gateway with the hash of the video segment it wants and play the video. Voila!