項目背景:html
工做之餘兼職一家公司(方向是工業4.0)給作IM系統,主要功能包括:文字、 圖片、文件傳輸、遠程協助、視頻語音等等。框架
這些功能都是基於羣會話, 好比工廠操做工人遇到問題,請求遠程專家,這個初級專家不能解決問題,會邀請一個高級專家進來解決。socket
開發過程當中主要遇到的問題是視頻和語音這一塊,像其餘的文字,圖片,文件傳輸等等以前作socket的時候就接觸過,基本不是問題,要注意的是Socket粘包和丟包,遠程協助使用開源免費的C#版本VNC 。工具
視頻和語音以爲有些難 。1、是以前沒有接觸過,2、要同時支持 安卓和蘋果手機。性能
爲了用C#解決這個問題真是費勁心思,若是是其餘語言也許不會這麼折騰,簡單記錄一下。學習
一、網上查找資料找到一個GGTalk 測試
這個怎麼評價呢,僅僅是作一些臨時項目賺點外快,可使用一下,作成本身的產品或者想學習一下底層不推薦。編碼
GGTalk雖然是開源可是他裏面用到的視頻語音是第三方的傲瑞科技,不開源並且是收費版本。指針
若是再研究一下傲瑞科技的解碼編碼,用到的是國外開源的。視頻
這個和第一個比明顯有優點,畢竟是大公司的出品,並且已經在不少地方運行,可是實際狀況是客戶現場不必定能鏈接外網,測試的時候個別華爲手機兼容不是很好。而且這個也是收費軟件。
三、FFmpeg
FFmpeg很是強大的功能包括視頻採集、視頻格式轉換、視頻抓圖、視頻加水印,轉換數字音頻、視頻,並能將其轉化爲流的開源項目。C語言開發,免費開源採用LGPL或GPL許可證多媒體視頻處理工具。
強烈推薦FFmpeg
一、免費開源
二、跨平臺
三、功能強大
四、性能優異
5 不少視頻處理軟件在使用
優勢實在太多,缺點就是須要學習成本。
特別是C#開發人員一開始使用FFmpeg有很多難度,通常用指針比較少,而FFmpeg裏面會經常使用。
下一篇文章簡單總結一下C#與FFmpeg的使用。
如今IM在市場上已經很成熟,爲何還要在搞一個呢?
這個問題剛剛開始我也這樣想,主要目的是和主框架集成。
好比專家發送一個特殊的格式鏈接[參數一,參數2、參數三],設備端打開這個鏈接,就直接跳轉到框架中的功能。
再好比 操做工人在視頻上各類畫標記,在專家端會突出顯示。
因此市場上的拿來就使用不太現實,好比上面2個需求至少UI層須要修改,既然要修改那就 趁這個機會就學習一下FFmpeg的API,
由於功能太強大了,好比後期遇到視頻美化,視頻分割合併、變音,這個FFmpeg都能很好處理。