{"id":13692242,"url":"https://github.com/MarshalX/python-webrtc","last_synced_at":"2025-05-02T19:31:42.893Z","repository":{"id":43394626,"uuid":"444007147","full_name":"MarshalX/python-webrtc","owner":"MarshalX","description":"a Python extension that provides bindings to WebRTC M92","archived":false,"fork":false,"pushed_at":"2025-04-25T11:56:32.000Z","size":294,"stargazers_count":142,"open_issues_count":107,"forks_count":10,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-25T12:32:02.896Z","etag":null,"topics":["async","asynchronous","audio","lib","library","ortp","p2p","python","python-extension","realtime","rtc","rtp","srtp","streaming","voip","webrtc","webrtc-api","webrtc-libraries","webrtc-native"],"latest_commit_sha":null,"homepage":"https://wrtc.rtfd.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MarshalX.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"github":"MarshalX"}},"created_at":"2022-01-03T09:34:59.000Z","updated_at":"2025-04-25T11:56:35.000Z","dependencies_parsed_at":"2024-04-08T11:03:46.018Z","dependency_job_id":null,"html_url":"https://github.com/MarshalX/python-webrtc","commit_stats":{"total_commits":102,"total_committers":3,"mean_commits":34.0,"dds":0.06862745098039214,"last_synced_commit":"9d4f9778bbf6b2c03c81c95e346368cefc7a2963"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarshalX%2Fpython-webrtc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarshalX%2Fpython-webrtc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarshalX%2Fpython-webrtc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarshalX%2Fpython-webrtc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MarshalX","download_url":"https://codeload.github.com/MarshalX/python-webrtc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252095259,"owners_count":21693887,"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":["async","asynchronous","audio","lib","library","ortp","p2p","python","python-extension","realtime","rtc","rtp","srtp","streaming","voip","webrtc","webrtc-api","webrtc-libraries","webrtc-native"],"created_at":"2024-08-02T17:00:55.148Z","updated_at":"2025-05-02T19:31:42.570Z","avatar_url":"https://github.com/MarshalX.png","language":"Python","readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/MarshalX/python-webrtc\"\u003e\n        \u003cimg src=\"https://github.com/MarshalX/python-webrtc/raw/main/.github/images/logo.png\" alt=\"python-webrtc logo\"\u003e\n    \u003c/a\u003e\n    \u003cbr\u003e\n    \u003cb\u003eA Python extension that provides bindings to WebRTC M92\u003c/b\u003e\n    \u003cbr\u003e\n    \u003ca href=\"https://github.com/MarshalX/python-webrtc/tree/main/examples\"\u003e\n        Examples\n    \u003c/a\u003e\n    •\n    \u003ca href=\"https://wrtc.rtfd.io/\"\u003e\n        Documentation\n    \u003c/a\u003e\n    •\n    \u003ca href=\"https://pypi.org/project/wrtc/\"\u003e\n        PyPI\n    \u003c/a\u003e\n\u003c/p\u003e\n\n## Python WebRTC\n\n\u003e Let's use the native WebRTC with strict compatibility and fully implemented stuff!\n\nThis project follows the [W3C specification](https://w3c.github.io/webrtc-pc/) with some modifications and additions to make it work better with Python applications, with useful APIs like programmatic audio and video.\n\n## DISCLAIMER\n\nThis project is still under development and isn't ready for any serious use. In the current stage, it's possible to establish connection and work with audio, but many interfaces and methods not implemented yet.\n\nYou can easily check status of methods and interfaces availability [here](https://github.com/users/MarshalX/projects/1/views/1).\n\n#### Snippet\n\n```python\nimport asyncio\nimport webrtc\n\n\nasync def main():\n    pc = webrtc.RTCPeerConnection()\n\n    stream = webrtc.get_user_media()\n    for track in stream.get_tracks():\n        pc.add_track(track, stream)\n\n    audio_source = webrtc.RTCAudioSource()\n    track = audio_source.create_track()\n    pc.add_track(track)\n\n    local_sdp = await pc.create_offer()\n    print(local_sdp.sdp)\n\n\nif __name__ == '__main__':\n    asyncio.run(main())\n```\n\n### Requirements\n\n#### Pre-built wheels:\n\n- Python 3.7 or higher\n- pip 21 or higher\n- And compatible platform: \n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003ctd colspan=\"2\" rowspan=\"2\"\u003e\u003c/td\u003e\n      \u003cth colspan=\"3\"\u003eLinux\u003c/th\u003e\n      \u003cth colspan=\"2\"\u003emacOS\u003c/th\u003e\n      \u003cth\u003eWindows\u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003earmv7l\u003c/th\u003e\n      \u003cth\u003earm64\u003c/th\u003e\n      \u003cth\u003ex86_64\u003c/th\u003e\n      \u003cth\u003eIntel\u003c/th\u003e\n      \u003cth\u003eApple Silicon\u003c/th\u003e\n      \u003cth\u003e64bit\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth rowspan=\"4\"\u003ePython\u003c/th\u003e\n      \u003cth\u003e3.7\u003c/th\u003e\n        \u003ctd align=\"center\"\u003eN/A\u003c/td\u003e\n        \u003ctd align=\"center\"\u003eN/A\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n        \u003ctd align=\"center\"\u003eN/A\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3.8\u003c/th\u003e\n        \u003ctd align=\"center\"\u003eN/A\u003c/td\u003e\n        \u003ctd align=\"center\"\u003eN/A\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3.9\u003c/th\u003e\n        \u003ctd align=\"center\"\u003eN/A\u003c/td\u003e\n        \u003ctd align=\"center\"\u003eN/A\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3.10\u003c/th\u003e\n        \u003ctd align=\"center\"\u003eN/A\u003c/td\u003e\n        \u003ctd align=\"center\"\u003eN/A\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e✅\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n#### Building from sources (sdist):\n\n- ~15 GB of free disk space\n- CMake 3.14 or higher\n- GCC 7.5 or higher\n- glibc 2.18 or higher \n- ARM toolchain (ARM only)\n\n_Full building instruction will be present later_\n\n### Installing\n\nPre-built wheel:\n``` bash\npip3 install --pre wrtc\n```\n\nBuild from sources:\n``` bash\npip3 install --pre wrtc --no-binary wrtc\n```\n\n### Documentation\n\nThe documentation is live at [readthedocs.io](https://wrtc.rtfd.io/).\n\n### Getting help\n\nYou can get help in several ways:\n- Report bugs, request new features by [creating an issue](https://github.com/MarshalX/python-webrtc/issues/new).\n- Ask questions by [starting a discussion](https://github.com/MarshalX/python-webrtc/discussions/new).\n\n### Contributing\n\nContributions of any sizes are welcome.\n\n### Special thanks to\n\n- [Authors](https://github.com/node-webrtc/node-webrtc/blob/develop/AUTHORS) of [node-webrtc](https://github.com/node-webrtc/node-webrtc).\n- Authors of [web-platform-tests](https://github.com/web-platform-tests/wpt).\n\n### License\n\nThe `python-webrtc` is published under the [BSD 3-Clause License](LICENSE.md).\n","funding_links":["https://github.com/sponsors/MarshalX"],"categories":["Miscellaneous"],"sub_categories":["Tool"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMarshalX%2Fpython-webrtc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMarshalX%2Fpython-webrtc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMarshalX%2Fpython-webrtc/lists"}