{"id":42686133,"url":"https://github.com/klaxa/mjpeg-proxy","last_synced_at":"2026-01-29T12:21:38.365Z","repository":{"id":272736116,"uuid":"917239186","full_name":"klaxa/mjpeg-proxy","owner":"klaxa","description":"mjpeg-proxy to smoothen framerate written in Rust","archived":false,"fork":false,"pushed_at":"2025-02-21T17:22:42.000Z","size":62,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-21T18:27:51.044Z","etag":null,"topics":["mjpeg","proxy-server","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/klaxa.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-15T16:06:40.000Z","updated_at":"2025-02-21T17:22:45.000Z","dependencies_parsed_at":"2025-01-16T10:50:48.280Z","dependency_job_id":"1b2f31ff-d208-40c8-8309-a64362018fb0","html_url":"https://github.com/klaxa/mjpeg-proxy","commit_stats":null,"previous_names":["klaxa/mjpeg-proxy"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/klaxa/mjpeg-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klaxa%2Fmjpeg-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klaxa%2Fmjpeg-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klaxa%2Fmjpeg-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klaxa%2Fmjpeg-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/klaxa","download_url":"https://codeload.github.com/klaxa/mjpeg-proxy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klaxa%2Fmjpeg-proxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28877510,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T10:31:27.438Z","status":"ssl_error","status_checked_at":"2026-01-29T10:31:01.017Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["mjpeg","proxy-server","rust"],"created_at":"2026-01-29T12:21:37.712Z","updated_at":"2026-01-29T12:21:38.348Z","avatar_url":"https://github.com/klaxa.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"mjpeg-proxy\n===========\n\nAfter dealing with network cameras that produce arbitrary framerate mjpeg streams, I was fed up enough to start this project.\nThis software is a proxy for mjpeg streams, reading in arbitrary framerate streams and serving them to clients at a smooth configurable fixed framerate.\n\nUsage\n-----\n\nCheck out the source and compile it using `cargo build` or `cargo build --release`. The configuration is read from `config.yml` in the current working directory. To start the server, execute the binary in a path with a configuration file  (e.g. `target/debug/mjpeg-proxy` from the repository's root directory).\n\nConfiguration\n-------------\n\nA sample configuration file is supplied using all currently available configuration values:\n\n```yaml\ndefault:\n  address: 127.0.0.1\n  port: 8080\n  streams:\n    cam_1:\n      path: cam-1.mjpeg\n      url: http://some-stream.com/stream.mjpeg\n      fps: 25\n    cam_2:\n      path: cam-2.mjpeg\n      url: http://some-stream.com/stream2.mjpeg\n      fps: 25\n```\n\n\n### root element\n\nThe root element of the configuration object is a dictionary of servers. In this example the server is called `default`.\n### Server configuration\n#### address\n\nConfigures the address to listen on. Default: `127.0.0.1`\n\n#### port\n\nConfigures the port to listen on. Default: `8080`\n\n#### streams\n\nContains a dictionary of different stream configurations.\n\n### Stream configuration\n\n#### path\n\nConfigures the path under which the proxied stream should be made available. In the example this value is `cam-1.mjpeg` for the stream `cam_1`. If the value does not start with  a `/` it is internally prepended. Mandatory\n\n#### url\n\nConfigures the upstream url of the stream to proxy. In the example this value is `http://some-stream.com/stream.mjpeg` for `cam_1`. Mandatory\n\n#### fps\n\nConfigures the output fps of the stream. Frames will be dropped or duplicated as needed. Default: 25\n\n\nThe example configures one server called `default` listening on `address` `127.0.0.1` on `port` `8080` serving two `streams` called `cam_1` and `cam_2`, available at `/cam-1.mjpeg` and `/cam-2.mjpeg` respectively, proxying `http://some-stream.com/stream.mjpeg` and `http://some-stream.com/stream2.mjpeg` respectively, both at `25` `fps`.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklaxa%2Fmjpeg-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fklaxa%2Fmjpeg-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklaxa%2Fmjpeg-proxy/lists"}