{"id":13393964,"url":"https://github.com/shimberger/gohls","last_synced_at":"2025-06-12T07:12:42.324Z","repository":{"id":3969239,"uuid":"39337344","full_name":"shimberger/gohls","owner":"shimberger","description":"A server that exposes a directory for video streaming via web interface","archived":false,"fork":false,"pushed_at":"2023-03-24T08:03:08.000Z","size":3408,"stargazers_count":570,"open_issues_count":12,"forks_count":83,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-03-13T19:39:19.294Z","etag":null,"topics":["ffmpeg","golang","hacktoberfest","hls","react","video-stream","videojs"],"latest_commit_sha":null,"homepage":"https://shimberger.github.io/gohls/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shimberger.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2015-07-19T14:51:17.000Z","updated_at":"2025-02-17T12:23:00.000Z","dependencies_parsed_at":"2023-07-06T19:33:53.709Z","dependency_job_id":null,"html_url":"https://github.com/shimberger/gohls","commit_stats":{"total_commits":140,"total_committers":10,"mean_commits":14.0,"dds":"0.16428571428571426","last_synced_commit":"180d7246abc9ce585800edfc7661fa41155f8400"},"previous_names":["shimberger/golang-hls"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/shimberger/gohls","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shimberger%2Fgohls","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shimberger%2Fgohls/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shimberger%2Fgohls/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shimberger%2Fgohls/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shimberger","download_url":"https://codeload.github.com/shimberger/gohls/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shimberger%2Fgohls/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259418300,"owners_count":22854192,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ffmpeg","golang","hacktoberfest","hls","react","video-stream","videojs"],"created_at":"2024-07-30T17:01:03.923Z","updated_at":"2025-06-12T07:12:42.286Z","avatar_url":"https://github.com/shimberger.png","language":"Go","funding_links":[],"categories":["Go","HarmonyOS","Infrastructure \u0026 Delivery"],"sub_categories":["Windows Manager","Streaming Servers"],"readme":"# Golang HLS Streamer\n\n[![GitHub Actions: Build, and may release a new snapshot](https://github.com/shimberger/gohls/actions/workflows/build_and_release_snapshot.yml/badge.svg)](https://github.com/shimberger/gohls/actions/workflows/build_and_release_snapshot.yml) \n[![GoDoc](https://godoc.org/github.com/shimberger/gohls?status.svg)](https://godoc.org/github.com/shimberger/gohls)  \n\nSimple server that exposes a directory for video streaming via HTTP Live Streaming (HLS). Uses ffmpeg for transcoding.\n\n*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.*\n\n## Running it\n\n*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 [https://ffmpeg.org/download.html](https://ffmpeg.org/download.html).\n\n### 1. Download the binary for your operating system\n\nYou can find the latest release on the releases page [https://github.com/shimberger/gohls/releases](https://github.com/shimberger/gohls/releases) or just download a current snapshot:\n\n- [Windows (64 bit)](https://s3.amazonaws.com/gohls/gohls-windows-amd64-snapshot.tar.gz)\n- [Linux (64 bit)](https://s3.amazonaws.com/gohls/gohls-linux-amd64-snapshot.tar.gz)\n- [Linux (32 bit)](https://s3.amazonaws.com/gohls/gohls-linux-386-snapshot.tar.gz)\n- [Linux (Arm 64 bit)](https://s3.amazonaws.com/gohls/gohls-linux-arm64-snapshot.tar.gz)\n- [macOS (64 bit)](https://s3.amazonaws.com/gohls/gohls-osx-snapshot.tar.gz)\n- [macOS (Arm (M1) 64 bit)](https://s3.amazonaws.com/gohls/gohls-osx-arm64-snapshot.tar.gz)\n\n### 2. Create a configuration file\n\nThe configuration is stored in JSON format. Just call the file `gohls-config.json` or whatever you like. The format is as follows:\n\n```\n{\n\t\"folders\": [\n\t\t{\n\t\t\t\"path\": \"~/Videos\",\n\t\t\t\"title\": \"My Videos\"\n\t\t},\n\t\t{\n\t\t\t\"path\": \"~/Downloads\",\n\t\t\t\"title\": \"My Downloads\"\n\t\t}\n\t]\n}\n```\n\nThis will configure which directories on your system will be made available for streaming. See the screenshot for details:\n\n![](https://s3-eu-west-1.amazonaws.com/captured-krxvuizy1557lsmzs8mvzdj4/yd4ei-20181024-24215053.png)\n\n### 3. Run the server\n\nExecute the command `gohls serve -config \u003cpath-to-config\u003e` 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 \u003cpath-to-config\u003e`\n\n### 4. Open a web browser\n\nVisit the URL [http://127.0.0.1:8080](http://127.0.0.1:8080) to access the web interface.\n\n## Contributing\n\n### Requirements\n\n- [go installed](https://golang.org/dl/)\n- [npm installed](https://nodejs.org/en/) *(NPM is part of Node.js)*\n- bash\n\n### Initial setup\n\n1. Clone the repository `git@github.com:shimberger/gohls.git`\n2. Build frontend `cd ui/ \u0026\u0026 npm install \u0026\u0026 npm run build \u0026\u0026 cd ..`\n\n### Running server\n\nTo then run the development server execute: `./scripts/run.sh serve`\n\n## License\n\nSee [LICENSE.txt](https://github.com/shimberger/gohls/blob/master/LICENSE.txt)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshimberger%2Fgohls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshimberger%2Fgohls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshimberger%2Fgohls/lists"}