{"id":13567735,"url":"https://github.com/jdkula/HLSStreamer","last_synced_at":"2025-04-04T02:32:53.484Z","repository":{"id":62617988,"uuid":"560309993","full_name":"jdkula/HLSStreamer","owner":"jdkula","description":"iOS app that allows you to stream your screen over HLS, no external server necessary","archived":false,"fork":false,"pushed_at":"2022-11-04T11:39:04.000Z","size":1677,"stargazers_count":11,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-08-01T13:38:41.602Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jdkula.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-11-01T07:39:37.000Z","updated_at":"2024-06-25T06:53:34.000Z","dependencies_parsed_at":"2023-01-21T22:03:39.194Z","dependency_job_id":null,"html_url":"https://github.com/jdkula/HLSStreamer","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdkula%2FHLSStreamer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdkula%2FHLSStreamer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdkula%2FHLSStreamer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdkula%2FHLSStreamer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jdkula","download_url":"https://codeload.github.com/jdkula/HLSStreamer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223083228,"owners_count":17084834,"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":[],"created_at":"2024-08-01T13:02:40.980Z","updated_at":"2024-11-04T22:33:12.677Z","avatar_url":"https://github.com/jdkula.png","language":"Swift","funding_links":[],"categories":["Swift"],"sub_categories":[],"readme":"# HLSStreamer\niOS app that allows you to stream your screen over HLS, no external server or desktop-side applications necessary.\n\n## Building\n\nClone the repo and open `HLSStreamer.xcodeproj` in Xcode. It will run on iOS devices running iOS/iPadOS 15 or later.\n\n## Usage\n\nWhile streaming to the app, your iDevice will host a server by default at port `8888`, providing the following endpoints:\n\n- `/`: A simple webpage with a Video.js player that will play back the livestream. This is suitable for use in OBS.\n- `/orientation`: Will return the string `up`, `down`, `left`, or `right` depending on the orientation of your iDevice.\n    If your iDevice is right-side-up, it will be `up`.\n- `/index.m3u8`: The HLS stream playlist. You can open this in VLC or embed it elsewhere and it will play correctly.\n- `/video/:file`: The video segments themselves\n\nThe UI provides a couple options:\n- `Port`: You can adjust what port the server runs on.\n- `Segment Duration`: The higher this is, the more reliable the stream, but the longer the delay.\n- `Video Bitrate (Mbps)`: The higher this is, the higher quality the streams but the higher the bandwidth\n  they use. In my testing, adjusting this hasn't seemed to do much.\n\nFiles are stored in your iDevice's temporary storage and deleted when they leave the HLS sliding window (see below).\nThey are also cleared when you stop streaming.\n\n## Details\n\nGenerates an HLS stream in fMP4 fragments (`header.mp4` and `\\(sequenceNumber).m4s`) that are served from the\niDevice in a sliding window lasting approx. 60 seconds. System audio and video are captured, but the user\nmicrophone is not (even if that option is selected while attempting to broadcast to `HLSStreamer`.\n\n## Demo\n\nRecorded on Chrome, streaming from iPad (stream delay of approx. 5 seconds)\n\n\nhttps://user-images.githubusercontent.com/4166625/199675929-ec517b69-efc2-45b9-89e0-a85d95f286e7.mp4\n\n\n\u003cimg alt=\"Interface screenshot\" width=\"400\" src=\"https://user-images.githubusercontent.com/4166625/199672372-7b14371b-1423-406a-a155-02ff3e72fe76.PNG\"\u003e\n\u003cimg alt=\"Interface screenshot while streaming\" width=\"400\" src=\"https://user-images.githubusercontent.com/4166625/199672383-c2fca114-bb77-45de-be01-d4a36a0c5514.PNG\"\u003e\n\n\n## Attributions\n\nThe HTTP server is provided by [Swifter](https://github.com/httpswift/swifter)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdkula%2FHLSStreamer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdkula%2FHLSStreamer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdkula%2FHLSStreamer/lists"}