C# 實現 Linux 視訊聊天、遠端桌面(原始碼,支援信創國產化環境,銀河麒麟,統信UOS)

2023-06-26 15:00:55

       園子裡的有朋友在下載並瞭解了《C# 實現 Linux 視訊會議(原始碼,支援信創環境,銀河麒麟,統信UOS)》中提供的原始碼後,留言給我說,這個視訊會議有點複雜了,程式碼比較多,看得有些費勁。問我能不能整個簡單點的Demo,只要有視訊聊天和遠端桌面的功能就可以。於是,我就又寫了一個Demo來供大家參考,它可以在Windows和Linux(包括國產OS,如銀河麒麟、統信UOS、深度Deepin等)上執行。

       下圖是在銀河麒麟V10上執行的截圖:

       

 (2)傳送回複視訊聊天請求訊息

/// <summary>
/// 是否同意視訊聊天請求
/// </summary>
/// <param name="isReceive">true表示同意,false表示拒絕</param>
private void ReplyVideoRequest(bool isReceive)
{
  try
  {
    byte[] vs = BitConverter.GetBytes(isReceive);     App.multimediaManager.SendCustomizedMessage(this.friendId, InformationTypes.VideoResult, vs,null);     if (isReceive)     {       App.mainWindow.RequestVideo(false);       App.mainWindow.SetCurrentVideo(this.friendId);     }     else     {       CommonHelper.ShowToolTip("已拒絕對方視訊通話邀請");     }     Close4BtnClick = true;     App.mainWindow.ClearVideoRequest();   }   catch(Exception e)
  {     LoginWindow.FileAgileLogger.Log(e,
"VideoRequestWindow.ReplyVideoRequest", ESBasic.Loggers.ErrorLevel.Standard);   } }

4. 收到對方視訊請求的回覆

/// <summary>
/// 視訊請求,收到對方回覆
/// </summary>
/// <param name="OtherIsAgree">true表示同意,false表示拒絕</param>
internal void SendVideoRequestResult(bool OtherIsAgree)
{
  if (OtherIsAgree)
  {
    this.OnAgree(this.friendID);
    App.mainWindow.SetCurrentVideo(this.friendID);
  }
  else
  {
    CommonHelper.ShowToolTip("對方拒絕與您進行視訊通話");
    App.mainWindow.ClearVideoChat();
  }
}

當對方回覆同意時,將連線到對方的麥克風和攝像頭,開始視訊聊天對談:

/// <summary>
/// 對方同意視訊對談
/// </summary>
public void OnAgree(string destLoginID)
{
  try
  { 
    startTime = DateTime.Now;
    timer.Start();
    this.friendLoginID = destLoginID != null? destLoginID: this.friendName;
    this.lab_title.Content = string.Format("正在和{0}視訊對談", this.friendName);
    this.dynamicCameraConnector1.BeginConnect(this.friendLoginID);
    this.microphoneConnector1.BeginConnect(this.friendLoginID);
    this.microphoneConnector1.ConnectEnded += MicrophoneConnector1_ConnectEnded;
    this.dynamicCameraConnector1.ConnectEnded += DynamicCameraConnector1_ConnectEnded;
    this.dynamicCameraConnector1.Disconnected += DynamicCameraConnector1_Disconnected;
    this.dynamicCameraConnector1.SetViewer(this.image_camera_other);
  }
  catch (Exception ee){}
}

 

5. 實現遠端桌面

      遠端桌面的請求/應答邏輯幾乎與視訊聊天請求/應答邏輯是一模一樣的。這裡就不再羅列響應的程式碼了。

(1)當收到對方的遠端桌面控制請求時,將顯示請求視窗。

   

(2)當同意對方的控制請求時,對方就可以控制請求方的電腦了。

         

四.原始碼下載

     原始碼下載:VideoChatMini.rar (若點選沒有自動下載,可右鍵另存為)

1. 原始碼專案說明

     下載原始碼壓縮包,解壓後,可以用 VS2022 開啟解決方案,其中主要包括瞭如下幾個專案:

(1) Oraycn.Demos.VideoChatMini.ClientWPF:視訊聊天Windows 使用者端(WPF版本)

(2) Oraycn.Demos.VideoChatMini.Server:視訊聊天 Windows 伺服器端

(3) Oraycn.Demos.VideoChatMini.LinuxClient:視訊聊天 Linux 使用者端

(4) Oraycn.Demos.VideoChatMini.LinuxServer:視訊聊天 Linux 伺服器端

     注: Linux使用者端內建的是x86/x64非託管so庫,若需要其它架構的so,請聯絡QQ:2027224508 獲取。  

2. 在Linux上部署執行說明

       在部署之前,需要在linux伺服器端和使用者端上分別安裝 .Net core 3.1版本,命令列安裝命令如下:

yum install dotnet-sdk-3.1

      檢查版本安裝情況

 dotnet --version

       執行:

(1)在CentOS上啟動Oraycn.Demos.VideoChatMini.LinuxServer伺服器端:

  拷貝Oraycn.Demos.VideoChatMini.LinuxServer專案下的Debug資料夾,到CentOS作業系統上,開啟Debug -> netcoreapp3.1目錄 ,在目錄下開啟終端,執行以下命令啟動伺服器端

   

dotnet Oraycn.Demos.VideoChatMini.LinuxServer.dll

 (2)在麒麟或統信UOS、Ubuntu上執行Oraycn.Demos.VideoChatMini.LinuxClient使用者端:

  拷貝Oraycn.Demos.VideoChatMini.LinuxClient專案下的Debug資料夾,到麒麟或統信UOS、Ubuntu作業系統上,開啟Debug -> netcoreapp3.1目錄 ,在目錄下開啟終端,執行以下命令啟動使用者端

dotnet Oraycn.Demos.VideoChatMini.LinuxClient.dll

       命令執行成功後,就會出現之前截圖的使用者端主介面。