如何为QT应用程序添加WebRTC SIP功能

        很多人会说,要开发webrtc sip功能,直接用网页的webrtc接口不就得了,何必用应用程序。但好多行业软件还是不能全部依赖网页的,例如音视频指挥调度系统,因为要对接监控系统,要实现单页面多监控画面(如4*4),无论性能还是可靠性,QT应用程序更靠谱些。

        于是问题就来了,基于QT的音视频调度系统终端,sip功能如何实现呢?使用C/C++等应用编程语言当然可以实现,但考虑到windows、linux以及macos全平台的通用性,还是在QT里面内置支持webrtc的浏览器更简单更方便些。

        QT5、QT6已经使用基于chromium内核的QWebEngine支持内置web嵌入,但在实际使用时发现各种问题:1、不能自由定制chromium的版本,2、载入网页会莫名其妙的慢,3、没有开放chromium内核的全部参数,只封装了部分参数提供给接口层,导致webrtc开发体验很差,如,只开放了跟webrtc有关的一个参数:QWebEngineSettings::WebRTCPublicInterfacesOnly,导致QWebEngine中的sip功能被强制打开了mdns功能,导致sip通话建立很慢。

        为了解决QWebEngine的问题,可以在QT中引入CEF(Chromium Embedded Framework),根据业务需求,自由使用chromium版本,可以在https://cef-builds.spotifycdn.com/index.html下载合适的CEF版本嵌入到QT程序中。

        CEF是一个比较大的开发框架,除了基本的web浏览功能,还提供应用程序和web网页之间的互操作,例如应用程序调用网页js,网页js调用应用程序开放的接口等。对chromium/CEF不熟悉的同学,可以下载GitHub - CefView/QCefView: A Qt Widget encapsulated CEF view based on QWidget这个已经使用QT封装过的CEF Widget,其当前默认使用的chromium版本是113.0.5672.128,也可以在spotifycdn上下载新的chromium/CEF版本替换重新编译。笔者使用的是chromium 121.0.6167.160版本,看图:

        在QT中嵌入CEF支持WebRTC功能,最关键的是充分利用CEF开放的chromium参数控制,打开media-stream,usermedia-screen-capturing开关,use-angle启用渲染硬件加速,关闭mdns等,才能充分感受到流畅的webrtc sip视频通话体验。

        笔者当初验证QT CEF WebRTC sip功能的界面如下:

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值