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);