{"id":13596145,"url":"https://github.com/jaredpetersen/raspilive","last_synced_at":"2025-06-19T22:06:29.423Z","repository":{"id":47346503,"uuid":"86269572","full_name":"jaredpetersen/raspilive","owner":"jaredpetersen","description":"📷 Stream video from the Raspberry Pi Camera Module to the web","archived":false,"fork":false,"pushed_at":"2023-12-20T16:03:57.000Z","size":87,"stargazers_count":147,"open_issues_count":9,"forks_count":32,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-05-21T05:52:24.752Z","etag":null,"topics":["dash","hls","livestream","raspberry-pi","raspberry-pi-camera","video"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jaredpetersen.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"jaredpetersen","custom":["https://cash.app/$jaredtpetersen","https://paypal.me/jaredtpetersen"]}},"created_at":"2017-03-26T22:33:41.000Z","updated_at":"2025-05-05T18:23:31.000Z","dependencies_parsed_at":"2024-06-18T21:25:02.639Z","dependency_job_id":"b0c96d3c-0218-4726-9b05-e54e54cad442","html_url":"https://github.com/jaredpetersen/raspilive","commit_stats":null,"previous_names":["jaredpetersen/raspi-live"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/jaredpetersen/raspilive","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaredpetersen%2Fraspilive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaredpetersen%2Fraspilive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaredpetersen%2Fraspilive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaredpetersen%2Fraspilive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jaredpetersen","download_url":"https://codeload.github.com/jaredpetersen/raspilive/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaredpetersen%2Fraspilive/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260838505,"owners_count":23070603,"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":["dash","hls","livestream","raspberry-pi","raspberry-pi-camera","video"],"created_at":"2024-08-01T16:02:09.891Z","updated_at":"2025-06-19T22:06:23.916Z","avatar_url":"https://github.com/jaredpetersen.png","language":"Go","funding_links":["https://github.com/sponsors/jaredpetersen","https://cash.app/$jaredtpetersen","https://paypal.me/jaredtpetersen"],"categories":["Go"],"sub_categories":[],"readme":"# raspilive\n📷 raspilive is a command-line application that streams video from the Raspberry Pi Camera module to the web\n\n## Usage\n```\nraspilive streams video from the Raspberry Pi Camera Module to the web\n\nFor more information visit https://github.com/jaredpetersen/raspilive\n\nUsage:\n  raspilive [command]\n\nAvailable Commands:\n  hls         Stream video using HLS\n  dash        Stream video using DASH\n  help        Help about any command\n\nFlags:\n      --debug             enable debug logging\n      --fps int           video framerate (default 30)\n      --height int        video height (default 720)\n  -h, --help              help for raspilive\n      --horizontal-flip   horizontally flip video\n  -v, --version           version for raspilive\n      --vertical-flip     vertically flip video\n      --width int         video width (default 1280)\n\nUse \"raspilive [command] --help\" for more information about a command.\n```\n\n### Commands\n#### HLS\nThe `hls` command muxes the video stream into the [HLS](https://en.wikipedia.org/wiki/HTTP_Live_Streaming) video\nstreaming format and serves the produced content by starting a static file server.\n\nIf you're not familiar with HLS, the technology works by splitting the video stream into small, consumable segments.\nThese segments are arranged into a constantly updating playlist of files. Clients periodically read these playlists,\ndownload the listed videos, and queue up the segments to produce a seamless playback experience.\n[Twitch uses it](https://blog.twitch.tv/en/2015/12/18/twitch-engineering-an-introduction-and-overview-a23917b71a25/)\nto distribute streaming video to all of its viewers.\n\n```\nStream video using HLS\n\nUsage:\n  raspilive hls [flags]\n\nFlags:\n      --port int              static file server port\n      --directory string      static file server directory\n      --tls-cert string       static file server TLS certificate\n      --tls-key string        static file server TLS key\n      --segment-type string   format of the video segments (valid [\"mpegts\", \"fmp4\"], default \"mpegts\")\n      --segment-time int      target segment duration in seconds (default 2)\n      --playlist-size int     maximum number of playlist entries (default 10)\n      --storage-size int      maximum number of unreferenced segments to keep on disk before removal (default 1)\n  -h, --help                  help for hls\n\nGlobal Flags:\n      --debug             enable debug logging\n      --fps int           video framerate (default 30)\n      --height int        video height (default 720)\n      --horizontal-flip   horizontally flip video\n      --vertical-flip     vertically flip video\n      --width int         video width (default 1280)\n```\n\n#### DASH\nThe `dash` command muxes the video stream into the\n[DASH](https://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP) video streaming format and serves the\nproduced content by starting a static file server.\n\nDASH effectively utilizes the same mechanism for streaming video as HLS. The video is split into small segments and\nlisted in a changing playlist file. Clients download the playlist and the videos listed in it to piece the video\ntogether seamlessly.\n\n```\nStream video using DASH\n\nUsage:\n  raspilive dash [flags]\n\nFlags:\n      --port int            static file server port\n      --directory string    static file server directory\n      --tls-cert string     static file server TLS certificate\n      --tls-key string      static file server TLS key\n      --segment-time int    target segment duration in seconds (default 2)\n      --playlist-size int   maximum number of playlist entries (default 10)\n      --storage-size int    maximum number of unreferenced segments to keep on disk before removal (default 1)\n  -h, --help                help for dash\n\nGlobal Flags:\n      --debug             enable debug logging\n      --fps int           video framerate (default 30)\n      --height int        video height (default 720)\n      --horizontal-flip   horizontally flip video\n      --vertical-flip     vertically flip video\n      --width int         video width (default 1280)\n```\n\n### Performance Tips\n#### HLS \u0026 DASH\nHLS and DASH are inherently latent streaming technologies. However, you can still produce some lower latency video\nstreams.\n\nThe general recommendations seem to be:\n- Reduce the segment size\n- Increase the number of segments in the playlist to build up a buffer\n\nExperiment with the flags and see what seems to work best for your Pi. We try to provide \"sane\" defaults but Raspberry\nPis are computationally diverse so you may find better performance with some tweaking.\n\nAdditionally, you may find that the SD card on the Raspberry Pi is a limitation. Fast disk read/writes are important\nand SD cards can only perform so many in their lifetime. For better performance and longevity, you may consider setting\nup a [RAM drive](https://en.wikipedia.org/wiki/RAM_drive) so that the files are stored in memory instead.\n\n## Installation\nraspilive uses [raspivid](https://www.raspberrypi.org/documentation/usage/camera/raspicam/raspivid.md) to operate the\nRaspberry Pi Camera Module. This is already available on the Raspbian operating system and can be enabled via\n[raspi-config](https://www.raspberrypi.org/documentation/configuration/raspi-config.md).\n\nraspilive also uses [Ffmpeg](https://ffmpeg.org/), a prominent video conversion command line utility, to process the\nstreaming video that the Raspberry Pi Camera Module outputs. Version 4.0 or higher is required.\n```zsh\nsudo apt-get install ffmpeg\n```\n\nDownload the latest version of raspilive from the [Releases page](https://github.com/jaredpetersen/raspilive/releases).\nAll of the release binaries are compiled for ARM 6 and are compatible with Raspberry Pi.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaredpetersen%2Fraspilive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjaredpetersen%2Fraspilive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaredpetersen%2Fraspilive/lists"}