首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RTP反向代理

RTP反向代理
EN

Unix & Linux用户
提问于 2019-07-29 16:37:16
回答 2查看 1.3K关注 0票数 1

在我为它编写代码之前,我一直在尝试制作一个视频流服务器的原型。因此,我使用VLC在我的服务器上使用以下命令实现流:

代码语言:javascript
复制
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}'

流媒体服务开始在端口9554的本地主机上运行。经过一些研究,我没有将VLC流绑定到一个公共IP上,这是另一个值得在另一个页面上共享的问题。

问题是,为了使流从外部世界可见,我使用了NginX反向代理,并在RTP上的VLC上使用了HTTP流。

代码语言:javascript
复制
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流时,问题就出现了。当然,NginX不能工作,因为它只在较新版本上代理HTTP和TCP。

那么,您知道如何反向代理UDP流吗?

如果您知道如何将VLC绑定到公共地址而不是本地主机,任何其他相关的答案也是受欢迎的。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2019-07-29 17:54:46

RTP与RTP控制协议(RTCP)一起使用。

当RTP承载媒体流(例如音频和视频)时,RTP用于监视传输统计和服务质量(QoS),并辅助多个流的同步。

通常,RTP将在偶数UDP端口上发送,RTCP消息将通过下一个较高的奇数端口发送。

我认为这就是为什么您未能将RTP绑定到一个您忘记了RTCP的公共ip地址。

再说一次,我认为你需要的是一个DNAT,而不是反向代理。

我的建议是使用HLS而不是RTP,如果您想在互联网上传输视频和音频,它比RTP和其他类似的协议更灵活,而且您可以使用Nginx为HLS服务。

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

票数 2
EN

Unix & Linux用户

发布于 2021-06-09 10:35:25

RTP通常也可以在TCP上工作。通常,在链接末尾添加?transport=tcp是可行的,但我不确定您的情况。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/532778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档