1. 问题描述
客户端使用ffmpeg 获取一个rtsp地址时,出现 连接过程完成, 但是收不到流的情况。使用vlc 正常。
抓包对比, 发现如下情况:

服务器 DESCRIBE 信息: 服务器指定 流使用端口9400。
客户端 SETUP 信息: 使用的非9400 的 随机端口
服务器回复如上。
PLAY交互也显示正常。
但是 , 服务器发送流使用端口却是65535
2. 问题修改
修改ffmpeg可以解决这个问题, 让 ffmpeg使用指定的端口9400:
Rtsp.c -> ff_rtsp_make_setup_request()
3. 通过搜索试验发现, ffmpeg 通过指定 传输方式也可以解决。
av_dict_set(&in_opts, "rtsp_transport", "tcp", 0);