minimal-examples-lowlevel/http-server/minimal-http-server-hls/README.md
This example demonstrates how to use the protocol_lws_hls plugin to dynamically serve HTTP Live Streaming (HLS) content from static .mp4 and .mkv files. It recursively scans the specified media directory, creates an HTML index, and chunks video files on the fly into HLS .ts segments.
$ cmake . && make
$ ./lws-minimal-http-server-hls
[2026/07/08 12:00:00:0000] USER: LWS minimal http server HLS | visit http://localhost:7681
[2026/07/08 12:00:00:0000] USER: Media dir: /usr/local/share/libwebsockets-test-server/hls
Visit http://localhost:7681 to view the generated media library.
--media-dir <path>: Override the default directory containing media files (default: installed media/ path).--help: Show built-in LWS options (e.g. -d <log level>).If you want to use the HLS plugin with lwsws (the LWS JSON-configured web server) instead of this minimal C example, you can enable and configure the plugin and mounts via your lejp vhost configuration file:
{
"vhosts": [
{
"name": "localhost",
"port": 7681,
"ws-protocols": [
{
"lws-hls": {
"status": "ok",
"media-dir": "/path/to/your/media"
}
}
],
"mounts": [
{
"mountpoint": "/media",
"origin": "file:///usr/local/share/libwebsockets-test-server/hls/mount-origin",
"default": "index.html"
},
{
"mountpoint": "/media/hls",
"origin": "callback://lws-hls"
}
]
}
]
}