用 Java 做含有实时流媒体通信功能的服务端有哪些方式? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tctc4869
V2EX    Java

用 Java 做含有实时流媒体通信功能的服务端有哪些方式?

  •  
  •   tctc4869 2020-10-09 15:25:33 +08:00 3815 次点击
    这是一个创建于 1859 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有两个客户端,一个客户端用于实时采集声音,并编码成 aac 格式,然后把采集编码后的音频流推流到输服务器,然后另外一个客户端,连接服务器,进行拉流监听采集端的声音。当然权限都申请了。

    推流与拉流的话,感觉用什么传输协议都可以,哪怕是 tcp 与 udp 都行,也可以用 WebSocket,按照我的 猜想,应该是在服务端,用 byte[]接收,然后把 byte[]送到拉流的客户端就可以。

    不过如果实时性要求高一些有博客建议用 RTMP,RTSP 这两个传输协议,如果是用这 2 个协议话,java 的服务端适合用什么框架么?有人能指点一下么?

    用 java 做含有实时通信功能的流媒体服务端有哪些方式?

    16 条回复    2020-10-10 18:59:06 +08:00
    qwerthhusn
        1
    qwerthhusn  
       2020-10-09 15:29:58 +08:00
    买个阿里云的直播服务就行了啊
    如果客户端数量比较少,阿里云的费用也很少的
    如果客户端数据较多,你认为你自己(没有相关流媒体的经验)写的能 hold 住?
    chinvo
        2
    chinvo  
       2020-10-09 15:31:33 +08:00 via iPhone
    正确做法是业务系统只做鉴权和记录,流的转发工作交给专门的流服务器
    tctc4869
        3
    tctc4869  
    OP
       2020-10-09 15:40:50 +08:00
    谢谢指点,我知道 java 做这个可能有点困难,但是有哪些第三方的开源免费可用的流服务器么?
    @chinvo
    tctc4869
        4
    tctc4869  
    OP
       2020-10-09 15:42:29 +08:00
    @qwerthhusn 其实这样的话,我觉得不如直接去用音视频方面的第三方的 sdk 工具
    chinvo
        5
    chinvo  
       2020-10-09 15:44:32 +08:00 via iPhone
    @tctc4869 nginx rtmp module
    manhere
        6
    manhere  
       2020-10-09 16:01:02 +08:00
    @tctc4869 ZLMediaKit
    hugedata
        7
    hugedata  
       2020-10-09 16:12:05 +08:00
    我补上一个 nginx hls module 。
    另外,你可以了解一下 srs 已经发布到 3.0 了。比较稳定。
    tctc4869
        8
    tctc4869  
    OP
       2020-10-09 16:15:43 +08:00
    @manhere 谢谢
    jiobanma
        9
    jiobanma  
       2020-10-09 16:19:21 +08:00
    我有一个开源的流媒体服务,不过没有做音频的处理。使用的是 javacv 这个框架,封装的是 ffmpeg 。服务主要是通过 rtsp 转 rtmp 可以参考一下希望可以帮助到你。https://github.com/banmajio/RTSPtoRTMP
    tctc4869
        10
    tctc4869  
    OP
       2020-10-09 16:31:12 +08:00
    ffmpeg 的开源是基于 GPL 协议,只是基于这个开发应用的话,不改变扩展 ffmpeg 的代码,不需要项目开源把?
    tctc4869
        11
    tctc4869  
    OP
       2020-10-09 16:57:56 +08:00
    @manhere
    @hugedata
    @chinvo
    @jiobanma

    问一下,android 的话,有哪些推流软件呢,便于测试
    twoconk
        12
    twoconk  
       2020-10-09 17:53:18 +08:00
    andriod 的话,可以考虑 anyrtc 开源的跨平台客户端( https://github.com/anyrtcIO-Community/anyRTC-RTMP-OpenSource ) 或者 LaiFeng ( https://github.com/LaiFeng-Android/SopCastComponent) 都方便定制修改
    tctc4869
        13
    tctc4869  
    OP
       2020-10-10 10:06:54 +08:00
    谢谢
    @twoconk
    tctc4869
        14
    tctc4869  
    OP
       2020-10-10 10:26:16 +08:00
    @chinvo
    @hugedata

    nginx 1.7.11.3 Gryphon 也可以
    tctc4869
        15
    tctc4869  
    OP
       2020-10-10 14:29:09 +08:00
    @chinvo 问一下鉴权问题,如果业务系统(带有用户系统以及鉴权功能)和流媒体服务都是分成两个服务器各自负责的,那鉴权流程一般是怎么弄的,
    开源的流媒体服务器,直接启动运行,实时观看,比如那些可以直接输入 rtmp 的 url 就可以进行采集并实时推流的软件和拉流的播放器软件,进行鉴权杜绝非法拉流或非法推流的情况,这个鉴权怎么做比较合适?

    我只想到音视频流经过业务系统转发到流媒体服务器,转发之前进行鉴权,但这样做确定延迟不会很大么?
    chinvo
        16
    chinvo  
       2020-10-10 18:59:06 +08:00
    @tctc4869 #15 前面说的这些流媒体服务器都有相关解决方案

    比如 nginx rtmp module 有 before_push before_play 等设置项, 可以设置 shell 或 URL 去处理推送和播放事件来决定是否放行
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3574 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 04:15 PVG 12:15 LAX 20:15 JFK 23:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86