C#一个IM系统简单总结

项目背景:

     工作之余兼职一家公司(方向是工业4.0)给做IM系统,主要功能包括:文字、 图片、文件传输、远程协助、视频语音等等。

这些功能都是基于群会话, 比如工厂操作工人遇到问题,请求远程专家,这个初级专家不能解决问题,会邀请一个高级专家进来解决。

开发过程中主要遇到的问题是视频和语音这一块,像其他的文字,图片,文件传输等等之前做socket的时候就接触过,基本不是问题,要注意的是Socket粘包和丢包,远程协助使用开源免费的C#版本VNC 。

视频和语音觉得有些难 。一、是之前没有接触过,二、要同时支持 安卓和苹果手机。


为了用C#解决这个问题真是费劲心思,如果是其他语言也许不会这么折腾,简单记录一下。

1、网上查找资料找到一个GGTalk

   这个怎么评价呢,仅仅是做一些临时项目赚点外快,可以使用一下,做成自己的产品或者想学习一下底层不推荐

   GGTalk虽然是开源但是他里面用到的视频语音是第三方的傲瑞科技,不开源而且是收费版本。

   如果再研究一下傲瑞科技的解码编码,用到的是国外开源的。

2、腾讯实时音视频 TRTC 

   这个和第一个比明显有优势,毕竟是大公司的出品,而且已经在很多地方运行,但是实际情况是客户现场不一定能连接外网,测试的时候个别华为手机兼容不是很好。并且这个也是收费软件。

3、FFmpeg

    FFmpeg非常强大的功能包括视频采集、视频格式转换、视频抓图、视频加水印,转换数字音频、视频,并能将其转化为流的开源项目。C语言开发,免费开源采用LGPL或GPL许可证多媒体视频处理工具。

强烈推荐FFmpeg

1、免费开源  

2、跨平台

3、功能强大 

4、性能优异 

5 很多视频处理软件在使用 

优点实在太多,缺点就是需要学习成本。

特别是C#开发人员一开始使用FFmpeg有不少难度,一般用指针比较少,而FFmpeg里面会常用。

下一篇文章简单总结一下C#与FFmpeg的使用。


现在IM在市场上已经很成熟,为什么还要在搞一个呢?

这个问题刚刚开始我也这样想,主要目的是和主框架集成。

比如专家发送一个特殊的格式连接[参数一,参数二、参数三],设备端打开这个连接,就直接跳转到框架中的功能。

再比如 操作工人在视频上各种画标记,在专家端会突出显示。

所以市场上的拿来就使用不太现实,比如上面2个需求至少UI层需要修改,既然要修改那就 趁这个机会就学习一下FFmpeg的API,

因为功能太强大了,比如后期遇到视频美化,视频分割合并、变音,这个FFmpeg都能很好处理。

你可能感兴趣的:(C#一个IM系统简单总结)