有两个客户端,一个客户端用于实时采集声音,并编码成 aac 格式,然后把采集编码后的音频流推流到输服务器,然后另外一个客户端,连接服务器,进行拉流监听采集端的声音。当然权限都申请了。
推流与拉流的话,感觉用什么传输协议都可以,哪怕是 tcp 与 udp 都行,也可以用 WebSocket,按照我的 猜想,应该是在服务端,用 byte[]接收,然后把 byte[]送到拉流的客户端就可以。
不过如果实时性要求高一些,有博客建议用 RTMP,RTSP 这两个传输协议,如果是用这 2 个协议话,java 的服务端适合用什么框架么?有人能指点一下么?
用 java 做含有实时通信功能的流媒体服务端有哪些方式?
1
qwerthhusn 2020-10-09 15:29:58 +08:00
买个阿里云的直播服务就行了啊
如果客户端数量比较少,阿里云的费用也很少的 如果客户端数据较多,你认为你自己(没有相关流媒体的经验)写的能 hold 住? |
2
chinvo 2020-10-09 15:31:33 +08:00 via iPhone
正确做法是业务系统只做鉴权和记录,流的转发工作交给专门的流服务器
|
4
tctc4869 OP @qwerthhusn 其实这样的话,我觉得不如直接去用音视频方面的第三方的 sdk 工具
|
7
hugedata 2020-10-09 16:12:05 +08:00
我补上一个 nginx hls module 。
另外,你可以了解一下 srs 已经发布到 3.0 了。比较稳定。 |
9
jiobanma 2020-10-09 16:19:21 +08:00
我有一个开源的流媒体服务,不过没有做音频的处理。使用的是 javacv 这个框架,封装的是 ffmpeg 。服务主要是通过 rtsp 转 rtmp 可以参考一下希望可以帮助到你。https://github.com/banmajio/RTSPtoRTMP
|
10
tctc4869 OP ffmpeg 的开源是基于 GPL 协议,只是基于这个开发应用的话,不改变扩展 ffmpeg 的代码,不需要项目开源把?
|
11
tctc4869 OP |
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) 都方便定制修改
|