1. 背景
在测试 ffmpeg接收 ts over rtp流时,使用工具发了几个连续端口的rtp流,比如:rtp://192.168.1.11:1234, rtp://192.168.1.11:1235等,结果发现ffmpeg在接收纯rtp流时,也将rtcp的端口开启了。看样子是继承了rtsp的做法。
代码如下:
rtpproto.c
static int rtp_open(URLContext *h, const char *uri, int flags)
{
RTPContext *s = h->priv_data;
......
av_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &rtp_port,
path, sizeof(path), uri);
printf("rtp url:%s\n", uri);
/* extract parameters */
if (s->rtcp_port < 0)
s->rtcp_port = rtp_port + 1;
......
if (s->local_rtcpport < 0) {
s->local_rtcpport = s->local_rtpport + 1;
build_udp_url(s, buf, sizeof(buf),
hostname, s->rtcp_port, s->local_rtcpport,
sources, block);
if (ffurl_open_whitelist(&s->rtcp_hd, buf,