janus libsrtp rtp/rtcp数据加密

说明

            libsrtp主要是是用来加密rtp/rtcp的;也可以加密任何文本,注意前面的rtp_协议的字节是不加密的;和AES加密没有什么过程区别


源码编译

cd /home/fengyuzaitu
wget https://github.com/cisco/libsrtp/archive/master.zip .
unzip master.zip
cd libsrtp-master
./configure
make
make runtest
make install


参考源码中的文档:libsrtp.pdf

1.7 Example Code
例子非常实用,但是没有错误的检查。假设发送的数据流中***c已经正确的被赋值,并且可以使用 get_rtp_packet和send_srtp_packet().

get_rtp_packet将RTP包保存到缓存中,返回具体的长度,最后一个将缓存中的数据发送出去。srtp_protect负责数据的加密

srtp_t session;
srtp_policy_t policy;
uint8_t key[30];
// initialize libSRTP
srtp_init();
// set policy to describe a policy for an SRTP stream
crypto_policy_set_rtp_default(&policy.rtp);
crypto_policy_set_rtcp_default(&policy.rtcp);
policy.***c = ***c;
policy.key = key;
policy.next = NULL;
// set key to random value
crypto_get_random(key, 30);
// allocate and initialize the SRTP session
srtp_create(&session, policy);
// main loop: get rtp packets, send srtp packets
while (1) {
char rtp_buffer[2048];
unsigned len;
len = get_rtp_packet(rtp_buffer);
srtp_protect(session, rtp_buffer, &len);
send_srtp_packet(rtp_buffer, len);
}

上一篇:Java-在本地端口上侦听RTP数据包


下一篇:网络流媒体协议的联系与区别(RTP RTCP RTSP RTMP HLS)