{"id":16865985,"url":"https://github.com/gabrieljablonski/rtsp-rtp-stream","last_synced_at":"2026-03-05T18:01:38.081Z","repository":{"id":47222815,"uuid":"215671744","full_name":"gabrieljablonski/rtsp-rtp-stream","owner":"gabrieljablonski","description":"RTSP and RTP streaming. Programming assignment from the book \"Computer Networking: A Top-Down Approach\" by Jim Kurose","archived":false,"fork":false,"pushed_at":"2021-09-08T01:23:09.000Z","size":8093,"stargazers_count":91,"open_issues_count":0,"forks_count":22,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-04T04:41:21.318Z","etag":null,"topics":["a-top-down-approach","computer-networking","jim-kurose","python","rtp-streaming","rtsp","rtsp-stream"],"latest_commit_sha":null,"homepage":"","language":"Python","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/gabrieljablonski.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}},"created_at":"2019-10-17T00:48:29.000Z","updated_at":"2025-03-08T10:18:38.000Z","dependencies_parsed_at":"2022-08-26T08:01:55.902Z","dependency_job_id":null,"html_url":"https://github.com/gabrieljablonski/rtsp-rtp-stream","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gabrieljablonski/rtsp-rtp-stream","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrieljablonski%2Frtsp-rtp-stream","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrieljablonski%2Frtsp-rtp-stream/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrieljablonski%2Frtsp-rtp-stream/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrieljablonski%2Frtsp-rtp-stream/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gabrieljablonski","download_url":"https://codeload.github.com/gabrieljablonski/rtsp-rtp-stream/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrieljablonski%2Frtsp-rtp-stream/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30141279,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T16:58:46.102Z","status":"ssl_error","status_checked_at":"2026-03-05T16:58:45.706Z","response_time":93,"last_error":"SSL_read: 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":["a-top-down-approach","computer-networking","jim-kurose","python","rtp-streaming","rtsp","rtsp-stream"],"created_at":"2024-10-13T14:49:04.670Z","updated_at":"2026-03-05T18:01:37.726Z","avatar_url":"https://github.com/gabrieljablonski.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RTSP and RTP streaming\n\n### **DISCLAIMER: PYQT IS AVAILABLE THROUGH THE GPL LICENSE. THE MIT LICENSE ONLY APPLIES TO NON-PYQT CODE**\n\n Python implementation of the [programming assignment](http://media.pearsoncmg.com/aw/aw_kurose_network_3/labs/lab7/lab7.html) from the chapter \"Multimedia Networking\" (chapter 7 in the 6th edition) of the book \"Computer Networking: A Top-Down Approach\" by Jim Kurose.\n \n Implements basic RTSP and RTP streaming functionality using the standard Python 3 library, plus [PyQt5](https://pypi.org/project/PyQt5/) and [Pillow](https://github.com/python-pillow/Pillow) for stuff related to GUI. Further info available in the [assignment guide](http://media.pearsoncmg.com/aw/aw_kurose_network_3/labs/lab7/lab7.html) (from the 3rd edition, newer versions of the book might change the assignment slightly). Error handling is very minimal, reopening the server and client is required to run another session.\n\n ### **This implementation does NOT strictly follow the one provided by the book authors**\n\n![Demonstration](rtsp_demo.gif)\n\n## Installation\n\nClone the repository with `git clone https://github.com/gabrieljablonski/rtsp-rtp-stream`.\n\nHaving python\u003e=3.6 installed, create a virtual environment by running `python -m venv venv` inside the cloned folder.\n\nActivate the virtual environment (`source venv/bin/activate` on Linux, `.\\venv\\Scripts\\activate` on Windows).\n\nInstall the requirements with `python -m pip install -r requirements.txt`.\n\n## Usage\n\nGo to the sources folder with `cd src/` (video stream class assumes `mjpeg` file is in working directory).\n\nServer should be run first with \n```\npython main_server.py \u003cport\u003e \n```\nIn which `port` is the port number for the RTSP socket to listen on.\n\nClient can then be run with \n```\npython main_client.py \u003cfile name\u003e \u003chost address\u003e \u003chost port\u003e \u003cRTP port\u003e\n```\nin which `file name` is the name for the file to be sent via RTP (`movie.mjpeg` is the available sample), `host address` is the server address (`localhost` if running on same machine), `host port` is the port selected when running the server, `RTP port` is the port for receiving the video via RTP.\n\nSince you're probably running each instance on separate terminals, remember to activate the venv on both.\n\nSuggested configs are:\n```\npython main_server.py 5540\npython main_client.py movie.mjpeg localhost 5540 5541\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabrieljablonski%2Frtsp-rtp-stream","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabrieljablonski%2Frtsp-rtp-stream","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabrieljablonski%2Frtsp-rtp-stream/lists"}