A Python extension that provides bindings to WebRTC M92
Examples
•
Documentation
•
PyPI
Let's use the native WebRTC with strict compatibility and fully implemented stuff!
This project follows the W3C specification with some modifications and additions to make it work better with Python applications, with useful APIs like programmatic audio and video.
This 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.
You can easily check status of methods and interfaces availability here.
import asyncio
import webrtc
async def main():
pc = webrtc.RTCPeerConnection()
stream = webrtc.get_user_media()
for track in stream.get_tracks():
pc.add_track(track, stream)
audio_source = webrtc.RTCAudioSource()
track = audio_source.create_track()
pc.add_track(track)
local_sdp = await pc.create_offer()
print(local_sdp.sdp)
if __name__ == '__main__':
asyncio.run(main())
- Python 3.7 or higher
- pip 21 or higher
- And compatible platform:
Linux | macOS | Windows | |||||
---|---|---|---|---|---|---|---|
armv7l | arm64 | x86_64 | Intel | Apple Silicon | 64bit | ||
Python | 3.7 | N/A | N/A | ✅ | ✅ | N/A | ✅ |
3.8 | N/A | N/A | ✅ | ✅ | ✅ | ✅ | |
3.9 | N/A | N/A | ✅ | ✅ | ✅ | ✅ | |
3.10 | N/A | N/A | ✅ | ✅ | ✅ | ✅ |
- ~15 GB of free disk space
- CMake 3.14 or higher
- GCC 7.5 or higher
- glibc 2.18 or higher
- ARM toolchain (ARM only)
Full building instruction will be present later
Pre-built wheel:
pip3 install --pre wrtc
Build from sources:
pip3 install --pre wrtc --no-binary wrtc
The documentation is live at readthedocs.io.
You can get help in several ways:
- Report bugs, request new features by creating an issue.
- Ask questions by starting a discussion.
Contributions of any sizes are welcome.
- Authors of node-webrtc.
- Authors of web-platform-tests.
The python-webrtc
is published under the BSD 3-Clause License.