上头交给年后任务,开发一款用来在线教育的音视频软件,先让我先研究一下,然后规划下流程方案和技术选型,主导这个软件的开发(我会 c++,java ,另外两个会 java )。

本人无音视频开发经验也无理论知识,完全从头开始研发。

为什么不用市面上已有产品?因为要交钱,老板希望有自己的产品,方便日后扩展,升级,满足他的控制欲,为称霸扫平道路。

👑希望能得到音视频大佬们的指点👑。

软件需求:

1 、桌面端界面使用 QT ,移动端界面使用 Flutter 或原生。

2 、业务库统一用 C++实现,多端界面端统一调用业务库(粗略了解到过程中还有交叉编译之类的,不知道是不是很复杂)。

下面是我这两天的查阅,拼湊出的一个简略框架和流程:

大体框架:

1 、桌面端界面使用 QT ,移动端界面使用 Flutter 或原生。

2 、业务库统一用 C++实现,多端界面端统一调用业务库(粗略了解到过程中还有交叉编译之类的,不知道是不是很复杂)。

大体流程:

1 、通过 gRPC 传输信令,建立 WebRTC 点对点连接(这里打算直接用 P2P 建立连接,涉及到 NAT 穿透,如果穿不透,使用 TURN 做中继,用中继后所有流量都得走服务器,人一多,对服务器带宽是个挑战,基本一个 5M 带宽,最多支持 5 个一对一,那得多少带宽才能带得动)。

2 、教师通过系统 API 捕获屏幕,摄像头采集,麦克风采集,通过 ffmpeg 处理后,用 WebRTC 传输。

3 、学生端直接使用 WebRTC 显示。

使用 WebRTC:

使用 WebRTC 比较方便,有网络自适应。但好像只能在浏览器中使用。

WebRTC 也有 native 库(原生 native 库,metartc ),直接在 C++调用,不知道坑多不多。

不使用 WebRTC:

采用 RTMP/RTSP 传输,ffmpeg 解码后,用 OpenSL ,OpenGL 之类自己做渲染。

疑问:

1 、使用 WebRTC 方便 还是 用 RTMP/RTSP 传输后自己解码显示?

2 、如何避免/减少点对点流量对服务器造成的带宽压力?

这中间有的地方可能理解得不对🐞,希望得到大佬们的批评指点🌻。如果有不错的学习资源,帮忙推荐一下🎁。

举报· 3399 次点击
登录 注册 站外分享
32 条回复  
awing 该用户已被删除 21 分钟前
提示: 作者被禁止或删除 内容自动屏蔽
ysc3839 小成 1 小时前
Open WebRTC Toolkit 就完事了,客户端用 Electron 等浏览器套壳方案,服务端是 Node.js 。
dnjat 楼主 初学 3 小时前
@vopsoft 嘿嘿,好的,大家都谈虎色变,看来这家伙确实不好惹。😊
dnjat 楼主 初学 昨天 23:58
@HenryDai 好的,谢谢,我去研究了解下。
vopsoft 小成 昨天 23:47
口罩刚开始时 常见的视频会议都崩溃过 只有 zoom 没事 事实上日常用 zoom 也优于其他视频会议。zoom 作者原是负责思科会议的。这东西还是有很高的壁垒的。楼上说的对 直接用声网的 SDK 吧
HenryDai 初学 昨天 23:40
@dnjat 我记得当时我和另一个同事改起来十分吃力(比如要改按钮的位置无从下手),哈哈哈,我建议是根据官方的配置修改一下配置就好了(比如更换图标,换个背景啥的),跳转到私有化的 jitsi 这样子的。
dnjat 楼主 初学 昨天 23:23
@HenryDai 噢,你在 jitisi 上二次开发过,这经验太好了,至少在魔改的过程中,能坚信它是能成功的。这个从 0 到 1 的魔改过程,你花费了多久?方便分享下嘛
dnjat 楼主 初学 昨天 23:21
@maxwel1 是的,算下来,投入是很大。三个人搞一年就是多少工资了,还有后期带宽,觉得也是个大头。看扣开源代码这条路看还有戏没了。
dnjat 楼主 初学 昨天 23:18
@foxhunt 一对一,三路吧。一路教师屏幕,两路双方摄像头。 翻阅了资料,确实开发也很难,还没算开发出来后的运营成本。
1234下一页
返回顶部