音视频领域中,除了关注服务器相关技术外,客户端也无法回避,毕竟客户端也要负责采集,编码,收发,解码和渲染,所以客户端开发也是整个音视频技术栈不可或缺的部分。本文梳理一下客户端常见技术方案,为以后客户端开发选型提供技术储备。
1) MFC方案。
MFC做客户端是一个很古老的技术,那是上个世纪流行的技术,记得大学老师教学用的VC6.0(VC98)开发计算器的案例还记忆犹新。但由于历史和易用性原因,MFC产品还是在存在。如工业控制领域,医疗软件等还是存在MFC软件身影,笔者近几年上去车管所考科目一和科目四考试系统就是MFC做的。存在的原因主要这些领域软件是早期开发的,近10年甚至20年也许需求变化不大,只是小部分维护而已;其次就是这些行业技术过于陈旧,但满足目前需求,没有动力去引入新的技术;当然还有原因与我国大学教育有关,很多课堂教学都是VC和MFC为案例,以至于写测试程序和测试工具都是MFC去快速成型(给自己用,有个UI就够了,虽然界面很丑)。一方面开发效率低,另一方面界面风格太素,在正式的商业软件很少会用MFC了。
MFC方案效果
2)VC++方案
很多软件考虑界面不太复杂且对性能有追求,采用VC++开发,早期很多软件开发为了灵活,自定义界面风格,都采用该方案,至今很多大厂很多应用还是如此,但如果界面复杂,调Windows API定制需求开发,效率太低(人力丰富的大厂除外)。仅适合界面逻辑简单且对性能有要求的场景。
3).net方案
WinForm和WPF)的Windows程序大概在10年前是非常流行。这个是微软针对C++开发界面效率低,界面不够炫而发起另一种界面开发方案;且.net方案采用C#作为开发语言(大家公认C++学习成本高,C#更容易上手),现在的很多Windows程序要求安装net框架,基本是基于.net方案开发的。
.net方案举例
4)QT方案
随着MAC和Linux的流行,跨平台需求越来越多,有时候一个应用除了在Windows跑,可能还要在MAC上,各种Linux发行版上跑,如果采用各个系统原生的方案,就要三个团队开发3个版本。好在QT给我提供了一个跨平台方案,只需一次性开发,全平台运行。像著名的wireshark就是QT方案的,所以无论是Windows用户还是MAC用户都能安装wireshark满足自己对网络协议分析的需求。
QT 方案举例
5)electron 方案
近几年electron方案很火,Electron 基于 Chromium 和 Node.js,使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序,该方案兼容 Mac、Windows 和 Linux,可以构建出三个平台的应用程序,像著名的VSCode,whatsapp就是electron方案开发的。可以说electron是前端开发人员的福报。以前大家学习JS只能开发网页,现在JS不仅能开发服务器(node.js),还能开发客户端(electron)。开发的客户端还能跨平台运行,在某些对性能和实时性要求不高的场景,简直就是QT的克星。但QT毕竟是C++开发,性能高,在工控领域和实时性高的领域,electron还是勉为其难了,electron更适合偏业务的,对性能要求不是很苛刻的场景。
Electron方案举例
6)其他方案
当然客户端方案还有其他方案,比如跨平台的GTK方案,Java方案等。