[FFmpeg-devel] [PATCH] Send NAT punching packets when starting to read an RTP/UDP stream

Ronald S. Bultje rsbultje
Tue Feb 16 23:51:15 CET 2010


Hi,

On Tue, Feb 16, 2010 at 5:22 PM, Ronald S. Bultje <rsbultje at gmail.com> wrote:
> On Thu, Feb 11, 2010 at 3:31 PM, Martin Storsj? <martin at martin.st> wrote:
>> On Thu, 11 Feb 2010, Luca Abeni wrote:
>>> But maybe the comment before rtp_send_punch_packets() can be expanded
>>> to clarify that this is not a standard thing (BTW, does anyone know
>>> if there is any standard solution for RTSP/RTP through NATs?) and that
>>> it works if the source port is not remapped.
>>
>> Updated patch attached, with the documentation additions that you and
>> Ronald suggested.
>>
>> I documented that this is used for RDT too, as Ronald suggested, but I
>> haven't gotten it tested. Is there any public RTSP/RDT stream that I could
>> test it against?
>
> Oh, I noticed this doesn't work with WMS because of the
> braindead-retarded way in which WMS servers set up RTP (see
> surrounding code in make_setup_request()), you need:
>
> + ? ? ? ? ? ?/* Try to initialize the connection state in a
> + ? ? ? ? ? ? * potential NAT router by sending dummy packets.
> + ? ? ? ? ? ? * RTP/RTCP dummy packets are used for RDT, too.
> + ? ? ? ? ? ? */
> + ? ? ? ? ? ?if (!(rt->server_type == RTSP_SERVER_WMS && i > 1))
> + ? ? ? ? ? ? ? ?rtp_send_punch_packets(rtsp_st->rtp_handle);

Applied with this modification.

Ronald



More information about the ffmpeg-devel mailing list