I have been working on a Python asyncio implementation of the WebRTC / ORTC APIs called aiortc [1]. The ICE code lives in a separate aioice [2] project as it is useful in its own right. Libraries such as libsrtp, libvpx and libopus are accessed via CFFI-generated wrappers so the code is highly portable between OS's.
Some features:
- Data Channels using a pure-Python / asyncio SCTP stack
- sending / receiving audio and video (VP8 / Opus / G.711)
- basic RTCP reports
While not as mature as the major WebRTC implementations, aiortc has a couple of interesting features:
- the code base is compact, making it pretty easy to hack on it
- applying processing on video frames (OpenCV!) is easy
- having its own SCTP stack (and not usrsctp) has already led to finding a crash in Firefox (now fixed!)
- there is a growing collection of examples illustrating things such as : edge detection on a live video stream, file transfer over data channels, VPN over data channels.
I'd be interested in having some extra eyeballs / hands on the code, as there a couple of topics for which I could do with some help:
- video improvements : VP8 feedback, retransmission
- audio jitterbuffer
- unified plan SDP for multiple audio/video tracks
- squeezing additional performance out of the code
If this is something you're interested in, come join the fun and open issues / PRs :)
Jeremy