• Building a HLS Muxing Raspberry Pi Cluster

    It was quite a long time ago now that I started HLS-Stream-Creator, and I've previously released an example of automating HLS-Stream-Creator so that it receives and processes workloads.

    I never really expected that I'd actually have much practical use for HLS Stream Creator when I created it (I created it as a means to learning about HLS in advance of a 2nd interview), particularly as I wasn't generating/publishing any video at the time.

    Over time, though, that's changed and my needs have grown from occasionally invoking the script to wanting the convenience of having a dedicated muxing pool so that I can simply submit a video and have it come out in HTTP Live Streaming (HLS) format (particularly useful now that I have videos.bentasker.co.uk).

    Although I'm not going to focus on the Command and Control aspect (at it's heart it's a simple REST API) in any depth, this documentation will detail the process I followed in order to have 3 Raspberry Pi's PXE boot and run HLS-Stream-Creator as a service in order to receive arbitrary videos, calculate the output bitrates and then generate HLS output.

    It's as much an opportunity to document the process I used to PXE boot Raspberry Pi's with a NFS root filesystem.

  • HLS Stream Creator

    HLS Stream Creator is a script which acts as a wrapper to FFMPEG in order to simplify remuxing video into HTTP Live Streaming (HLS) format.

    Originally written as research into HLS for a job interview, I've continued to develop it and since used it for a range of projects, including creating a raspberry-pi based transcoding cluster.

  • HLS Stream Creator V1.0

    Version:1.0
    Code:View 1.0 on Github / Public Repos


    Project Info

    HLS-Stream-Creator is a simple BASH Script designed to take a media file, segment it and create an M3U8 playlist for serving using HLS. There are numerous tools out there which are far better suited to the task, and offer many more options. This project only exists because I was asked to look into HTTP Live Streaming in depth, so after reading the IETF Draft I figured I'd start with the basics by creating a script to encode arbitrary video into a VOD style HLS feed.


    Release Notes

    Version 1.0 is the very first actual release of HLS-Stream-Creator. Up until this point the advice has always been to use the latest revision on the master branch. Releases were introduced under HLS-36 to allow easier identification of which bugs affected which versions/revisions of the script.

    As a result, every issue to date currently falls under Version 1.0, these can be viewed here.

    Relevant Issues

    • HLS-6 - Support for Adaptive Streams
    • HLS-8 - Support for using linear streams as input
    • HLS-27 - Support for multiple output resolutions
    • HLS-35 - Bugfix: Correct issue with key specification in manifest