V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
RunPiggy
V2EX  ›  问与答

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

  •  
  •   RunPiggy · 2023-06-20 17:53:00 +08:00 · 636 次点击
    这是一个创建于 557 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    2 条回复    2023-06-21 09:37:41 +08:00
    ysc3839
        1
    ysc3839  
       2023-06-21 04:47:16 +08:00   ❤️ 1
    怀疑是 X-Y Problem https://coolshell.cn/articles/10804.html 原始需求是什么呢?

    你程序的私有包是只能传数据包吗?不能传数据流吗?能的话可以直接传 RTSP 流。
    如果不行的话,有两种方案:
    一种是用 gstreamer 把 RTSP 解出 RTP 包,然后传 RTP 包,收到后再用 gstreamer 把 RTP 转成 RTSP 。不过 gstreamer 生成 RTSP 后只能作为客户端发给服务器,还需要一个中转服务器。
    另一种是用 kcp 等承载数据流的可靠协议,把 RTSP 流塞进去,会得到数据包,直接发就完事了,不需要关心上层协议内容。
    RunPiggy
        2
    RunPiggy  
    OP
       2023-06-21 09:37:41 +08:00
    @ysc3839 感谢回复哈,原始需求就是为了实现中转数据,之前已经实现了数据包的中转,现在是为了验证程序性能是否支持视频流的传输;
    这个私有包确实只能传递数据包而不能直接传递流。
    再次感谢哈,我试试您的方案
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2759 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:29 · PVG 22:29 · LAX 06:29 · JFK 09:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.