V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
dnjat
V2EX  ›  程序员

如何开发一款会议室(音视频)产品?好像有点难

  •  
  •   dnjat · 1 天前 · 3028 次点击

    上头交给年后任务,开发一款用来在线教育的音视频软件,先让我先研究一下,然后规划下流程方案和技术选型,主导这个软件的开发(我会 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 、如何避免/减少点对点流量对服务器造成的带宽压力?

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

    第 1 条附言  ·  1 天前
    软件需求贴错了,不能修改了。
    软件需求:
    一对一的模式,一方开启投屏(教师端),另一方进行观看(学生端),支持语音对话(后期可能会扩展荧光笔这类标记功能)。
    支持多端,桌面端(windows,mac),手机平板端(andorid,ios)。每个端都支持教师与学生。
    103 条回复    2025-01-24 11:48:00 +08:00
    1  2  
    dnjat
        101
    dnjat  
    OP
       14 小时 50 分钟前
    @simo 这技术水平,看能勉强二开不.我们三就不造原子弹了.😂.
    capric
        102
    capric  
       3 小时 52 分钟前
    你想复杂了,出个简单方案吧,教师端用 obs studio 推流,服务端用 mediamtx 或者 zlmediakit 协议转换成 fmp4 over websocket ,然后学生端基于 web 开发走 mse 播放(如果要原生开发,就是 libmpv 播放),全部都是成熟的直播开源方案,你又不要多对多,不要搞 webrtc/p2p 了,把问题搞复杂了
    mioktiar56
        103
    mioktiar56  
       1 小时 36 分钟前
    P2P 只是一个美好的愿景(比如 WebRTC 之类的技术方案),绝大多网络场景都穿透不了 NAT ,还得走服务器转发。

    以我所见,WebRTC 只适合从其源码扣代码。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3416 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 05:24 · PVG 13:24 · LAX 21:24 · JFK 00:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.