Hi,
I am using rtpengine to proxy audio to/from media servers.
The outbound calls are being rejected by a couple of my carriers (although accepted by others), and the closest that I have been able to find for the reason is the inclusion of “a=rtcp:xxxxx” in the SDP generated by rtpengine.
To test further, I am trying to remove this line. Rtpengine itself doesn’t have any options to remove it, so I am left with manipulating the generated SDP in Kamailio.
A sample of generated SDP is:
a=maxptime:150
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:18 annexb=no
a=fmtp:101 0-16
a=sendrecv
a=rtcp:30939
s=My Media Server
I am using
rtpengine_manage("RTP/AVP ICE=remove");
to generate the SDP to a variable ($avp(sdp))
Now, I am trying to just remove the whole a=rtcp line with re.subst
$avp(sdp)=$(avp(sdp){re.subst,|a=rtcp:[0-9]*\R||s}); *** Tried / as delimiter also, but | looks cleaner ***
This should match the line and any CR/LF characters – BUT in results, nothing is changed (various online Regex testers show this match to be correct – I tried \r\n also).
If I do the same but without the \R, then the line is removed but not the CR/LF, leaving a gap in the SDP – which is invalid.
$avp(sdp)=$(avp(sdp){re.subst,|a=rtcp:[0-9]*||s});
Gives:
a=maxptime:150
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:18 annexb=no
a=fmtp:101 0-16
a=sendrecv
s=My Media Server
Can anyone see where I am going wrong, or suggest an alternative?
Kind Regards,
Mark Hall