远程服务器如何进行视频通话
㈠ 两台电脑怎么视频聊天(没连因特网)
可以设置局域网,调节服务器名称,通过网上邻居里设置电脑名称,就可以!
㈡ 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