天天看點

記一次 ffmpeg 接收rtsp異常

     1. 問題描述

     用戶端使用ffmpeg 擷取一個rtsp位址時,出現 連接配接過程完成, 但是收不到流的情況。使用vlc 正常。

     抓包對比, 發現如下情況:

記一次 ffmpeg 接收rtsp異常

      伺服器 DESCRIBE 資訊: 伺服器指定 流使用端口9400。

記一次 ffmpeg 接收rtsp異常

       用戶端 SETUP 資訊: 使用的非9400 的 随機端口

記一次 ffmpeg 接收rtsp異常

        伺服器回複如上。

        PLAY互動也顯示正常。

        但是 , 伺服器發送流使用端口卻是65535

記一次 ffmpeg 接收rtsp異常

2.  問題修改

     修改ffmpeg可以解決這個問題, 讓 ffmpeg使用指定的端口9400:

     Rtsp.c -> ff_rtsp_make_setup_request()  

記一次 ffmpeg 接收rtsp異常

3. 通過搜尋試驗發現, ffmpeg 通過指定 傳輸方式也可以解決。

av_dict_set(&in_opts, "rtsp_transport",  "tcp", 0);