anychat 视频会议卡顿问题
1.使用anychat进行视频会议的时候很卡(三四个人或者五六个),而且有的时候网络正常还经常回调用
@Override
public void OnAnyChatLinkCloseMessage(int dwErrorCode) {
Toast.makeText(MultiVideoChatActivty.this,"网络断开连接",1).show();
}
这个方法。
您好,请求的视频数增加的话,所占的带宽也会增加不少,可能会更容易引起掉线 要是这样的话,就不能增加视频人说楼? 这是我多人视频的代码,麻烦帮我看下是不是哪里有什么问题。谢谢
package com.bairuitech.callcenter;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.*;
import android.widget.*;
import com.bairuitech.anychat.*;
import com.bairuitech.util.ConfigEntity;
import com.bairuitech.util.ConfigService;
import com.yunmai.entcc.R;
import com.yunmai.imdemo.controller.webrtc.RingtoneController;
import com.yunmai.imdemo.controller.webrtc.VideoChatController;
import java.io.UnsupportedEncodingException;
import java.util.*;
/**
* Created by kenny on 2016/03/21.
*/
public class MultiVideoChatActivty extends Activity implements AnyChatBaseEvent,AnyChatObjectEvent, AnyChatVideoCallEvent,AnyChatTransDataEvent {
public ConfigEntity configEntity; //参数配置类
public ProgressDialog waitingpd; //进度提示
private ImageView mImgBtnReturn; // 标题返回
private TextView mTitleName; // 标题名字
private ImageButton mImgSwichVideo; //切换摄像头
private SurfaceView mSurfaceMeeting1;
private SurfaceView mSurfaceMeeting2;
private SurfaceView mSurfaceMeeting3;
private SurfaceView mSurfaceMeeting4;
private SurfaceView mSurfaceMeeting5;
private SurfaceView mSurfaceMeeting6;
private TextView mTvMeeting1;
private TextView mTvMeeting2;
private TextView mTvMeeting3;
private TextView mTvMeeting4;
private TextView mTvMeeting5;
private TextView mTvMeeting6;
private Button mBtnSpeak;
private Button mBtnCamera;
private Handler mHandler;
public static final int MSG_CHECKAV = 1;
public static final int MSG_TIMEUPDATE = 2;
public static final int PROGRESSBAR_HEIGHT = 5;
protected static final String tag = "MeetingRoomActivity";
boolean bSelfVideoOpened = false;
boolean bOtherVideoOpened1 = false;
boolean bOtherVideoOpened2 = false;
boolean bOtherVideoOpened3 = false;
boolean bOtherVideoOpened4 = false;
boolean bOtherVideoOpened5 = false;
int videoIndex1 = 0;
int videoIndex2 = 0;
int videoIndex3 = 0;
int videoIndex4 = 0;
int videoIndex5 = 0;
int[] dwTargetUserId = {0,0,0,0,0};
// 功能菜单图标
private int[] arrFuncIcons = { R.drawable.stronghold_01, R.drawable.stronghold_02, R.drawable.stronghold_03, R.drawable.stronghold_04};
private AnyChatCoreSDK anychat; //sdk对象
private List<Integer> mobject =new ArrayList<Integer>(); //装载营业厅ID
private ArrayList<HashMap<String, Object>> mArrItem; //装载适配器数据
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//自定义标题栏
RingtoneController.stopRingTone();
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.activity_meeting_room);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.meet_room_title_bar);
//视频参数配置
ApplyVideoConfig();
//初始化sdk
InitSDK();
//初始化布局
InitLayout();
//实时音视频
updateAV();
}
private void InitSDK() {
//初始化sdk
if (anychat == null) {
anychat = AnyChatCoreSDK.getInstance(this);
}
anychat.mSensorHelper.InitSensor(this);
AnyChatCoreSDK.mCameraHelper.SetContext(this);
anychat.SetBaseEvent(this);//基本登陆事件接口
anychat.SetObjectEvent(this);//排队事件接口;
anychat.SetTransDataEvent(this);
}
boolean isOpenCamera = false;
private void InitLayout() {
waitingpd = new ProgressDialog(MultiVideoChatActivty.this);
mSurfaceMeeting1 = (SurfaceView) this.findViewById(R.id.surface_meeting1);
mSurfaceMeeting2 = (SurfaceView) this.findViewById(R.id.surface_meeting2);
mSurfaceMeeting3 = (SurfaceView) this.findViewById(R.id.surface_meeting3);
mSurfaceMeeting4 = (SurfaceView) this.findViewById(R.id.surface_meeting4);
mSurfaceMeeting5 = (SurfaceView) this.findViewById(R.id.surface_meeting5);
mSurfaceMeeting6 = (SurfaceView) this.findViewById(R.id.surface_meeting6);
mTvMeeting1 = (TextView) this.findViewById(R.id.tv_meeting1);
mTvMeeting2 = (TextView) this.findViewById(R.id.tv_meeting2);
mTvMeeting3 = (TextView) this.findViewById(R.id.tv_meeting3);
mTvMeeting4 = (TextView) this.findViewById(R.id.tv_meeting4);
mTvMeeting5 = (TextView) this.findViewById(R.id.tv_meeting5);
mTvMeeting6 = (TextView) this.findViewById(R.id.tv_meeting6);
mBtnSpeak = (Button) this.findViewById(R.id.btn_speak);
// mBtnSpeak.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// if(isSpeaking == false) {
// isSpeaking = true;
// String mRequestMic = getIntent().getIntExtra("userid", -1)+"|1";
// AnyChatCoreSDK.getInstance(MultiVideoChatActivty.this).TransBuffer(0,mRequestMic.getBytes(),mRequestMic.length());
// Log.w(tag, "mRequestMic:----------->"+mRequestMic);
// }else{
// isSpeaking = false;
// AnyChatCoreSDK.getInstance(MultiVideoChatActivty.this).UserSpeakControl(-1, 0);
//
// String mReleaseMic = getIntent().getIntExtra("userid", -1)+"|0";
// AnyChatCoreSDK.getInstance(MultiVideoChatActivty.this).TransBuffer(0,mReleaseMic.getBytes(),mReleaseMic.length());
// Log.w(tag, "mRequestMic:----------->"+mReleaseMic);
// }
// }
// });
mBtnCamera = (Button) this.findViewById(R.id.btn_camera);
// mBtnCamera.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// if(isOpenCamera == false) {
// mSurfaceMeeting1.setVisibility(View.INVISIBLE);
// anychat.UserCameraControl(-1, 0);
// anychat.UserSpeakControl(-1, 0);
//
// bSelfVideoOpened = true;
// mBtnCamera.setText("打开摄像头");
// isOpenCamera = true;
// }else {
// mSurfaceMeeting1.setVisibility(View.VISIBLE);
// anychat.UserCameraControl(-1, 1);
// anychat.UserSpeakControl(-1, 1);
//
// bSelfVideoOpened = false;
// mBtnCamera.setText("关闭摄像头");
//
// isOpenCamera = false;
// }
// }
// });
mTitleName = (TextView) this.findViewById(R.id.titleName);
mTitleName.setText(getIntent().getStringExtra("groupname"));
mImgBtnReturn = (ImageView) this.findViewById(R.id.returnImgBtn);
mImgBtnReturn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
VideoChatController.instance.endVideoChat();
finishActivitys();
}
});
mImgSwichVideo = (ImageButton) this.findViewById(R.id.ImgSwichVideo);
// mImgSwichVideo.setVisibility(View.VISIBLE);
// mImgSwichVideo.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// AnyChatCoreSDK.mCameraHelper.SwitchCamera();
// }
// });
mTvMeeting1.setText(AnyChatCoreSDK.getInstance(this).GetUserName(getIntent().getIntExtra("userid", -1)));
// 视频如果是采用java采集
if (AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_CAPDRIVER) == AnyChatDefine.VIDEOCAP_DRIVER_JAVA) {
mSurfaceMeeting1.getHolder().addCallback(AnyChatCoreSDK.mCameraHelper);
Log.i("ANYCHAT", "VIDEOCAPTRUE---" + "JAVA");
}
if (AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_CAPDRIVER) == AnyChatDefine.VIDEOCAP_DRIVER_JAVA) {
if (AnyChatCoreSDK.mCameraHelper.GetCameraNumber() > 1) {
AnyChatCoreSDK.mCameraHelper.SelectVideoCapture(AnyChatCoreSDK.mCameraHelper.CAMERA_FACING_FRONT);
}
} else {
String[] strVideoCaptures = anychat.EnumVideoCapture();
if (strVideoCaptures != null && strVideoCaptures.length > 1) {
for (int i = 0; i < strVideoCaptures.length; i++) {
String strDevices = strVideoCaptures;
if (strDevices.indexOf("Front") >= 0) {
anychat.SelectVideoCapture(strDevices);
break;
}
}
}
}
showIndeterminate("加载视频人员...");
String roomId = VideoChatController.instance.getRoomId();
if(roomId != null || !"".equals(roomId)){
AnyChatCoreSDK.getInstance(this).EnterRoom(Integer.valueOf(roomId), "");
}
}
// 根据配置文件配置视频参数
private void ApplyVideoConfig() {
ConfigEntity configEntity = ConfigService.LoadConfig(this);
// 自定义视频参数配置
if (configEntity.configMode == 1) {
// 设置本地视频编码的码率(如果码率为0,则表示使用质量优先模式)
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_BITRATECTRL,configEntity.videoBitrate);
if (configEntity.videoBitrate == 0) {
// 设置本地视频编码的质量
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_QUALITYCTRL,configEntity.videoQuality);
}
// 设置本地视频编码的帧率
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_FPSCTRL,configEntity.videoFps);
// 设置本地视频编码的关键帧间隔
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_GOPCTRL,configEntity.videoFps * 4);
// 设置本地视频采集分辨率
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_WIDTHCTRL,configEntity.resolution_width);
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_HEIGHTCTRL,configEntity.resolution_height);
// 设置视频编码预设参数(值越大,编码质量越高,占用CPU资源也会越高)
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_PRESETCTRL,configEntity.videoPreset);
}
// 让视频参数生效
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_APPLYPARAM,configEntity.configMode);
// P2P设置
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_NETWORK_P2PPOLITIC,configEntity.enableP2P);
// 本地视频Overlay模式设置
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_OVERLAY,configEntity.videoOverlay);
// 回音消除设置
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_AUDIO_ECHOCTRL,configEntity.enableAEC);
// 平台硬件编码设置
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_CORESDK_USEHWCODEC,configEntity.useHWCodec);
// 视频旋转模式设置
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_ROTATECTRL,configEntity.videorotatemode);
// 本地视频采集偏色修正设置
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_FIXCOLORDEVIA,configEntity.fixcolordeviation);
// 视频GPU渲染设置
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_GPUDIRECTRENDER,configEntity.videoShowGPURender);
// 本地视频自动旋转设置
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_AUTOROTATION,configEntity.videoAutoRotation);
}
private void CheckVideoStatus() {
if (!bOtherVideoOpened1) {
if (dwTargetUserId != 0) {
if (anychat.GetCameraState(dwTargetUserId) == 2 && anychat.GetUserVideoWidth(dwTargetUserId) != 0) {
SurfaceHolder holder = mSurfaceMeeting2.getHolder();
if (AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) != AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
holder.setFormat(PixelFormat.RGB_565);
holder.setFixedSize(anychat.GetUserVideoWidth(-1), anychat.GetUserVideoHeight(-1));
}
Surface s = holder.getSurface();
if (AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) == AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
anychat.mVideoHelper.SetVideoUser(videoIndex1, dwTargetUserId);
} else
anychat.SetVideoPos(dwTargetUserId, s, 0, 0, 0, 0);
bOtherVideoOpened1 = true;
}
}
}
if (!bOtherVideoOpened2) {
if (dwTargetUserId != 0) {
if (anychat.GetCameraState(dwTargetUserId) == 2 && anychat.GetUserVideoWidth(dwTargetUserId) != 0) {
SurfaceHolder holder = mSurfaceMeeting3.getHolder();
if (AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) != AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
holder.setFormat(PixelFormat.RGB_565);
holder.setFixedSize(anychat.GetUserVideoWidth(-1), anychat.GetUserVideoHeight(-1));
}
Surface s = holder.getSurface();
if (AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) == AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
anychat.mVideoHelper.SetVideoUser(videoIndex2, dwTargetUserId);
} else
anychat.SetVideoPos(dwTargetUserId, s, 0, 0, 0, 0);
bOtherVideoOpened2 = true;
}
}
}
if (!bOtherVideoOpened3) {
if (dwTargetUserId != 0) {
if (anychat.GetCameraState(dwTargetUserId) == 2 && anychat.GetUserVideoWidth(dwTargetUserId) != 0) {
SurfaceHolder holder = mSurfaceMeeting4.getHolder();
if (AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) != AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
holder.setFormat(PixelFormat.RGB_565);
holder.setFixedSize(anychat.GetUserVideoWidth(-1), anychat.GetUserVideoHeight(-1));
}
Surface s = holder.getSurface();
if (AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) == AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
anychat.mVideoHelper.SetVideoUser(videoIndex3, dwTargetUserId);
} else
anychat.SetVideoPos(dwTargetUserId, s, 0, 0, 0, 0);
bOtherVideoOpened3 = true;
}
}
}
if (!bOtherVideoOpened4) {
if (dwTargetUserId != 0) {
if (anychat.GetCameraState(dwTargetUserId) == 2 && anychat.GetUserVideoWidth(dwTargetUserId) != 0) {
SurfaceHolder holder = mSurfaceMeeting5.getHolder();
if (AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) != AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
holder.setFormat(PixelFormat.RGB_565);
holder.setFixedSize(anychat.GetUserVideoWidth(-1), anychat.GetUserVideoHeight(-1));
}
Surface s = holder.getSurface();
if (AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) == AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
anychat.mVideoHelper.SetVideoUser(videoIndex4, dwTargetUserId);
} else
anychat.SetVideoPos(dwTargetUserId, s, 0, 0, 0, 0);
bOtherVideoOpened4 = true;
}
}
}
if (!bOtherVideoOpened5) {
if (dwTargetUserId != 0) {
if (anychat.GetCameraState(dwTargetUserId) == 2 && anychat.GetUserVideoWidth(dwTargetUserId) != 0) {
SurfaceHolder holder = mSurfaceMeeting5.getHolder();
if (AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) != AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
holder.setFormat(PixelFormat.RGB_565);
holder.setFixedSize(anychat.GetUserVideoWidth(-1), anychat.GetUserVideoHeight(-1));
}
Surface s = holder.getSurface();
if (AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) == AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
anychat.mVideoHelper.SetVideoUser(videoIndex5, dwTargetUserId);
} else
anychat.SetVideoPos(dwTargetUserId, s, 0, 0, 0, 0);
bOtherVideoOpened5 = true;
}
}
}
if (!bSelfVideoOpened) {
if (anychat.GetCameraState(-1) == 2 && anychat.GetUserVideoWidth(-1) != 0) {
SurfaceHolder holder = mSurfaceMeeting1.getHolder();
if (AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) != AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
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;
}
}
}
private void updateAV() {
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case MSG_CHECKAV:
//实时视频刷新
CheckVideoStatus();
//实时音频数据
// updateVolume();
break;
case MSG_TIMEUPDATE:
// mTxtTime.setText(BaseMethod
// .getTimeShowString(videocallSeconds++));
break;
}
}
};
initTimerCheckAv();
initTimerShowTime();
}
private Timer mTimerCheckAv;
private TimerTask mTimerTask;
private void initTimerCheckAv() {
if (mTimerCheckAv == null) {
mTimerCheckAv = new Timer();
}
mTimerTask = new TimerTask() {
@Override
public void run() {
mHandler.sendEmptyMessage(MSG_CHECKAV);
}
};
mTimerCheckAv.schedule(mTimerTask, 1000, 100);
}
private Timer mTimerShowVideoTime;
private void initTimerShowTime() {
if (mTimerShowVideoTime == null) {
mTimerShowVideoTime = new Timer();
}
mTimerTask = new TimerTask() {
@Override
public void run() {
mHandler.sendEmptyMessage(MSG_TIMEUPDATE);
}
};
mTimerShowVideoTime.schedule(mTimerTask, 100, 1000);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
VideoChatController.instance.endVideoChat();
finishActivitys();
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onRestart() {
if (anychat == null){
anychat = new AnyChatCoreSDK();
}
anychat.SetBaseEvent(this);
anychat.SetVideoCallEvent(this);
anychat.SetObjectEvent(this);
anychat.SetTransDataEvent(this);
super.onRestart();
// if (AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) == AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
// videoIndex1 = anychat.mVideoHelper.bindVideo(mSurfaceMeeting2.getHolder());
// anychat.mVideoHelper.SetVideoUser(videoIndex1, dwTargetUserId);
// }
}
@Override
public void OnAnyChatConnectMessage(boolean bSuccess) {
}
@Override
public void OnAnyChatLoginMessage(int dwUserId, int dwErrorCode) {
}
@Override
public void OnAnyChatEnterRoomMessage(int dwRoomId, int dwErrorCode) {
waitingpd.dismiss();
if (dwErrorCode == 0) {
mSurfaceMeeting1.setVisibility(View.VISIBLE);
anychat.UserCameraControl(-1, 1);
anychat.UserSpeakControl(-1, 1);
bSelfVideoOpened = false;
}
int[] onlineUserCount = AnyChatCoreSDK.getInstance(this).GetOnlineUser();
if (onlineUserCount.length == 0) {
} else {
for (int i=0;i<onlineUserCount.length;i++) {
dwTargetUserId = onlineUserCount;
anychat.UserCameraControl(onlineUserCount, 1);
anychat.UserSpeakControl(onlineUserCount, 1);
}
}
InitVideo();
}
private void InitVideo() {
// 视频显示如果是采用java采集,SurfacecallBack
if (AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) == AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
if (dwTargetUserId != 0) {
mSurfaceMeeting2.setVisibility(View.VISIBLE);
videoIndex1 = anychat.mVideoHelper.bindVideo(mSurfaceMeeting2.getHolder());
anychat.mVideoHelper.SetVideoUser(videoIndex1, dwTargetUserId);
mTvMeeting2.setText(AnyChatCoreSDK.getInstance(this).GetUserName(dwTargetUserId));
}
if (dwTargetUserId != 0) {
mSurfaceMeeting3.setVisibility(View.VISIBLE);
videoIndex2 = anychat.mVideoHelper.bindVideo(mSurfaceMeeting3.getHolder());
anychat.mVideoHelper.SetVideoUser(videoIndex2, dwTargetUserId);
mTvMeeting3.setText(AnyChatCoreSDK.getInstance(this).GetUserName(dwTargetUserId));
}
if (dwTargetUserId != 0) {
mSurfaceMeeting4.setVisibility(View.VISIBLE);
videoIndex3 = anychat.mVideoHelper.bindVideo(mSurfaceMeeting4.getHolder());
anychat.mVideoHelper.SetVideoUser(videoIndex3, dwTargetUserId);
mTvMeeting4.setText(AnyChatCoreSDK.getInstance(this).GetUserName(dwTargetUserId));
}
if (dwTargetUserId != 0) {
mSurfaceMeeting5.setVisibility(View.VISIBLE);
videoIndex4 = anychat.mVideoHelper.bindVideo(mSurfaceMeeting5.getHolder());
anychat.mVideoHelper.SetVideoUser(videoIndex4, dwTargetUserId);
mTvMeeting5.setText(AnyChatCoreSDK.getInstance(this).GetUserName(dwTargetUserId));
}
if (dwTargetUserId != 0) {
mSurfaceMeeting6.setVisibility(View.VISIBLE);
videoIndex5 = anychat.mVideoHelper.bindVideo(mSurfaceMeeting6.getHolder());
anychat.mVideoHelper.SetVideoUser(videoIndex5, dwTargetUserId);
mTvMeeting6.setText(AnyChatCoreSDK.getInstance(this).GetUserName(dwTargetUserId));
}
Log.i("ANYCHAT", "VIDEOSHOW---" + "JAVA");
}
}
@Override
public void OnAnyChatOnlineUserMessage(int dwUserNum, int dwRoomId) {
}
@Override
public void OnAnyChatUserAtRoomMessage(int dwUserId, boolean bEnter) {
if (bEnter) {
anychat.UserCameraControl(dwUserId, 1);
anychat.UserSpeakControl(dwUserId, 1);
if (dwTargetUserId == 0) {
dwTargetUserId = dwUserId;
mTvMeeting2.setText(AnyChatCoreSDK.getInstance(this).GetUserName(dwUserId));
} else if (dwTargetUserId == 0) {
dwTargetUserId = dwUserId;
mTvMeeting3.setText(AnyChatCoreSDK.getInstance(this).GetUserName(dwUserId));
} else if (dwTargetUserId == 0) {
dwTargetUserId = dwUserId;
mTvMeeting4.setText(AnyChatCoreSDK.getInstance(this).GetUserName(dwUserId));
}else if(dwTargetUserId == 0){
dwTargetUserId = dwUserId;
mTvMeeting5.setText(AnyChatCoreSDK.getInstance(this).GetUserName(dwUserId));
}else if(dwTargetUserId == 0){
dwTargetUserId = dwUserId;
mTvMeeting6.setText(AnyChatCoreSDK.getInstance(this).GetUserName(dwUserId));
}
InitVideo();
} else {
anychat.UserCameraControl(dwUserId, 0);
anychat.UserSpeakControl(dwUserId, 0);
int k = -1;
for (int i=0;i<5;i++) {
if (dwTargetUserId == dwUserId) {
k = i;
}
}
dwTargetUserId = 0;
if (k==0) {
mSurfaceMeeting2.setVisibility(View.INVISIBLE);
mTvMeeting2.setText("远程视频");
} else if (k==1) {
mSurfaceMeeting3.setVisibility(View.INVISIBLE);
mTvMeeting3.setText("远程视频");
} else if (k==2) {
mSurfaceMeeting4.setVisibility(View.INVISIBLE);
mTvMeeting4.setText("远程视频");
}else if(k== 3){
mSurfaceMeeting5.setVisibility(View.INVISIBLE);
mTvMeeting5.setText("远程视频");
}else if(k == 4){
mSurfaceMeeting6.setVisibility(View.INVISIBLE);
mTvMeeting6.setText("远程视频");
}
}
}
// 网络断开
@Override
public void OnAnyChatLinkCloseMessage(int dwErrorCode) {
Toast.makeText(MultiVideoChatActivty.this,"网络断开连接",1).show();
// anychat.Logout();
// Intent intent = new Intent(MultiVideoChatActivty.this,MultiVideoChatActivty.class);
// intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// startActivity(intent);
}
@Override
public void OnAnyChatObjectEvent(int dwObjectType, int dwObjectId,
int dwEventType, int dwParam1, int dwParam2, int dwParam3,
int dwParam4, String strParam) {
}
public void showIndeterminate(String msg){
waitingpd.setMessage(msg);
waitingpd.setCancelable(true);
waitingpd.setProgress(ProgressDialog.STYLE_HORIZONTAL);
waitingpd.setIndeterminate(true);
waitingpd.show();
}
@Override
public void OnAnyChatVideoCallEvent(int dwEventType, int dwUserId, int dwErrorCode, int dwFlags, int dwParam, String userStr) {
}
@Override
public void OnAnyChatTransFile(int dwUserid, String FileName, String TempFilePath, int dwFileLength, int wParam, int lParam, int dwTaskId) {
}
boolean isSpeaking = false;
@Override
public void OnAnyChatTransBuffer(int dwUserid, byte[] lpBuf, int dwLen) {
try {
//接受数据(windows下默认GBK)
String srtReceMsg = new String(lpBuf,"GBK");
if ("0|0".equals(srtReceMsg)) {
mBtnSpeak.setText("开始发言");
mBtnSpeak.setEnabled(true);
} else {
int buf = srtReceMsg.lastIndexOf("|");
String aa = srtReceMsg.substring(0, buf);
String bb = srtReceMsg.substring(buf+1, buf+2);
int userId = Integer.parseInt(aa);
int micStatus = Integer.parseInt(bb);
int selfUserId = getIntent().getIntExtra("userid", -1);
if (micStatus == 1) {
if (userId == selfUserId) {
AnyChatCoreSDK.getInstance(this).UserSpeakControl(-1, 1);
mBtnSpeak.setText("结束发言");
mBtnSpeak.setEnabled(true);
} else {
isSpeaking = false;
mBtnSpeak.setText("禁止发言");
mBtnSpeak.setEnabled(false);
AnyChatCoreSDK.getInstance(this).UserSpeakControl(userId, 1);
if (dwTargetUserId == userId) {
mTvMeeting2.setText(AnyChatCoreSDK.getInstance(this).GetUserName(userId)+"正在发言中");
} else if (dwTargetUserId == userId) {
mTvMeeting3.setText(AnyChatCoreSDK.getInstance(this).GetUserName(userId)+"正在发言中");
} else if (dwTargetUserId == userId) {
mTvMeeting4.setText(AnyChatCoreSDK.getInstance(this).GetUserName(userId)+"正在发言中");
} else if(dwTargetUserId == userId){
mTvMeeting5.setText(AnyChatCoreSDK.getInstance(this).GetUserName(userId)+"正在发言中");
}else if(dwTargetUserId == userId){
mTvMeeting6.setText(AnyChatCoreSDK.getInstance(this).GetUserName(userId)+"正在发言中");
}
}
} else {
if(userId != selfUserId && userId != 0){
AnyChatCoreSDK.getInstance(this).UserSpeakControl(userId, 1);
if (dwTargetUserId == userId) {
mTvMeeting2.setText(AnyChatCoreSDK.getInstance(this).GetUserName(userId));
} else if (dwTargetUserId == userId) {
mTvMeeting3.setText(AnyChatCoreSDK.getInstance(this).GetUserName(userId));
} else if (dwTargetUserId == userId) {
mTvMeeting4.setText(AnyChatCoreSDK.getInstance(this).GetUserName(userId));
} else if (dwTargetUserId == userId){
mTvMeeting5.setText(AnyChatCoreSDK.getInstance(this).GetUserName(userId));
} else if (dwTargetUserId == userId){
mTvMeeting6.setText(AnyChatCoreSDK.getInstance(this).GetUserName(userId));
}
}
mBtnSpeak.setText("开始发言");
mBtnSpeak.setEnabled(true);
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
@Override
public void OnAnyChatTransBufferEx(int dwUserid, byte[] lpBuf, int dwLen, int wparam, int lparam, int taskid) {
}
@Override
public void OnAnyChatSDKFilterData(byte[] lpBuf, int dwLen) {
}
@Override
protected void onDestroy() {
if(anychat != null){
anychat.LeaveRoom(-1);
anychat.Logout();
anychat.Release();
}
VideoChatController.instance.clearData();
super.onDestroy();
}
private void finishActivitys() {
if(MultiVideoSelectActivity.multiVideoSelectctivity != null){
MultiVideoSelectActivity.multiVideoSelectctivity.finish();
}
if(MultiVideoChatConnectingActivity.multiVideoChatConnectingActivity != null){
MultiVideoChatConnectingActivity.multiVideoChatConnectingActivity.finish();
}
this.finish();
}
} 你好 发一份日志上来分析一下 AnyChat生成的日志,在插件的安装目录(默认安装目录:C:\Program Files (x86)\BaiRuiTech\AnyChatWeb),文件名:BRAnyChatCore.log,如果找不到该日志,请卸载插件后重新安装到其他非系统盘看看 运行的是android平台 log 如下:
---------------------------AnyChat Platform Core SDK Client Log---------------------------
Load libanychatcore.so success!(V6.0 Build Time:Feb 15 2016 13:16:39)
Android OS SDK Version:17, Support ARMv7:2, Support Neon:4
Load libmediautil_v7.so success!(V6.0 Build Time:Feb 15 2016 13:18:25)
Load libmediashow.so success!(V6.0 Build Time:Feb 15 2016 13:18:10)
Load libmediacore.so success!(V6.0 Build Time:Feb 15 2016 13:18:13)
cpu:SMDK4x12(b0f2707d4d004c43) 1592.52 mips
SM-C101(samsung) exynos4 smdk4x12 4.2.2
Apply video parameter:320x240, bitrate:150kbps, quality:0, gop:40, fps:10, preset:3, codec:0
Invoke SetSDKOption(BRAC_SO_NETWORK_P2PPOLITIC=1)
Invoke SetSDKOption(BRAC_SO_AUDIO_ECHOCTRL,1)
Invoke SetSDKOption(BRAC_SO_CORESDK_USEHWCODEC=0)
Invoke Connect(121.40.44.164,8906)=0
Invoke Login(username:卢允辉)=0
Create anychatdnsserver connect:121.40.44.164(8906)
On pre-connection result, errorcode:0, anychatcoreserver, 121.40.44.164(8906, tcp:1)
CheckClientSocketLink Connect(ip=121.40.44.164,port=8906)
Server version: V6.1(Build Time:2016-08-02 13:52:22, Server OS:Windows)
Message OnConnect(bSuccess:1, errorcode=0)
Message OnLoginSystem(userid=-4138,errorcode=0,username=卢允辉), msg deliver worked(0)
Server running time: 49 days, 18 hours, 31 minutes, license mode:0
Connection to streaming media server successfully!(udp delay:15ms)
Apply video parameter:320x240, bitrate:150kbps, quality:0, gop:40, fps:10, preset:3, codec:0
Invoke SetSDKOption(BRAC_SO_NETWORK_P2PPOLITIC=1)
Invoke SetSDKOption(BRAC_SO_AUDIO_ECHOCTRL,1)
Invoke SetSDKOption(BRAC_SO_CORESDK_USEHWCODEC=0)
Invoke EnterRoom(roomid=316293)
Message OnEnterRoom(roomid=316293,errorcode=0,siteindex=1)
Audio Playback Device Init(0, 1, 16000, 16), Default Playback Driver
Message OnReceiveOnlineUser(count=2,roomid=316293)
APPLOG Camera Preview size: 704 x 528
APPLOG Camera Preview size: 960 x 540
APPLOG Camera Preview size: 768 x 512
APPLOG Camera Preview size: 704 x 576
APPLOG Camera Preview size: 640 x 524
APPLOG Camera Preview size: 640 x 480
APPLOG Camera Preview size: 512 x 512
APPLOG Camera Preview size: 352 x 288
APPLOG Camera Preview size: 320 x 320
APPLOG Camera Preview size: 320 x 240
APPLOG Camera FrameRate: 15000 , 30000
On Remote UserCameraControl(dwUserId:-4137, bOpen:1)
Invoke SetSDKOption(BRAC_SO_CORESDK_EXTVIDEOINPUT=1)
Invoke SetInputVideoFormat(pixfmt:8, 320x240, 30fps, flags:0)
video init finish:320x240, NV21, fps:30, codecid:1
Invoke UserCameraControl(userid=-1, bOpen=1, stream=0)
Invoke UserSpeakControl(userid=-1,bOpen=1)
Invoke UserCameraControl(userid=-4137, bOpen=1, stream=0)
Invoke UserSpeakControl(userid=-4137,bOpen=1)
Invoke SetSDKOption(BRAC_SO_CORESDK_EXTVIDEOINPUT=1)
Invoke SetInputVideoFormat(pixfmt:8, 320x240, 30fps, flags:0)
On Remote UserSpeakControl(dwUserId:-4137, bOpen:1)
video init finish:320x240, NV21, fps:30, codecid:1
Invoke SetInputAudioFormat(1, 16000, 16, flags:0)
Audio Init, error:0, device:-1, 1, 16000, 16, capmode:0
Audio codec init, handle:3, 11, 1, 16000, 16, 15850
Audio FX Status: VAD:1, NS:1, AGC:1, AEC:1
video codec init:codec:1, 10fps, 320x240, bitrate:150kbps, quality:0, preset:3, gop:40, handle:4
userid(-4137) video decode, codec:1, 320x240, delay:11ms
Message OnUserEnterRoom(userid=-4139,nickname=ZAndroid3,siteindex=2)
Invoke UserCameraControl(userid=-4139, bOpen=1, stream=0)
Invoke UserSpeakControl(userid=-4139,bOpen=1)
On Remote UserCameraControl(dwUserId:-4139, bOpen:1)
On Remote UserSpeakControl(dwUserId:-4139, bOpen:1)
userid(-4139) audio decode, codec:11, 1 channel, 16000Hz
userid(-4139) video decode, codec:1, 320x240, delay:13ms
socket error, disconnected by peer!, bTcp(1) - userid(-1)
OnSocketClose, index(2)-errorcode(0-11), flags:0x10041, bTcp(1),userid(-1), list:0
Invoke LeaveRoom(roomid=-1) Elapse:186 ms
Message OnLinkClose(reason=0, dwErrorCode:0)
CheckClientSocketLink Connect(ip=121.40.44.164,port=8906)
Server version: V6.1(Build Time:2016-08-02 13:52:22, Server OS:Windows)
Message OnConnect(bSuccess:1, errorcode=0)
Message OnLoginSystem(userid=-4140,errorcode=0,username=卢允辉), msg deliver worked(0)
Load libmediautil_v7.so success!(V6.0 Build Time:Feb 15 2016 13:18:25)
Load libmediashow.so success!(V6.0 Build Time:Feb 15 2016 13:18:10)
Load libmediacore.so success!(V6.0 Build Time:Feb 15 2016 13:18:13)
Server running time: 49 days, 18 hours, 31 minutes, license mode:0
Connection to streaming media server successfully!(udp delay:65ms)
Message OnEnterRoom(roomid=316293,errorcode=0,siteindex=1)
Audio Playback Device Init(0, 1, 16000, 16), Default Playback Driver
Message OnReceiveOnlineUser(count=3,roomid=316293)
Invoke UserCameraControl(userid=-1, bOpen=1, stream=0)
Invoke UserSpeakControl(userid=-1,bOpen=1)
Invoke UserCameraControl(userid=-4139, bOpen=1, stream=0)
Invoke UserSpeakControl(userid=-4139,bOpen=1)
Invoke UserCameraControl(userid=-4137, bOpen=1, stream=0)
Invoke UserSpeakControl(userid=-4137,bOpen=1)
On Remote UserCameraControl(dwUserId:-4139, bOpen:1)
Invoke SetSDKOption(BRAC_SO_CORESDK_EXTVIDEOINPUT=1)
Invoke SetInputVideoFormat(pixfmt:8, 320x240, 30fps, flags:0)
video init finish:320x240, NV21, fps:30, codecid:1
On Remote UserSpeakControl(dwUserId:-4139, bOpen:1)
Invoke SetInputAudioFormat(1, 16000, 16, flags:0)
Audio Init, error:0, device:-1, 1, 16000, 16, capmode:0
Audio codec init, handle:2, 11, 1, 16000, 16, 15850
Audio FX Status: VAD:1, NS:1, AGC:1, AEC:1
userid(-4139) audio decode, codec:11, 1 channel, 16000Hz
On Remote UserCameraControl(dwUserId:-4137, bOpen:1)
On Remote UserSpeakControl(dwUserId:-4137, bOpen:1)
video codec init:codec:1, 10fps, 320x240, bitrate:150kbps, quality:0, preset:3, gop:40, handle:4
userid(-4139) video decode, codec:1, 320x240, delay:156ms
Invoke LeaveRoom(roomid=-1) Elapse:1106 ms
Invoke LogoutServer(userid=-4140) Elapse:1219 ms
Invoke BRAC_Release Elapse:194 ms
Luyh 发表于 2016-12-1 10:02
log 如下:
---------------------------AnyChat Platform Core SDK Client ...
可以看到 本地网络断开 建议检测一下网络 ;从日志可以看出你的客户端和服务器都不是最新版本,请更新到最新版本 Luyh 发表于 2016-12-1 10:02
log 如下:
---------------------------AnyChat Platform Core SDK Client ...
日志上看出quality:0 这个参数不建议设置为0建议设置为3 你说的是ConfieEntity 里面的 public int resolution_width = 0; 这个字段吗
页:
[1]
2