pylibsrtp is a Python wrapper around libsrtp, making it possible to
encrypt and decrypt Secure Real-time Transport Protocol (SRTP) packets from
Python code.
SRTP is a profile of the Real-time Transport Protocol (RTP) which provides confidentiality, message authentication, and replay protection. It is defined by RFC 3711.
You can install pylibsrtp with pip:
$ pip install pylibsrtpTo learn more about pylibsrtp please read the documentation.
#!/usr/bin/env python
from pylibsrtp import Policy, Session
key = (b'\x00' * 30)
rtp = b'\x80\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + (b'\xd4' * 160)
# protect RTP
tx_policy = Policy(key=key, ssrc_type=Policy.SSRC_ANY_OUTBOUND)
tx_session = Session(policy=tx_policy)
srtp = tx_session.protect(rtp)
# unprotect RTP
rx_policy = Policy(key=key, ssrc_type=Policy.SSRC_ANY_INBOUND)
rx_session = Session(policy=rx_policy)
rtp2 = rx_session.unprotect(srtp)
# check roundtrip worked!
assert rtp2 == rtpIf you wish to build pylibsrtp yourself, you will need libsrtp version 2.0 or better.
On Debian/Ubuntu run:
$ apt install libsrtp2-devOn Fedora/CentOS run:
$ dnf install libsrtp-develOn macOS run:
$ brew install srtpYou will need to set some environment variables to link against libsrtp:
export CFLAGS=-I$(brew --prefix openssl)/include -I$(brew --prefix srtp)/include
export LDFLAGS=-L$(brew --prefix openssl)/lib -L$(brew --prefix srtp)/libpylibsrtp is released under the BSD license.