遠程伺服器如何進行視頻通話
㈠ 兩台電腦怎麼視頻聊天(沒連網際網路)
可以設置區域網,調節伺服器名稱,通過網上鄰居里設置電腦名稱,就可以!
㈡ Android開發視頻通話怎麼實現
/**
* Android視頻聊天
* 1、初始化SDK 2、連接伺服器、 3、用戶登錄;4、進入房間;5、打開本地視頻;6、請求對方視頻
*/
public class VideoChatActivity extends Activity implements AnyChatBaseEvent
{
private AnyChatCoreSDK anychat; // 核心SDK
private SurfaceView remoteSurfaceView; // 對方視頻
private SurfaceView localSurfaceView; // 本地視頻
private ConfigEntity configEntity;
private boolean bSelfVideoOpened = false; // 本地視頻是否已打開
private boolean bOtherVideoOpened = false; // 對方視頻是否已打開
private TimerTask mTimerTask; // 定時器
private Timer mTimer = new Timer(true);
private Handler handler; // 用Handler來不間斷刷新即時視頻
private List<String> userlist = new ArrayList<String>();//保存在線用戶列表
private int userid; // 用戶ID
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_chat);
remoteSurfaceView = (SurfaceView) findViewById(R.id.surface_remote);
localSurfaceView = (SurfaceView) findViewById(R.id.surface_local);
configEntity = ConfigService.LoadConfig(this);//載入視頻通話設置
loginSystem();// 初始化SDK 連接伺服器
mTimerTask = new TimerTask(){
public void run(){
Message mesasge = new Message();
handler.sendMessage(mesasge);
}
};
mTimer.schele(mTimerTask, 1000, 100);
handler = new Handler(){
@Override
public void handleMessage(Message msg){
VideoChat();// 不間斷顯示即時視頻通話畫面
super.handleMessage(msg);
}
};
}
// 初始化SDK 連接伺服器
private void loginSystem(){
if (anychat == null){
anychat = new AnyChatCoreSDK();
anychat.SetBaseEvent(this); // 設置基本事件回調函數
if (configEntity.useARMv6Lib != 0) // 使用ARMv6指令集
anychat.SetSDKOptionInt(AnyChatDefine.
BRAC_SO_CORESDK_USEARMV6LIB, 1);
anychat.InitSDK(android.os.Build.VERSION.SDK_INT, 0); // 初始化SDK
}
anychat.Connect("demo.anychat.cn", 8906);// 連接伺服器
}
// 顯示即時視頻通話畫面
public void VideoChat(){
if (!bOtherVideoOpened){
if (anychat.GetCameraState(userid) == 2
&& anychat.GetUserVideoWidth(userid) != 0){
SurfaceHolder holder = remoteSurfaceView.getHolder();
holder.setFormat(PixelFormat.RGB_565);
holder.setFixedSize(anychat.GetUserVideoWidth(userid),
anychat.GetUserVideoHeight(userid));
Surface s = holder.getSurface(); // 獲得視頻畫面
anychat.SetVideoPos(userid, s, 0, 0, 0, 0); // 調用API顯示視頻畫面
bOtherVideoOpened = true;
}
if (!bSelfVideoOpened){
if (anychat.GetCameraState(-1) == 2
&& anychat.GetUserVideoWidth(-1) != 0){
SurfaceHolder holder = localSurfaceView.getHolder();
holder.setFormat(PixelFormat.RGB_565);
holder.setFixedSize(anychat.GetUserVideoWidth(-1),
anychat.GetUserVideoHeight(-1));
Surface s = holder.getSurface();
anychat.SetVideoPos(-1, s, 0, 0, 0, 0);
bSelfVideoOpened = true;
}
}
}
public void OnAnyChatConnectMessage(boolean bSuccess){
if (!bSuccess){
Toast.makeText(VideoChatActivity.this, "連接伺服器失敗,自動重連,請稍後...", Toast.LENGTH_SHORT).show();
}
anychat.Login("android", ""); // 伺服器連接成功 用戶登錄
}
public void OnAnyChatLoginMessage(int dwUserId, int dwErrorCode){
if (dwErrorCode == 0) {
Toast.makeText(this, "登錄成功!", Toast.LENGTH_SHORT).show();
anychat.EnterRoom(1, ""); // 用戶登錄成功 進入房間
ApplyVideoConfig();
} else {
Toast.makeText(this, "登錄失敗,錯誤代碼:" + dwErrorCode, Toast.LENGTH_SHORT).show();
}
}
public void OnAnyChatEnterRoomMessage(int dwRoomId, int dwErrorCode){
if (dwErrorCode == 0) { // 進入房間成功 打開本地音視頻
Toast.makeText(this, "進入房間成功", Toast.LENGTH_SHORT).show();
anychat.UserCameraControl(-1, 1); // 打開本地視頻
anychat.UserSpeakControl(-1, 1); // 打開本地音頻
} else {
Toast.makeText(this, "進入房間失敗,錯誤代碼:" + dwErrorCode, Toast.LENGTH_SHORT).show();
}
}
public void OnAnyChatOnlineUserMessage(int dwUserNum, int dwRoomId){
if (dwRoomId == 1){
int user[] = anychat.GetOnlineUser();
if (user.length != 0){
for (int i = 0; i < user.length; i++){
userlist.add(user[i]+"");
. }
String temp =userlist.get(0);
userid = Integer.parseInt(temp);
anychat.UserCameraControl(userid, 1);// 請求用戶視頻
anychat.UserSpeakControl(userid, 1); // 請求用戶音頻
}
else {
Toast.makeText(VideoChatActivity.this, "當前沒有在線用戶", Toast.LENGTH_SHORT).show();
}
}
}
public void OnAnyChatUserAtRoomMessage(int dwUserId, boolean bEnter){
if (bEnter) {//新用戶進入房間
userlist.add(dwUserId+"");
}
else { //用戶離開房間
if (dwUserId == userid)
{
Toast.makeText(VideoChatActivity.this, "視頻用戶已下線", Toast.LENGTH_SHORT).show();
anychat.UserCameraControl(userid, 0);// 關閉用戶視頻
anychat.UserSpeakControl(userid, 0); // 關閉用戶音頻
userlist.remove(userid+""); //移除該用戶
if (userlist.size() != 0)
{
String temp =userlist.get(0);
userid = Integer.parseInt(temp);
anychat.UserCameraControl(userid, 1);// 請求其他用戶視頻
anychat.UserSpeakControl(userid, 1); // 請求其他用戶音頻
}
}
141. else {
userlist.remove(dwUserId+""); //移除該用戶
}
}
}
public void OnAnyChatLinkCloseMessage(int dwErrorCode){
Toast.makeText(VideoChatActivity.this, "連接關閉,error:" + dwErrorCode, Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy(){ //程序退出
anychat.LeaveRoom(-1); //離開房間
anychat.Logout(); //注銷登錄
anychat.Release(); //釋放資源
mTimer.cancel();
super.onDestroy();
}
// 根據配置文件配置視頻參數
private void ApplyVideoConfig(){
if (configEntity.configMode == 1) // 自定義視頻參數配置
{
// 設置本地視頻編碼的碼率(如果碼率為0,則表示使用質量優先模式)
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_BITRATECTRL,configEntity.videoBitrate);
if (configEntity.videoBitrate == 0)
{
// 設置本地視頻編碼的質量
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_QUALITYCTRL,configEntity.videoQuality);
}
// 設置本地視頻編碼的幀率
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_FPSCTRL,configEntity.videoFps);
// 設置本地視頻編碼的關鍵幀間隔
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_GOPCTRL,configEntity.videoFps * 4);
// 設置本地視頻採集解析度
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_WIDTHCTRL,configEntity.resolution_width);
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_HEIGHTCTRL,configEntity.resolution_height);
// 設置視頻編碼預設參數(值越大,編碼質量越高,佔用CPU資源也會越高)
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_PRESETCTRL,configEntity.videoPreset);
}
// 讓視頻參數生效
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_APPLYPARAM,configEntity.configMode);
// P2P設置
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_NETWORK_P2PPOLITIC,configEntity.enableP2P);
// 本地視頻Overlay模式設置
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_OVERLAY,configEntity.videoOverlay);
// 迴音消除設置
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_AUDIO_ECHOCTRL,configEntity.enableAEC);
// 平台硬體編碼設置
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_CORESDK_USEHWCODEC,configEntity.useHWCodec);
// 視頻旋轉模式設置
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_ROTATECTRL,configEntity.videorotatemode);
// 視頻平滑播放模式設置
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_STREAM_SMOOTHPLAYMODE,configEntity.smoothPlayMode);
// 視頻採集驅動設置
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_CAPDRIVER,configEntity.videoCapDriver);
// 本地視頻採集偏色修正設置
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_FIXCOLORDEVIA,configEntity.fixcolordeviation);
// 視頻顯示驅動設置
anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL,configEntity.videoShowDriver);
}
}
㈢ .net如何實現網頁式語音聊天與視頻功能
有2點:1 .net語言沒有運行在客戶端的,所以用.net 肯定沒辦法完成。2.運行在瀏覽器上的語言許可權都很低,根本沒有辦法訪問像攝像頭這一類的硬體,而且瀏覽器也不具備點對點的功能。
如果 我是說如果 你老闆非讓你做,可以給你提供一種可能。
首先 肯定要安裝一個很小的插件,作用就是打開攝像頭,並把錄制的信息保存在本地,然後用js以數據流的形式讀出這個文件,發送到伺服器上,另外一個客戶端不斷的取伺服器上的這個數據,讀出來後用播放器解析出來。這樣還有可能實現部分功能,但是具體問題上是否會遇見解決不了的困難就不知道了
㈣ 沒有攝像頭如何進行視頻聊天
問:在MSN上聊天時,我的不少網友都可以使用攝像頭在Netmeeting中進行視頻交流。但是我的電腦上根本沒有連接任何視頻設備,也沒有安裝過視頻驅動,怎樣才能進行視頻聊天呢? 答:進行視頻聊天需要一款PC攝像頭和麥克風。在進行視頻聊天之前,要確保攝像頭驅動正確安裝,麥克風已經與音效卡正確連接,並且在音頻屬性中將麥克風選項打開。將攝眼急手快連連看星跡爭霸 激情競技海納百川 候車亭媒體財富之旅誠邀商戶加盟像頭與電腦相連,然後打開Netmeeting。如果你的系統中沒有這款軟體的話,可以到微軟的官方網站下載。當我們第一次啟動Netmeeting之時,它會提示輸入個人信息,這里建議填寫正確的信息以方便他人尋找。接著,Netmeeting會要求選擇伺服器。如果我們與遠在天邊的對方進行視頻電話,那麼也只能選擇微軟的默認伺服器了。不過需要注意的是,部分提供寬頻上網的小區可能有自己的專用伺服器,其速度要快很多。下面這一步就相當關鍵了,它將決定視頻電話的畫面壓縮率,此時可以根據實際情況來決定。值得提醒的是,如果你使用的xDSL與Cable達到2Mbps以上的速率的話,那麼最好選擇「區域網」。當進行完這些設置之後就能看到Netmeeting的界面窗口了。此時點擊右邊的第三個按鈕以打開尋找菜單,如果要利用微軟的網路進行視頻電話的話,你還得申請一個MSN賬號,好在這一步比較簡單。如果你的好友也上線了,那麼我們就可以通過微軟的伺服器邀請對方。另外我們還可以通過一款虛擬攝像頭軟體,播放自己錄好的錄像,是不是很有意思?(龍哥)
㈤ 什麼設備支持遠程雙向視頻通話而且簡單
視頻會議系統可以分為軟體視頻會議和硬體視頻會議兩種系統。軟體視頻會議終端只需要網路,攝像頭以及移動端設備即可,硬體視頻會議設備終端就需要一些硬體的終端設備,如MCU、視頻會議終端、攝像頭、遙控器、全向麥克風、網路等等,當然這些需要根據具體的需求來進行配置。
視頻會議設備
1、MCU,相當於視頻會議的伺服器,各分會場可以通過MCU達到音視頻互通2、視頻會議終端,包含攝像頭、麥克風、主機等等3、音視頻設備:電視、投影或者電視牆、音響等等4、其他設備:錄播伺服器、存儲伺服器、多媒體網關等等;5、外圍設備:功放、音響、調音台、視頻矩陣等等。
㈥ 區域網內的視頻通話,伺服器如何設定
首先除了具備即時通訊軟體所具備的基礎功能點之外,還必須有可擴展性和可統一性!
可擴展是說具備二次開發的功能,這樣才會更加適合自身的企業網路使用狀況
可統一性是說能作為一個統一通訊平台,集合其他的辦公軟體
舉例:
企業即時通訊軟體Active Messenger其特點:
1)系統提供獨立的企業即時通訊伺服器給企業;
可以在區域網內布置,用戶在不上外網的情況下實現區域網內的交流
若有同事需要異地使用,只需要將即時通訊伺服器的IP地址映射到外網就可以
2)所有的用戶都是由系統管理員按照企業組織架構統一建立的,支持AD域集成;
控制了只有同事或有業務聯系的人員才能登錄企業即時通訊系統
3)所有交流都經過即時通訊伺服器中轉;
這樣可以在伺服器備查歷史消息,企業內部交流需要信息的可追溯性
這樣的架構使得系統具有企業郵箱的大部分功能
4)系統提供與OA、ERP軟體集成的開發介面;
當OA、ERP系統有事務發生時,可以通過AM對相關人員進行提醒
5)其它功能
支持大容量文件及目錄的發送,內網速度可以到6M
支持消息的簽收,跟蹤管理(可以查對方是打開過消息)
支持對離線人員的消息發送(支持帶附件帶目錄,支持對幾千人員的群發)
支持多伺服器互連(可以建立分布式的企業構架)
支持屏幕截取,並進行批註後發送 (有的時候,文字不能表達清楚,必須通過圖片加批註文字才能表達。)
支持語音及視頻通訊
支持事務申請
支持會議功能(就某一主題開個會議,結束後可以產生會議記錄)
支持歷史文檔管理
支持客戶端歷史消息備份管理
除了即時通訊功能外,系統可擴展有用的增值方案;
1、AM簡訊擴展模塊;
2、AM傳真擴展模塊;
3、AM郵件集成模塊;
4、AM網路會議系統(支持多方語音及PPT同步播放)
5、AM企業網路硬碟及文檔管理方案;
㈦ 計算機和計算機之間怎樣實現通話和視頻
這個容易:
兩台電腦屬區域網內,從網上下載飛秋(feiq)區域網聊天工具,可以方便的聊天,包括視頻通話,而且傳輸文件速度可達10M/s。推薦使用。
兩台電腦不在區域網,可以用網線連接,然後從網上鄰居找到。這個設置比較麻煩,推薦用交換機,這樣連接後就跟區域網一樣,只用通過飛秋就可以連接了。
飛秋下載地址:http://d.namipan.com/d/
㈧ WebRtc實現網頁和原生P2P視頻聊天,視頻通話
Webrtc已經成為視頻及時互動的標配,日常業務系統中,很多需要web打開就能視頻通話,實現類似微信視頻聊天的功能,但實施是在web上,由於還有業務app集成,同時也要在app原生端實現。
經過多次分析和參考google的官方demo,開發總結了一下:
1,webrtc庫盡量要匹配,如現在主流瀏覽器支持的是webrtc,m79,原生端盡量用這個原生庫打包。
2,web的全平台兼容挺難的,特別是ios上只支持safari內置版本,api和chrome稍有差異。
3,實施上視頻攝像頭對chrome 64位兼容不不是太好,建議自行封裝成chrome內核的客戶端
4,webrtc如只是p2p不需要特別伺服器,自已開發信令服務就可以啦,當要安裝turn server 國內常有打洞不成功需要轉發。
效果:
測試:https://m.ovmeet.com:5001/login.html