{"id":18456419,"url":"https://github.com/pollen-robotics/gst-signalling-py","last_synced_at":"2026-01-30T14:36:11.172Z","repository":{"id":255441626,"uuid":"685070988","full_name":"pollen-robotics/gst-signalling-py","owner":"pollen-robotics","description":"Python implementation of the Gstreamer signalling","archived":false,"fork":false,"pushed_at":"2024-12-02T09:48:56.000Z","size":135,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-03-23T06:41:24.338Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/pollen-robotics.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-30T13:05:40.000Z","updated_at":"2024-12-02T09:48:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"7f9e4ee4-680d-4baf-9831-9f6576b39543","html_url":"https://github.com/pollen-robotics/gst-signalling-py","commit_stats":null,"previous_names":["pollen-robotics/gst-signalling-py"],"tags_count":2,"template":false,"template_full_name":"pollen-robotics/python-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pollen-robotics%2Fgst-signalling-py","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pollen-robotics%2Fgst-signalling-py/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pollen-robotics%2Fgst-signalling-py/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pollen-robotics%2Fgst-signalling-py/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pollen-robotics","download_url":"https://codeload.github.com/pollen-robotics/gst-signalling-py/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247779796,"owners_count":20994569,"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-11-06T08:11:29.798Z","updated_at":"2026-01-30T14:36:06.114Z","avatar_url":"https://github.com/pollen-robotics.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gst-signalling-py: Gstreamer WebRTC signalling in Python\n\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) ![linter](https://github.com/pollen-robotics/reachy2-sdk/actions/workflows/lint.yml/badge.svg) ![pytest](https://github.com/pollen-robotics/reachy2-sdk/actions/workflows/unit_tests.yml/badge.svg) ![coverage](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/FabienDanieau/17eb617c2e60c2dc189478dd3be6e323/raw/covbadge.json)\n\nThis repository provides a Python implementation of the [Gstreamer WebRTC signalling](https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/tree/main/net/webrtc) protocol. \n\nIt provides an API close to the gstreamer API with a [producer](./src/gst_signalling/gst_producer.py) and a [consumer](./src/gst_signalling/gst_consumer.py). This allows to simply write producer/consumer examples using gstreamer signalling. It works with single producer and multiple consumers for exchanging data. See the [data producer example](./src/example/datachannel-single-producer-multiple-consumer/) for more details.\n\nIt also provides tools to list and monitor the peers connected to a signalling server.\n\n_Note that there is no example of audiovideo streaming. Gstreamer provides [rust plugins](https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs) that directly communicate with a signalling server_\n\n## Installation\n\nSimply install the package using pip:\n\n```bash\npip install -e .\n```\n\n## Usage\n\nSee the [examples](src/example/) for more details.\n\n## Protocol\n\n### Roles\n\nGstreamer signalling defines 3 roles (so the WebRTC peers are not symmetrical)\n\n- producer (produces data, video or audio streams)\n- consumer (access to a producer stream, can access all or a subset of its streams)\n- listener (gets notified by the server of new producers status)\n\n### Protocol sequence diagram\n\n```mermaid\nsequenceDiagram\n  Server--\u003e\u003eProducer: Welcome (PeerId)\n\tServer--\u003e\u003eConsumer: Welcome (PeerId)\n  Producer-\u003e\u003eServer: PeerStatusChanged  # declare yourself as producer\n\tConsumer-\u003e\u003eServer: StartSession # with producer PeerId\n\tServer--\u003e\u003eProducer: StartSession (SessionId)\n\tServer--\u003e\u003eConsumer: SessionStarted (SessionId)\n\tProducer-\u003e\u003eServer: Peer (offer sdp)\n\tServer--\u003e\u003eConsumer: Peer (offer sdp)\n\tConsumer-\u003e\u003eServer: Peer (answer sdp)\n\tServer--\u003e\u003eProducer: Peer (answer sdp)\n```\n\nSee [this page](https://pollen-robotics.notion.site/Gstreamer-WebRTC-signaling-8cc2391ef0004ef6b399095ea507121f?pvs=4) for more details.\n\n\n## Contribute\n\nPlease refer to our [template repository](https://github.com/pollen-robotics/python-template) for guidlines and coding style.\n\nDevelopment tools can be installed with\n\n```bash\npip install -e .[dev]\n```\n\n### Unit tests\n\nThe [gstreamer signalling server](https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/tree/main/net/webrtc/) is required to run on the localhost. Then run\n\n```bash\npytest\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpollen-robotics%2Fgst-signalling-py","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpollen-robotics%2Fgst-signalling-py","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpollen-robotics%2Fgst-signalling-py/lists"}