使用 ffmpeg 串流 RTSP?

使用 ffmpeg 串流 RTSP?

因此,我已經能夠成功地將 RTP 視訊串流從我的伺服器發送到 LAN 上另一個系統上的用戶端,並使用 ffplay 進行播放。我現在想使用 RTSP 在同一網絡上發送視頻,以便客戶端可以接收視頻並可以有其他選項,例如暫停視頻等。任務?

更新:

我已經嘗試過這些命令:

ffmpeg -re -i input -f rtsp -rtsp_transport tcp rtsp://localhost:8888/live.sdp

ffplay -rtsp_flags listen rtsp://localhost:8888/live.sdp

它確實開始實時流式傳輸視頻,但我實際上沒有看到任何控制媒體流的選項,如播放、錄製等!

注意:我目前用於 RTSP 的 .sdp 檔案與用於 RTP 串流媒體的檔案相同。

答案1

FWIW,我能夠使用以下命令設定本機 RTSP 伺服器用於測試目的簡單 rtsp 伺服器和 ffmpeg 依照以下步驟操作:

  1. rtsp-simple-server.yml為使用這一行 調用的 RTSP 伺服器建立一個設定檔:
    protocols: [tcp]
    
  2. 將 RTSP 伺服器作為 Docker 容器啟動:
    $ docker run --rm -it -v $PWD/rtsp-simple-server.yml:/rtsp-simple-server.yml -p 8554:8554 aler9/rtsp-simple-server
    
  3. 使用 ffmpeg 將視訊檔案(永遠循環)串流到伺服器:
    $ ffmpeg -re -stream_loop -1 -i test.mp4 -f rtsp -rtsp_transport tcp rtsp://localhost:8554/live.stream
    

運行後,您可以使用 ffplay 來查看串流:

$ ffplay -rtsp_transport tcp rtsp://localhost:8554/live.stream

注意簡單 rtsp 伺服器也可以處理 UDP 流 (iso TCP),但這將伺服器作為 Docker 容器運行很棘手。

相關內容