{"id":13579844,"url":"https://github.com/Ullaakut/RTSPAllTheThings","last_synced_at":"2025-04-05T23:32:46.019Z","repository":{"id":97436508,"uuid":"60609584","full_name":"Ullaakut/RTSPAllTheThings","owner":"Ullaakut","description":"Deprecated RTSP media server -- Use github.com/aler9/rtsp-simple-server instead.","archived":true,"fork":false,"pushed_at":"2020-04-14T13:30:42.000Z","size":38016,"stargazers_count":277,"open_issues_count":1,"forks_count":72,"subscribers_count":23,"default_branch":"master","last_synced_at":"2024-11-05T18:49:56.893Z","etag":null,"topics":["broadcast","camera","cctv","credentials","encoding","gstreamer","media","mediaserver","rtsp","server","stream","streaming","video"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ullaakut.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-06-07T11:57:13.000Z","updated_at":"2024-10-05T14:00:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"f8046516-3db3-48f6-aee1-1c13bdcfa5ff","html_url":"https://github.com/Ullaakut/RTSPAllTheThings","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ullaakut%2FRTSPAllTheThings","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ullaakut%2FRTSPAllTheThings/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ullaakut%2FRTSPAllTheThings/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ullaakut%2FRTSPAllTheThings/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ullaakut","download_url":"https://codeload.github.com/Ullaakut/RTSPAllTheThings/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247415793,"owners_count":20935383,"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":["broadcast","camera","cctv","credentials","encoding","gstreamer","media","mediaserver","rtsp","server","stream","streaming","video"],"created_at":"2024-08-01T15:01:43.931Z","updated_at":"2025-04-05T23:32:41.009Z","avatar_url":"https://github.com/Ullaakut.png","language":"C++","funding_links":[],"categories":["\u003ca name=\"cpp\"\u003e\u003c/a\u003eC++"],"sub_categories":[],"readme":"# RTSPATT: RTSP All The Things [DEPRECATED]\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"250px\" src=\"images/rtspatt.png\" alt=\"rtspatt logo\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"#license\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/license-Apache-blue.svg?style=flat\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/Ullaakut/RTSPAllTheThings/releases/latest\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/release/Ullaakut/RTSPAllTheThings.svg?style=flat\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://travis-ci.org/Ullaakut/RTSPAllTheThings\"\u003e\n        \u003cimg src=\"https://travis-ci.org/Ullaakut/RTSPAllTheThings.svg?branch=master\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://hub.docker.com/r/ullaakut/rtspatt/\"\u003e\n        \u003cimg src=\"https://img.shields.io/docker/pulls/ullaakut/rtspatt.svg?style=flat\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://www.codacy.com/app/brendan-le-glaunec/RTSPAllTheThings?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=Ullaakut/RTSPAllTheThings\u0026amp;utm_campaign=Badge_Grade\"\u003e\n        \u003cimg src=\"https://api.codacy.com/project/badge/Grade/86681212bbc04cf797640dbe700e7057\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n**A multipurpose RTSP media server that can simulate RTSP cameras, broadcast RTSP streams, webcams and even create test videos or serve video files.**\n\n## :warning:  :warning: This repository is deprecated, please use [rtsp-simple-server](https://github.com/aler9/rtsp-simple-server) instead. :warning:  :warning:\n\nSee [this issue](https://github.com/Ullaakut/RTSPAllTheThings/issues/79) for explanations on why this repository was archived and is no longer maintained.\n\n## Dependencies\n\n* `docker`\n\n## Usage from the official docker repository\n\nYou can create a stream by launching the official docker image:\n`docker run --rm -p 8554:8554 ullaakut/rtspatt`\n\nWith default options, stream will be available at `rtsp://0.0.0.0:8554/live.sdp`.\nYou can use [override options](#override-options).\n\n## Override options\n\n```\ndocker run --rm \\\n       [-e RTSP_ADDRESS=your_address] \\\n       [-e RTSP_PORT=your_port] -p your_port:your_port \\\n       [-e RTSP_ROUTE=your_route] \\\n       [-e RTSP_USERNAME=your_username] \\\n       [-e RTSP_PASSWORD=your_password] \\\n       [-e RTSP_RESOLUTION='your_width'x'your_height'] \\\n       [-e RTSP_FRAMERATE=your_framerate] \\\n       [-e INPUT=your_input] \\\n       [-e ENABLE_TIME_OVERLAY=true|false] \\\n       [-e RTSP_AUTHENTICATION_METHOD=digest|basic] \\\n       [-e GST_PIPELINE=your_custom_gstreamer_pipeline] \\\n       [-e GST_DEBUG=your_debug_level] \\\n       ullaakut/rtspatt\n```\n\n```\n./rtspatt \\\n      [-l rtsp_address] \\\n      [-b rtsp_port] \\\n      [-r rtsp_route] \\\n      [-u rtsp_username] \\\n      [-p rtsp_password] \\\n      [-s rtsp_resolution] \\\n      [-f rtsp_framerate] \\\n      [-i input]\n      [-t] \\\n      [-d] \\\n      [-g gstreamer_pipeline] \\\n```\n\nTo have GStreamer debug while using the binary, simply run `export GST_DEBUG=your_debug_level` before using RTSP All The Things.\n\nAll of these environment variables and command line arguments override the default parameters:\n* `RTSP_ADDRESS` | `-l`:\n  The address you want your server to listen on [default: `0.0.0.0`]\n* `RTSP_PORT` | `-b`:\n  The port that you want your server to listen on [default: `8554`] (_don't forget to also expose the port in your docker container with the `-p` docker option like in the example above_)\n* `RTSP_ROUTE` | `-r`:\n  The rtsp route at which you want your stream to be served [default: `/live.sdp`]\n* `RTSP_USERNAME` | `-u`:\n  If you want to enable security on your stream, using this option will allow you to specify the username required to access your stream [default: none]\n* `RTSP_PASSWORD` | `-p`:\n  If you want to enable security on your stream, using this option will allow you to specify the password required to access your stream [default: none]\n* `RTSP_RESOLUTION` | `-s`:\n  The resolution at which you want to stream [default: `1280x720` for videotestsrc only] - RTSPATT will have to do encoding to resize the stream (Increased CPU usage)\n* `RTSP_FRAMERATE` | `-f`:\n  The desired output framerate for your stream - RTSPATT will have to do encoding to change the framerate (Increased CPU usage)\n* `INPUT` | `-i`:\n  Input used as video source. [default: `pattern:smtpe`]\n  - If the argument starts with `rtsp://` it will try to open it as an **RTSP stream**\n  - If it starts with `pattern:` if will create a **test video with the given pattern** (_see [this link](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/gst-plugins-base-plugins-videotestsrc.html#GstVideoTestSrcPattern) for more information on this argument_)\n  - If the argument starts with `/dev/video` it will create a stream from the /dev/video device passed into docker at the launch of the instance. You will need to pass in the video device as follows: `--device=/dev/video0:/dev/video0` where `video0` is the video device.\n  - Otherwise it will use the argument as a absolute link to **file input**. Remember to use the `-v` option to insert a video into your container if you want to read it. Example: `docker run -e INPUT=/tmp/video.mp4 -v /home/test/documents/myVideo.mp4:/tmp/video -p 8554:8554 ullaakut/rtspatt`. The repository contains a 30 second sample video in the `samples` folder.\n* `ENABLE_TIME_OVERLAY` | `-t`:\n  If the environment variable is set to true or the command line flag is used, a time overlay will be added to the stream. This can be useful to debug latency. [default: disabled] - RTSPATT will have to do encoding to add the time (Increased CPU usage)\n* `RTSP_AUTHENTICATION_METHOD` | `-d`:\n  If RTSP_AUTHENTICATION_METHOD is set to `digest` or the command line flag is used, the authentication will be done using digest instead of basic auth. [default: basic]\n* `GST_PIPELINE`:\n  Completely override the gstreamer pipeline usually autogenerated by the program. Remember though: with great power comes great responsibility! Gstreamer pipelines are a powerful tool but you need to thoroughly understand what you are doing, as things get messy easily (_see [this link](https://gstreamer.freedesktop.org/documentation/application-development/introduction/basics.html) for more information on this variable_)\n* `GST_DEBUG`:\n  The desired debug level for GStreamer [default: none] (_see [this link](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gst-running.html) for more information on this variable_)\n\n## Examples\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://cdn-images-1.medium.com/max/1600/1*SBtp1ArX37-3ru4RAeAe0A.gif\" alt=\"animation rtspatt vlc\"\u003e\n\u003c/p\u003e\n\n\u003e Serve video using basic auth on `rtsp:admin:test@//0.0.0.0:8554/live.sdp`\n\n`docker run --rm -e RTSP_USERNAME=admin  -e RTSP_PASSWORD=test -p 8554:8554 ullaakut/rtspatt`\n\n\u003e Serve video using digest auth on `rtsp:admin:test@//0.0.0.0:8554/live.sdp`\n\n`docker run --rm -e RTSP_AUTHENTICATION_METHOD=digest -e RTSP_USERNAME=admin  -e RTSP_PASSWORD=test -p 8554:8554 ullaakut/rtspatt`\n\n\u003e Launch an RTSP stream on `rtsp://0.0.0.0:8554/live.sdp` with a snow pattern and a resolution of 960x600 pixels:\n\n`docker run --rm -e INPUT=\"pattern:snow\" -e RTSP_RESOLUTION=960x600 -p 8554:8554 ullaakut/rtspatt` or `./rtspatt -i pattern:snow -s 960x600`\n\n\u003e Broadcast a camera's stream and change its framerate to 12 frames per second:\n\n`docker run --rm -e INPUT=\"rtsp://root:root@camera_ip:554/live.sdp\" -e RTSP_FRAMERATE=12 -p 8554:8554 ullaakut/rtspatt` or `./rtspatt -i rtsp://root:root@camera_ip:554/live.sdp -f 12`\n\n\u003e Broadcast a video stream from a connected device:\n\n`docker run --rm -e INPUT=\"/dev/video0\" --device=/dev/video0:/dev/video0 -p 8554:8554 ullaakut/rtspatt`\n\n\u003e Serve a video file on a specific address and route:\n\n`docker run --rm -e INPUT=\"/tmp/video.avi\" -e RTSP_ADDRESS=172.100.100.12 -e RTSP_PORT=18554 -v \"/path/to/your/video:/tmp/video.avi\" -p 18554:18554 ullaakut/rtspatt` or `./rtspatt -i /tmp/video.avi -l 172.100.100.12 -b 18554`\n\n\u003e Serve am H264 video file without transcoding:\n\n`docker run --rm -e INPUT=\"/tmp/video.mp4\" -e RTSP_PORT=18554 -e GST_PIPELINE=\"filesrc location=/tmp/video.mp4 ! qtdemux ! video/x-h264 ! rtph264pay pt=96 name=pay0\" -v \"/path/to/your/video:/tmp/video.mp4\" -p 18554:18554 ullaakut/rtspatt`\n\n## Build\n\nYou can modify RTSPATT and create your own docker image. We use the [`builder` pattern](https://blog.alexellis.io/mutli-stage-docker-builds/), so you can just modify the sources and run `docker build -t rstpatt .` to re-compile the sources and rebuild the image.\n\nOnce it's done, you can launch RTSPATT with:\n`docker run --rm -p 8554:8554 rtspatt` or `./rtspatt`.\n\nWith default options, stream will be available at `rtsp://0.0.0.0:8554/live.sdp`.\nYou can use [override options](#override-options).\n\n## Patterns\n\nHere is the list of patterns you can use\n\n* `pattern:smpte`               - The standard SMTPE test pattern, it's the default value if you don't specify any input\n* `pattern:smpte-75`            - 75% color bars\n* `pattern:smpte-100`           - 100% color bars (no noise)\n* `pattern:snow`                - Random noise\n* `pattern:black`               - Black image\n* `pattern:white`               - White image\n* `pattern:red`                 - Red image\n* `pattern:green`               - Green image\n* `pattern:blue`                - Blue image\n* `pattern:checkers-1`          - 1 pixel checkers pattern (low stream scale recommended)\n* `pattern:checkers-2`          - 2 pixel checkers pattern (low stream scale recommended)\n* `pattern:checkers-4`          - 4 pixel checkers pattern (low stream scale recommended)\n* `pattern:checkers-8`          - 8 pixel checkers pattern (low stream scale recommended)\n* `pattern:circular`            - circular pattern\n* `pattern:blink`               - Alternate between black and while image\n* `pattern:zone-plate`          - Zone plate\n* `pattern:gamut`               - Gamut checking pattern\n* `pattern:chroma-zone-plate`   - Chroma zone plate\n* `pattern:ball`                - A moving ball\n* `pattern:bar`                 - Bar with foreground color\n* `pattern:pinwheel`            - Pinwheel\n* `pattern:spokes`              - Spokes\n* `pattern:gradient`            - Gradient image\n* `pattern:colors`              - All colors\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"200\" height=\"200\" src=\"https://image.ibb.co/nAjMtF/Ball.png\" alt=\"Ball\"\u003e\n  \u003cimg width=\"200\" height=\"200\" src=\"https://image.ibb.co/dGZbSa/Bar.png\" alt=\"Bar\"\u003e\n  \u003cimg width=\"200\" height=\"200\" src=\"https://image.ibb.co/bFenYF/Checkers.png\" alt=\"Checkers\"\u003e\n  \u003c/br\u003e\n  \u003cimg width=\"200\" height=\"200\" src=\"https://image.ibb.co/ekBC0v/Circular.png\" alt=\"Circular\"\u003e\n  \u003cimg width=\"200\" height=\"200\" src=\"https://image.ibb.co/j8UMtF/Colors.png\" alt=\"Colors\"\u003e\n  \u003cimg width=\"200\" height=\"200\" src=\"https://image.ibb.co/bCPX0v/Gamut.png\" alt=\"Gamut\"\u003e\n  \u003c/br\u003e\n  \u003cimg width=\"200\" height=\"200\" src=\"https://image.ibb.co/dd3QLv/Gradient.png\" alt=\"Gradient\"\u003e\n  \u003cimg width=\"200\" height=\"200\" src=\"https://image.ibb.co/g7Ai7a/Pinwheel.png\" alt=\"Pinwheel\"\u003e\n  \u003cimg width=\"200\" height=\"200\" src=\"https://image.ibb.co/gu7Kfv/SMPTE.png\" alt=\"SMPTE\"\u003e\n  \u003c/br\u003e\n  \u003cimg width=\"200\" height=\"200\" src=\"https://image.ibb.co/gnBefv/Snow.png\" alt=\"Snow\"\u003e\n  \u003cimg width=\"200\" height=\"200\" src=\"https://image.ibb.co/mLjMtF/Spokes.png\" alt=\"Spokes\"\u003e\n\u003c/p\u003e\n\n## FAQ\n\n\u003e Does it stream over TCP, UDP or HTTP?\n\nCurrently it only streams over TCP.\n\n## License\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\nSee the License for the specific language governing permissions and limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FUllaakut%2FRTSPAllTheThings","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FUllaakut%2FRTSPAllTheThings","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FUllaakut%2FRTSPAllTheThings/lists"}