C#一个IM系统简单总结
项目背景:
工作之余兼职一家公司(方向是工业4.0)给做IM系统,主要功能包括:文字、 图片、文件传输、远程协助、视频语音等等。
这些功能是基于群会话, 比如工厂操作工人遇到问题,请求远程专家,这个初级专家不能解决问题,会邀请一个高级专家进来解决。
开发过程中主要遇到问题是视频和语音这一块,像其他的文字,图片,文件传输等等之前做Socket的时候就接触过,基本不是问题,要注意的是Socket粘包和丢包,远程协助使用开源VNC 。
视频和语音觉得有些难 。一、是之前没有接触过,二、要同时支持 安卓和苹果手机。
为了用C#解决这个问题真是费劲心思,如果是其他语言也许不会这么折腾,简单记录一下。
1、网上查找资料找到一个GGTalk
这个怎么评价呢,仅仅是做一些临时项目赚点外快,可以使用一下,做成自己的产品或者想学习一下底层不推荐。
GGTalk虽然是开源但是他里面用到的视频语音是第三方的傲瑞科技,不开源而且是收费版本。
如果再研究一下傲瑞科技的解码编码,用到的是国外ffmpeg开源的。
这个和第一个比明显有优势,毕竟是大公司的出品,而且已经在很多地方运行,但是实际情况是客户现场不一定能连接外网,测试的时候个别华为手机兼容不是很好。并且这个也是收费软件。
3、FFmpeg
FFmpeg非常强大的功能包括视频采集、视频格式转换、视频抓图、视频加水印,转换数字音频、视频,并能将其转化为流的开源项目。C语言开发,免费开源采用LGPL或GPL许可证多媒体视频处理工具。
强烈推荐FFmpeg
1、免费开源
2、跨平台
3、功能强大
4、性能优异
5 很多视频处理软件在使用
优点实在太多,缺点就是需要学习成本。
特别是C#开发人员一开始使用FFmpeg有不少难度,一般用指针比较少,而FFmpeg里面会常用。
下一篇文章简单总结一下C#与FFmpeg的使用。
现在IM在市场上已经很成熟,为什么还要在搞一个呢?
这个问题刚刚开始我也这样想,主要目的是和主框架集成。
比如专家发送一个特殊的格式连接[参数一,参数二、参数三],设备端打开这个连接,就直接跳转到框架中的功能。
再比如 操作工人在视频上各种画标记,在专家端会突出显示。
所以市场上的拿来就使用不太现实,比如上面2个需求至少UI层需要修改,既然要修改那就 趁这个机会就学习一下FFmpeg的API,
因为功能太强大了,比如后期遇到视频美化,视频分割合并、变音,这个FFmpeg都能很好处理。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构