Vlc

RTP 反向代理

  • June 9, 2021

在我真正為它編寫程式碼之前,我一直在嘗試製作影片流伺服器的原型。所以我使用 VLC 使用以下命令在我的伺服器上進行流式傳輸:

cvlc video.mpg --loop --sout '#transcode{vb=0,vcodec=mpgv,fps=20,ab=0,acodec=mpga,channels=2,venc=ffmpeg}:rtp{mux=ts,ttl=10,dst=127.0.0.1,port=9554}'

流媒體服務開始在localhost的 9554 埠上執行。經過一番研究,我未能將 VLC 流綁定到公共 IP,這是另一個值得在另一個頁面上分享的問題。

問題是,為了讓外部世界可以看到流媒體,我使用了 NginX 反向代理,並在 VLC over RTP上使用了****HTTP流媒體。

cvlc video.mpg --loop --sout '#transcode{vb=0,vcodec=mpgv,fps=20,ab=0,acodec=mpga,channels=2,venc=ffmpeg}:http{mux=ts,ttl=10,dst=0.0.0.0:9554/live}'

好吧,除了我沒有使用RTP協議之外,在我的手機上觀看流媒體影片是成功的。

當我不知道如何反向代理UDP Stream時,問題就出現了。當然,NginX 不會工作,因為它只代理 HTTP 和新版本的 TCP,當然。

那麼,知道如何反向代理UDP 流嗎?

也歡迎任何其他相關答案,以防您知道如何將 VLC 綁定到公共地址而不是 localhost。

RTP 與 RTP 控制協議 (RTCP) 結合使用。

RTP 承載媒體流(例如,音頻和影片),而 RTCP 用於監視傳輸統計和服務質量 (QoS) 並幫助多個流同步。

通常,RTP 將在偶數 UDP 埠上發送,而 RTCP 消息將通過下一個更高的奇數埠發送。

我認為這就是您未能將 RTP 綁定到您忘記 RTCP 的公共 IP 地址的原因。

我再次認為您需要的是 DNAT 而不是反向代理。

如果你想在網際網路上流式傳輸影片和音頻,我的建議是使用 HLS 而不是 RTP,它比 RTP 和其他類似協議更靈活,你可以使用 Nginx 來服務 HLS。

http://nginx.org/en/docs/http/ngx_http_hls_module.html

引用自:https://unix.stackexchange.com/questions/532778