Skip to content


Repository files navigation

Golang HLS Streamer

GitHub Actions: Build, and may release a new snapshot GoDoc

Simple server that exposes a directory for video streaming via HTTP Live Streaming (HLS). Uses ffmpeg for transcoding.

This project is cobbled together from all kinds of code I had lying around so it's pretty crappy all around. It also has some serious shortcomings.

Running it

Important: You need the ffmpeg and ffprobe binaries in your PATH. The server will not start without them. You can find builds most operating systems at

1. Download the binary for your operating system

You can find the latest release on the releases page or just download a current snapshot:

2. Create a configuration file

The configuration is stored in JSON format. Just call the file gohls-config.json or whatever you like. The format is as follows:

	"folders": [
			"path": "~/Videos",
			"title": "My Videos"
			"path": "~/Downloads",
			"title": "My Downloads"

This will configure which directories on your system will be made available for streaming. See the screenshot for details:

3. Run the server

Execute the command gohls serve -config <path-to-config> e.g. gohls serve -config gohls-config.json to serve the videos specified by the config file. To make the server listen on another port or address just use the serve command with --listen like so (the example uses port 7000 on all interfaces): gohls serve --listen :7000 -config <path-to-config>

4. Open a web browser

Visit the URL to access the web interface.



Initial setup

  1. Clone the repository
  2. Build frontend cd ui/ && npm install && npm run build && cd ..

Running server

To then run the development server execute: ./scripts/ serve