AnyChat的視頻會(huì)議程序?qū)嵗斀?/h1>
來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C#教程|點(diǎn)擊: 次
AnyChat(全名叫Anychat SDK),也叫音視頻互動(dòng)開發(fā)平臺(tái);是一套跨平臺(tái)的即時(shí)通訊解決方案,基于先進(jìn)的H.264視頻編碼標(biāo)準(zhǔn)、AAC音頻編碼標(biāo)準(zhǔn)與P2P技術(shù),整合了佰銳科技在音視頻編碼、多媒體通訊領(lǐng)域領(lǐng)先的開發(fā)技術(shù)和豐富的產(chǎn)品經(jīng)驗(yàn)而設(shè)計(jì)的高質(zhì)量、寬適應(yīng)性、分布式、模塊化的網(wǎng)絡(luò)音視頻互動(dòng)平臺(tái)。
可以進(jìn)行雙人或多人的語(yǔ)音實(shí)時(shí)通話,支持Windows、Web、Android、iOS、Mac、Linux等跨平臺(tái)通信。
所提供的SDK支持C++、Delphi、Java、C#、VB、object-c等多種語(yǔ)音開發(fā)。
AnyChat包括音頻視頻錄制,拍照,服務(wù)器錄像,文字聊天,文件發(fā)送等多種功能。
界面如下
調(diào)用流程:
1.在所要監(jiān)聽的類中調(diào)用重載WndProc方法,實(shí)現(xiàn)windows消息的監(jiān)聽。
/// <summary>
/// 重載
/// </summary>
/// <param name="m"></param>
protected override void WndProc(ref Message m)
{
if (m.Msg == AnyChatCoreSDK.WM_GV_CONNECT)
{
//客戶端連接服務(wù)器,表示是否連接成功
int succed = m.WParam.ToInt32();
//連接服務(wù)器成功
if (succed == 1)
{
//登錄服務(wù)器(在WndProc中的獲取方法回調(diào)結(jié)果。參數(shù):AnyChatCoreSDK.WM_GV_LOGINSYSTEM)
int ret = AnyChatCoreSDK.Login(PublicMembers.g_Name, "", 0);
}
else
{
PublicMembers.ShowRightTip("登錄失敗。錯(cuò)誤代碼:" + succed, "");
}
}
else if (m.Msg == AnyChatCoreSDK.WM_GV_LOGINSYSTEM)
{
//客戶端登錄系統(tǒng),wParam(INT)表示自己的用戶ID號(hào)
int userid = m.WParam.ToInt32();
if (m.LParam.ToInt32() == 0)
{
m_myUserID = userid;
//進(jìn)入房間(在WndProc中的獲取方法回調(diào)結(jié)果。參數(shù):AnyChatCoreSDK.WM_GV_ENTERROOM)
int ret = AnyChatCoreSDK.EnterRoom(m_RoomID, "", 0);
}
else
{
MessageBox.Show("登錄服務(wù)器失敗,代碼出錯(cuò)為:" + m.LParam.ToInt32(), "警告");
}
}
else if (m.Msg == AnyChatCoreSDK.WM_GV_ENTERROOM)
{
//客戶端進(jìn)入房間
if (m.LParam.ToInt32() == 0)
{
//綁定本機(jī)視頻窗口 -1代表自己
int ret = AnyChatCoreSDK.SetVideoPos(-1, picLocalVideo.Handle, 0, 0, picLocalVideo.Width, picLocalVideo.Height);
//開啟本地視頻 -1代表自己
ret = AnyChatCoreSDK.UserCameraControl(-1, true);
//開啟本地聲音 -1代表自己
ret = AnyChatCoreSDK.UserSpeakControl(-1, true);
}
else
{
MessageBox.Show("申請(qǐng)進(jìn)入房間失敗,出錯(cuò)代碼為:" + m.LParam.ToInt32(), "警告");
}
}
else if (m.Msg == AnyChatCoreSDK.WM_GV_ONLINEUSER)
{
//收到當(dāng)前房間的在線用戶信息,進(jìn)入房間后觸發(fā)一次
int usrcnt = m.WParam.ToInt32();
int cnt = 0;//在線用戶數(shù)量
AnyChatCoreSDK.GetOnlineUser(null, ref cnt);//獲取在線用戶數(shù)量
int[] userArr = new int[cnt];//在線用戶ID
AnyChatCoreSDK.GetOnlineUser(userArr, ref cnt);//獲取在線用戶ID數(shù)組
}
else if (m.Msg == AnyChatCoreSDK.WM_GV_LINKCLOSE)
{
//客戶端掉線處理
}
else if (m.Msg == AnyChatCoreSDK.WM_GV_USERATROOM)
{
//用戶進(jìn)入(離開)房間,wParam(INT)表示用戶ID號(hào)、
//用戶ID
int userID = m.WParam.ToInt32();
//發(fā)生狀態(tài)
int boEntered = m.LParam.ToInt32();
if (boEntered == 1)
{
//進(jìn)入房間
m_others.Add(userID);
StartVideo(userID);
}
else
{
//退出房間
m_others.Remove(userID);
EndVideo(userID);
}
}
base.WndProc(ref m);
}
2.初始化AnyChat的SDK
//設(shè)置回調(diào)函數(shù)
SystemSetting.Text_OnReceive = new TextReceivedHandler(Received_CallBack);//文本回調(diào)涵數(shù)
SystemSetting.TransBuffer_OnReceive = new TransBufferReceivedHandler(Received_TransBuffer);//透明通道傳輸回調(diào)
SystemSetting.TransFile_OnReceive = new TransFileReceivedHandler(Received_TransFile);//文件傳輸回調(diào)
SystemSetting.TransRecord_OnReceive = new TransRecordHandler(File_CallBack);//拍照錄像回調(diào)函數(shù)
//初始化
SystemSetting.Init(this.Handle);
//設(shè)置內(nèi)核參數(shù) 設(shè)置保存路徑
int ret = 0;
ret = AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_RECORD_TMPDIR, Application.StartupPath, Application.StartupPath.Length);
ret = AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_SNAPSHOT_TMPDIR, Application.StartupPath, Application.StartupPath.Length);
3.連接AnyChat服務(wù)器。使用AnyChat功能必須先連接并登錄AnyChat服務(wù)器。執(zhí)行連接操作后會(huì)觸發(fā)windows消息回調(diào) AnyChatCoreSDK.WM_GV_CONNECT
//登錄AnyChat (IP從配置文件中獲取)
string IP = XmlHelper.GetXmlAttribute(PublicMembers.Config, "http://Configuration//IP", "value").Value;
//連接服務(wù)器(在WndProc中的獲取方法回調(diào)結(jié)果。參數(shù):AnyChatCoreSDK.WM_GV_CONNECT)
ret = AnyChatCoreSDK.Connect(IP, 8906);
4.登錄AnyChat服務(wù)器。執(zhí)行連接操作后會(huì)觸發(fā)windows消息回調(diào) AnyChatCoreSDK.WM_GV_LOGINSYSTEM
//登錄服務(wù)器(在WndProc中的獲取方法回調(diào)結(jié)果。參數(shù):AnyChatCoreSDK.WM_GV_LOGINSYSTEM)
int ret = AnyChatCoreSDK.Login(PublicMembers.g_Name, "", 0);
5.服務(wù)器登錄成功后進(jìn)入指定房間,只有在同一個(gè)房間內(nèi)的用戶才可以進(jìn)行視頻音頻交互。
//進(jìn)入房間(在WndProc中的獲取方法回調(diào)結(jié)果。參數(shù):AnyChatCoreSDK.WM_GV_ENTERROOM)
int ret = AnyChatCoreSDK.EnterRoom(m_RoomID, "", 0);
6.打開,關(guān)閉音頻視頻
//綁定本機(jī)視頻窗口 -1代表自己,通過(guò)指定userId來(lái)綁定視頻窗口
int ret = AnyChatCoreSDK.SetVideoPos(-1, picLocalVideo.Handle, 0, 0, picLocalVideo.Width, picLocalVideo.Height);
//開啟本地視頻 -1代表自己
ret = AnyChatCoreSDK.UserCameraControl(-1, true);
//開啟本地聲音 -1代表自己
ret = AnyChatCoreSDK.UserSpeakControl(-1, true);
7.發(fā)送文件,文字,錄制等操作
//發(fā)送文字
int ret = AnyChatCoreSDK.SendTextMessage(-1, true, text, length);
//發(fā)送文件 filepath:文件路徑
int taskId = 0;
int flag = AnyChatCoreSDK.TransFile(userId, filepath, 1, 0, 0, ref taskId);
//開啟聲音
int ret = AnyChatCoreSDK.UserSpeakControl(userId, true);
//關(guān)閉聲音
int ret = AnyChatCoreSDK.UserSpeakControl(userId, false);
//開啟視頻
int ret = AnyChatCoreSDK.UserCameraControl(userId, true);
//關(guān)閉視頻
int ret = AnyChatCoreSDK.UserCameraControl(userId, false);
//開始錄像
ulong flag = 0;//0為錄制視頻 1為錄制音頻
int ret = AnyChatCoreSDK.StreamRecordCtrl(userId, true, flag, 0);
//停止錄像
ulong flag = 0;//0為錄制視頻 1為錄制音頻
int ret = AnyChatCoreSDK.StreamRecordCtrl(userId, false, flag, 0);
//拍照
AnyChatCoreSDK.SnapShot(userId, 1, 1);
關(guān)于AnyChat的視頻會(huì)議程序?qū)嵗斀獾南嚓P(guān)內(nèi)容,先給大家介紹這么多,有問(wèn)題歡迎各位大俠更貼留言,我會(huì)及時(shí)和大家聯(lián)系的,謝謝大家一直以來(lái)對(duì)我們網(wǎng)站的支持。
AnyChat(全名叫Anychat SDK),也叫音視頻互動(dòng)開發(fā)平臺(tái);是一套跨平臺(tái)的即時(shí)通訊解決方案,基于先進(jìn)的H.264視頻編碼標(biāo)準(zhǔn)、AAC音頻編碼標(biāo)準(zhǔn)與P2P技術(shù),整合了佰銳科技在音視頻編碼、多媒體通訊領(lǐng)域領(lǐng)先的開發(fā)技術(shù)和豐富的產(chǎn)品經(jīng)驗(yàn)而設(shè)計(jì)的高質(zhì)量、寬適應(yīng)性、分布式、模塊化的網(wǎng)絡(luò)音視頻互動(dòng)平臺(tái)。
可以進(jìn)行雙人或多人的語(yǔ)音實(shí)時(shí)通話,支持Windows、Web、Android、iOS、Mac、Linux等跨平臺(tái)通信。
所提供的SDK支持C++、Delphi、Java、C#、VB、object-c等多種語(yǔ)音開發(fā)。
AnyChat包括音頻視頻錄制,拍照,服務(wù)器錄像,文字聊天,文件發(fā)送等多種功能。
界面如下
調(diào)用流程:
1.在所要監(jiān)聽的類中調(diào)用重載WndProc方法,實(shí)現(xiàn)windows消息的監(jiān)聽。
/// <summary> /// 重載 /// </summary> /// <param name="m"></param> protected override void WndProc(ref Message m) { if (m.Msg == AnyChatCoreSDK.WM_GV_CONNECT) { //客戶端連接服務(wù)器,表示是否連接成功 int succed = m.WParam.ToInt32(); //連接服務(wù)器成功 if (succed == 1) { //登錄服務(wù)器(在WndProc中的獲取方法回調(diào)結(jié)果。參數(shù):AnyChatCoreSDK.WM_GV_LOGINSYSTEM) int ret = AnyChatCoreSDK.Login(PublicMembers.g_Name, "", 0); } else { PublicMembers.ShowRightTip("登錄失敗。錯(cuò)誤代碼:" + succed, ""); } } else if (m.Msg == AnyChatCoreSDK.WM_GV_LOGINSYSTEM) { //客戶端登錄系統(tǒng),wParam(INT)表示自己的用戶ID號(hào) int userid = m.WParam.ToInt32(); if (m.LParam.ToInt32() == 0) { m_myUserID = userid; //進(jìn)入房間(在WndProc中的獲取方法回調(diào)結(jié)果。參數(shù):AnyChatCoreSDK.WM_GV_ENTERROOM) int ret = AnyChatCoreSDK.EnterRoom(m_RoomID, "", 0); } else { MessageBox.Show("登錄服務(wù)器失敗,代碼出錯(cuò)為:" + m.LParam.ToInt32(), "警告"); } } else if (m.Msg == AnyChatCoreSDK.WM_GV_ENTERROOM) { //客戶端進(jìn)入房間 if (m.LParam.ToInt32() == 0) { //綁定本機(jī)視頻窗口 -1代表自己 int ret = AnyChatCoreSDK.SetVideoPos(-1, picLocalVideo.Handle, 0, 0, picLocalVideo.Width, picLocalVideo.Height); //開啟本地視頻 -1代表自己 ret = AnyChatCoreSDK.UserCameraControl(-1, true); //開啟本地聲音 -1代表自己 ret = AnyChatCoreSDK.UserSpeakControl(-1, true); } else { MessageBox.Show("申請(qǐng)進(jìn)入房間失敗,出錯(cuò)代碼為:" + m.LParam.ToInt32(), "警告"); } } else if (m.Msg == AnyChatCoreSDK.WM_GV_ONLINEUSER) { //收到當(dāng)前房間的在線用戶信息,進(jìn)入房間后觸發(fā)一次 int usrcnt = m.WParam.ToInt32(); int cnt = 0;//在線用戶數(shù)量 AnyChatCoreSDK.GetOnlineUser(null, ref cnt);//獲取在線用戶數(shù)量 int[] userArr = new int[cnt];//在線用戶ID AnyChatCoreSDK.GetOnlineUser(userArr, ref cnt);//獲取在線用戶ID數(shù)組 } else if (m.Msg == AnyChatCoreSDK.WM_GV_LINKCLOSE) { //客戶端掉線處理 } else if (m.Msg == AnyChatCoreSDK.WM_GV_USERATROOM) { //用戶進(jìn)入(離開)房間,wParam(INT)表示用戶ID號(hào)、 //用戶ID int userID = m.WParam.ToInt32(); //發(fā)生狀態(tài) int boEntered = m.LParam.ToInt32(); if (boEntered == 1) { //進(jìn)入房間 m_others.Add(userID); StartVideo(userID); } else { //退出房間 m_others.Remove(userID); EndVideo(userID); } } base.WndProc(ref m); }
2.初始化AnyChat的SDK
//設(shè)置回調(diào)函數(shù) SystemSetting.Text_OnReceive = new TextReceivedHandler(Received_CallBack);//文本回調(diào)涵數(shù) SystemSetting.TransBuffer_OnReceive = new TransBufferReceivedHandler(Received_TransBuffer);//透明通道傳輸回調(diào) SystemSetting.TransFile_OnReceive = new TransFileReceivedHandler(Received_TransFile);//文件傳輸回調(diào) SystemSetting.TransRecord_OnReceive = new TransRecordHandler(File_CallBack);//拍照錄像回調(diào)函數(shù) //初始化 SystemSetting.Init(this.Handle); //設(shè)置內(nèi)核參數(shù) 設(shè)置保存路徑 int ret = 0; ret = AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_RECORD_TMPDIR, Application.StartupPath, Application.StartupPath.Length); ret = AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_SNAPSHOT_TMPDIR, Application.StartupPath, Application.StartupPath.Length);
3.連接AnyChat服務(wù)器。使用AnyChat功能必須先連接并登錄AnyChat服務(wù)器。執(zhí)行連接操作后會(huì)觸發(fā)windows消息回調(diào) AnyChatCoreSDK.WM_GV_CONNECT
//登錄AnyChat (IP從配置文件中獲取) string IP = XmlHelper.GetXmlAttribute(PublicMembers.Config, "http://Configuration//IP", "value").Value; //連接服務(wù)器(在WndProc中的獲取方法回調(diào)結(jié)果。參數(shù):AnyChatCoreSDK.WM_GV_CONNECT) ret = AnyChatCoreSDK.Connect(IP, 8906);
4.登錄AnyChat服務(wù)器。執(zhí)行連接操作后會(huì)觸發(fā)windows消息回調(diào) AnyChatCoreSDK.WM_GV_LOGINSYSTEM
//登錄服務(wù)器(在WndProc中的獲取方法回調(diào)結(jié)果。參數(shù):AnyChatCoreSDK.WM_GV_LOGINSYSTEM) int ret = AnyChatCoreSDK.Login(PublicMembers.g_Name, "", 0);
5.服務(wù)器登錄成功后進(jìn)入指定房間,只有在同一個(gè)房間內(nèi)的用戶才可以進(jìn)行視頻音頻交互。
//進(jìn)入房間(在WndProc中的獲取方法回調(diào)結(jié)果。參數(shù):AnyChatCoreSDK.WM_GV_ENTERROOM) int ret = AnyChatCoreSDK.EnterRoom(m_RoomID, "", 0);
6.打開,關(guān)閉音頻視頻
//綁定本機(jī)視頻窗口 -1代表自己,通過(guò)指定userId來(lái)綁定視頻窗口 int ret = AnyChatCoreSDK.SetVideoPos(-1, picLocalVideo.Handle, 0, 0, picLocalVideo.Width, picLocalVideo.Height); //開啟本地視頻 -1代表自己 ret = AnyChatCoreSDK.UserCameraControl(-1, true); //開啟本地聲音 -1代表自己 ret = AnyChatCoreSDK.UserSpeakControl(-1, true);
7.發(fā)送文件,文字,錄制等操作
//發(fā)送文字 int ret = AnyChatCoreSDK.SendTextMessage(-1, true, text, length); //發(fā)送文件 filepath:文件路徑 int taskId = 0; int flag = AnyChatCoreSDK.TransFile(userId, filepath, 1, 0, 0, ref taskId); //開啟聲音 int ret = AnyChatCoreSDK.UserSpeakControl(userId, true); //關(guān)閉聲音 int ret = AnyChatCoreSDK.UserSpeakControl(userId, false); //開啟視頻 int ret = AnyChatCoreSDK.UserCameraControl(userId, true); //關(guān)閉視頻 int ret = AnyChatCoreSDK.UserCameraControl(userId, false); //開始錄像 ulong flag = 0;//0為錄制視頻 1為錄制音頻 int ret = AnyChatCoreSDK.StreamRecordCtrl(userId, true, flag, 0); //停止錄像 ulong flag = 0;//0為錄制視頻 1為錄制音頻 int ret = AnyChatCoreSDK.StreamRecordCtrl(userId, false, flag, 0); //拍照 AnyChatCoreSDK.SnapShot(userId, 1, 1);
關(guān)于AnyChat的視頻會(huì)議程序?qū)嵗斀獾南嚓P(guān)內(nèi)容,先給大家介紹這么多,有問(wèn)題歡迎各位大俠更貼留言,我會(huì)及時(shí)和大家聯(lián)系的,謝謝大家一直以來(lái)對(duì)我們網(wǎng)站的支持。
欄 目:C#教程
下一篇:C#中用foreach語(yǔ)句遍歷數(shù)組及將數(shù)組作為參數(shù)的用法
本文標(biāo)題:AnyChat的視頻會(huì)議程序?qū)嵗斀?/a>
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/6758.html
您可能感興趣的文章
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并打開的方法
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#停止線程的方法
- 01-10WinForm實(shí)現(xiàn)仿視頻 器左下角滾動(dòng)新聞效果的方法
- 01-10C#通過(guò)重寫Panel改變邊框顏色與寬度的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已安裝軟件變化的方法
- 01-10C#實(shí)現(xiàn)多線程下載文件的方法


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻 器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過(guò)重寫Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10delphi制作wav文件的方法
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery