请问 Java 有办法用 Socket 将 RTSP 流做转发吗?

323 天前
 RunPiggy

之所以要使用 Socket 是因为我们做了个转发程序,就是通过 Socket 来传递私有通讯包数据。

目前我需要验证这套程序是否能满足视频流传输这个需求。

我对视频开发这块儿不是很熟,下面是我初步的想法: 1·客户端解析 RTSP 流,然后序列化为字节数组,塞进私有包发送给服务端; 2·服务端反序列化为相应的对象,然后重新生成 RTSP 流输出到指定的地址。

目前遇到的问题是 javacv 库中的 AVPacket 和 Frame 都不支持序列化。

所以想请教下各位大神有什么建议吗

482 次点击
所在节点    问与答
2 条回复
ysc3839
323 天前
怀疑是 X-Y Problem https://coolshell.cn/articles/10804.html 原始需求是什么呢?

你程序的私有包是只能传数据包吗?不能传数据流吗?能的话可以直接传 RTSP 流。
如果不行的话,有两种方案:
一种是用 gstreamer 把 RTSP 解出 RTP 包,然后传 RTP 包,收到后再用 gstreamer 把 RTP 转成 RTSP 。不过 gstreamer 生成 RTSP 后只能作为客户端发给服务器,还需要一个中转服务器。
另一种是用 kcp 等承载数据流的可靠协议,把 RTSP 流塞进去,会得到数据包,直接发就完事了,不需要关心上层协议内容。
RunPiggy
323 天前
@ysc3839 感谢回复哈,原始需求就是为了实现中转数据,之前已经实现了数据包的中转,现在是为了验证程序性能是否支持视频流的传输;
这个私有包确实只能传递数据包而不能直接传递流。
再次感谢哈,我试试您的方案

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/950411

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX