{"id":13847729,"url":"https://github.com/sippy/rtpproxy","last_synced_at":"2026-03-17T00:03:29.396Z","repository":{"id":17887931,"uuid":"20834852","full_name":"sippy/rtpproxy","owner":"sippy","description":"The RTPproxy is a high-performance software proxy for RTP streams that can work together with Sippy B2BUA, Kamailio, OpenSIPS and SER.","archived":false,"fork":false,"pushed_at":"2024-09-18T18:32:12.000Z","size":26903,"stargazers_count":406,"open_issues_count":60,"forks_count":114,"subscribers_count":55,"default_branch":"master","last_synced_at":"2024-09-18T22:16:38.184Z","etag":null,"topics":["kamailio","opensips","rtp","sip","sippy"],"latest_commit_sha":null,"homepage":"http://rtpproxy.org","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sippy.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":"sippylabs","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2014-06-14T15:22:11.000Z","updated_at":"2024-09-18T03:12:26.000Z","dependencies_parsed_at":"2023-10-04T23:02:24.861Z","dependency_job_id":"d5cdcba1-0f62-44b9-b639-a1c00d372c3d","html_url":"https://github.com/sippy/rtpproxy","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sippy%2Frtpproxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sippy%2Frtpproxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sippy%2Frtpproxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sippy%2Frtpproxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sippy","download_url":"https://codeload.github.com/sippy/rtpproxy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225820303,"owners_count":17529138,"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":["kamailio","opensips","rtp","sip","sippy"],"created_at":"2024-08-04T19:00:29.917Z","updated_at":"2026-03-17T00:03:29.330Z","avatar_url":"https://github.com/sippy.png","language":"Makefile","readme":"[![RTPProxy CI](https://github.com/sippy/rtpproxy/actions/workflows/rtpproxy_ci.yml/badge.svg?branch=master)](https://github.com/sippy/rtpproxy/actions/workflows/rtpproxy_ci.yml?query=branch%3Amaster++)\n[![Coverage Status](https://coveralls.io/repos/github/sippy/rtpproxy/badge.svg?branch=master)](https://coveralls.io/github/sippy/rtpproxy?branch=master)\n[![Coverity](https://scan.coverity.com/projects/8841/badge.svg)](https://scan.coverity.com/projects/sippy-rtpproxy)\n\n## About\n\nThe RTPproxy is a extremely reliable and reasonably high-performance software\nproxy for RTP streams that can work together with [OpenSIPS](https://opensips.org),\n[Kamailio](https://kamailio.org) or [Sippy B2BUA](https://github.com/sippy/b2bua).\n\nOriginally created for handling NAT scenarios, back in 2004-2005, it can also act\nas a generic real time datagram relay as well as gateway Real-Time Protocol (RTP)\nsessions between IPv4 and IPv6 networks.\n\nThe RTPproxy supports many advanced features and is controllable over\nmultitude of Layer 4 protocols, including Unix Domain, UDP, UDPv6, TCP and TCPv6.\n\nThe software allows building scalable distributed SIP networks. The rtpproxy module\nincluded into the OpenSIPS or Kamailio SIP Proxy software allows using multiple\nRTPproxy instances running on remote machines for fault-tolerance and\nload-balancing purposes.\n\nAdvanced high-capacity clustering and load balancing is available through the\nuse of [RTP Cluster](https://github.com/sippy/rtp_cluster) middleware.\n\nThe software also supports MOH/pre-recorded media injection,  video relaying\nand session recording to a local file or remote UDP listener(s). As well\nas makes available array of real-time or near real-time session counters,\nboth per-session and per-instance.\n\nSince version 3.1.0, full set of extensions is available allowing to create\na WebRTC-compatible endpoints.\n\n## News\n\n- introducing WebRTC/WSS clients support via 3 new modules: dtls_gw, ice_lite\n  and rtcp_demux.\n\n## How it works\n\nThis proxy works as follows:\n\n- When SIP Controller, either proxy or B2BUA, receives INVITE request, it\n  extracts call-id from it and communicates it to the proxy via control\n  channel. Proxy looks for an existing sessions with such id, if the session\n  exists it returns UDP port for that session, if not, then it creates a new\n  session, binds to a first available randomly selected pair of UDP ports and\n  returns number of the first port. After receiving reply from the proxy, SIP\n  Controller replaces media ip:port in the SDP to point to the proxy and\n  forwards request as usually;\n\n- when SIP Controller receives non-negative SIP reply with SDP it again\n  extracts call-id along with session tags from it and communicates it to\n  the proxy. In this case the proxy does not allocate a new session if it\n  doesn't exist, but simply performs a lookup among existing sessions and\n  returns either a port number if the session is found, or error code\n  indicating that there is no session with such id. After receiving positive\n  reply from the proxy, SIP Controller replaces media ip:port in the SIP\n  reply to point to the proxy and forwards reply as usually;\n\n- after the session has been created, the proxy listens on the port it has\n  allocated for that session and waits for receiving at least one UDP\n  packet from each of two parties participating in the call. Once such\n  packet is received, the proxy fills one of two ip:port structures\n  associated with each call with source ip:port of that packet. When both\n  structures are filled in, the proxy starts relaying UDP packets between\n  parties;\n\n- the proxy tracks idle time for each of existing sessions (i.e. the time\n  within which there were no packets relayed), and automatically cleans\n  up a sessions whose idle times exceed the value specified at compile\n  time (60 seconds by default).\n\n## Building from github\n\n```\n$ git clone -b master https://github.com/sippy/rtpproxy.git\n$ git -C rtpproxy submodule update --init --recursive\n$ cd rtpproxy\n$ ./configure\n$ make\n```\n\n## Authors and Contributors\n\nThe RTPproxy has been designed by Maxim Sobolev and now is being actively\nmaintained by the [Sippy Software, Inc](http://www.sippysoft.com). With the\ngreat help of numerous community contributors, both private and institutional.\nNot to mention army of robots gracefully dispatched at need by CI.\n\nThe original idea has inspired and directly influenced multitude of independent\nimplementations, including but not limited to the\n[Mediaproxy](https://mediaproxy.com),\n[erlrtpproxy](https://github.com/lemenkov/erlrtpproxy), and most recently\n[RTP Engine](https://github.com/sipwise/rtpengine), each project focusing on\nits own area of the vast functionality space.\n\n## Documentation and References\n\n- [User Manual](https://www.rtpproxy.org/doc/master/user_manual.html#MAKESRC);\n- [RTPproxy Control Protocol Reference](https://github.com/sippy/rtpproxy/wiki/RTPProxy-Command-Protocol).\n\n## Feedback \u0026 Support\n\nOpen a ticket on the github issue tracker, or post a message on the [mailing\nlist](https://groups.google.com/forum/#!forum/rtpproxy)\n","funding_links":["https://patreon.com/sippylabs"],"categories":["Protocols","C","Makefile"],"sub_categories":["Others"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsippy%2Frtpproxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsippy%2Frtpproxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsippy%2Frtpproxy/lists"}