園子裡的有朋友在下載並瞭解了《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);
}
}
/// <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){}
}
遠端桌面的請求/應答邏輯幾乎與視訊聊天請求/應答邏輯是一模一樣的。這裡就不再羅列響應的程式碼了。
(1)當收到對方的遠端桌面控制請求時,將顯示請求視窗。
(2)當同意對方的控制請求時,對方就可以控制請求方的電腦了。
原始碼下載:VideoChatMini.rar (若點選沒有自動下載,可右鍵另存為)
下載原始碼壓縮包,解壓後,可以用 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 獲取。
在部署之前,需要在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
命令執行成功後,就會出現之前截圖的使用者端主介面。