AnyChat技术支持论坛

标题: 视频会议问题 [打印本页]

作者: 王小峰    时间: 2013-12-18 11:45
标题: 视频会议问题
你好,我在HallActivity的界面 设置了一个SurfaceView 1px,用来采集用户自己的视频,然后B用户想看这个用户的视频的时候,点击item跳转到VideoActivity界面,同时要保证B用户的视频采集不能停止,要第三个用户可以看到。所以我就B用户从HallActivity跳转的时候我就用AnyChatCoreSDK.mCameraHelper.surfaceDestroyed(myView.getHolder());然后到VideoActivity界面,我videoActivity界面也采集视频,这样就可以保证第三个用户可以看到! 这样做了以后,A B两个用户,A在hallActivity界面 ,B点击item后在videoActvity界面可以看到A在HallActivity界面采集过来的时候,当A点击代表b的item后,也进入VideoActivity界面,这时,A B双方都可以正常的显示双方的视频, 但是当A退出VideoActivity界面以后,B就不能显示A在hallActivity界面采集的视频,这时B退出VideoActivity界面,重新点击代表a的item进入VideoActivity界面以后还是不能看到A在HallActivity界面采集过来的视频  ! 我HallActivity的采集视频在onResume()方法中执行!
作者: 廖斌    时间: 2013-12-18 11:57
B双方都可以正常的显示双方的视频, 但是当A退出VideoActivity界面以后,B就不能显示A在hallActivity界面采集的视频


当A退出VideoActivitiy,回到HallActivity界面时,就不能进行采集了。因为A只能在HallActivity的oncreate中采集
作者: 王小峰    时间: 2013-12-18 12:00
那我这个需求没有办法弄了?
作者: 廖斌    时间: 2013-12-18 12:04
王小峰 发表于 2013-12-18 12:00
那我这个需求没有办法弄了?

当A退出VideoActivitiy,回到HallActivity界面时,有没有释放A的摄像头?
作者: 王小峰    时间: 2013-12-18 12:04
恩,释放掉了!
作者: admin    时间: 2013-12-18 12:05
重新创建一下HallActivity,就会产生OnCreate事件?
作者: 王小峰    时间: 2013-12-18 12:09
在HallActivity中点击item开启VideoActivity时
  1. /**
  2.          * 释放
  3.          */
  4.         private void release() {
  5.                 AnyChatCoreSDK.mCameraHelper.surfaceDestroyed(myView.getHolder());
  6.                 anychat.UserCameraControl(-1, 0);
  7.                 anychat.mSensorHelper.DestroySensor();
  8.         }
复制代码
在VideoActivity退出到HallActivity时
  1. AnyChatCoreSDK.mCameraHelper.surfaceDestroyed(myView.getHolder());
  2.                         myView=null;
  3.                         closevideo();
  4.                         finish();
复制代码
  1. /**
  2.          * 关闭视频
  3.          */
  4.         private void closevideo() {
  5.                 anychat.UserCameraControl(userID, 0);
  6.                 anychat.UserCameraControl(-1, 0);

  7.         }
复制代码

作者: 王小峰    时间: 2013-12-18 14:50
HallActivity大厅界面,相当于home界面,我总不能一个创建吧!
作者: 王小峰    时间: 2013-12-18 14:52
我想问下,为什么采集视频的时候只能在oncreate中!在onresume()中执行不可以吗
作者: admin    时间: 2013-12-18 14:54
在HallActivity中点击item开启VideoActivity时,不应该Destroy视频部分,否则再次回来时,没有OnCreate事件,视频不能再次被初始化。
作者: 王小峰    时间: 2013-12-18 15:03
admin 发表于 2013-12-18 14:54
在HallActivity中点击item开启VideoActivity时,不应该Destroy视频部分,否则再次回来时,没有OnCreate事件 ...

在HallActivity中点击item开启VideoActivity时
  1. /**
  2.          * 释放
  3.          */
  4.         private void release() {
  5.                 //AnyChatCoreSDK.mCameraHelper.surfaceDestroyed(myView.getHolder());
  6.                 anychat.UserCameraControl(-1, 0);
  7.                 //anychat.mSensorHelper.DestroySensor();
  8.         }
复制代码
这里注释掉以后还是不行。
作者: 廖斌    时间: 2013-12-18 15:33
王小峰 发表于 2013-12-18 15:03
在HallActivity中点击item开启VideoActivity时这里注释掉以后还是不行。

hallactivity此时已经在onstop状态了,不能继续采集,videoactivy就不能采集了。只能先释放摄像头,然后videoactivity才能继续采集。
作者: 王小峰    时间: 2013-12-18 15:57
anychat.UserCameraControl(-1, 0);这难道不是释放摄像头
作者: 王小峰    时间: 2013-12-18 16:02
廖斌 发表于 2013-12-18 15:33
hallactivity此时已经在onstop状态了,不能继续采集,videoactivy就不能采集了。只能先释放摄像头,然后v ...


anychat.UserCameraControl(-1, 0);这难道不是释放摄像头?
而且我的从HallActivity到videoActivity采集视频是好的,只是从videoActivity退出到HallActivity界面以后就采集不到视频了,是这么个意思!
作者: 廖斌    时间: 2013-12-18 16:09
王小峰 发表于 2013-12-18 16:02
anychat.UserCameraControl(-1, 0);这难道不是释放摄像头?
而且我的从HallActivity到videoActivity采 ...
anychat.UserCameraControl(-1, 0);

java中这个不是释放摄像头哦。要实现你这个需求只能从videoactivity回来的时候重启hallactivity
作者: 王小峰    时间: 2013-12-18 16:14
廖斌 发表于 2013-12-18 16:09
java中这个不是释放摄像头哦。要实现你这个需求只能从videoactivity回来的时候重启hallactivity

我用的你们的sdk,我就没有手动的调用camera这个类,我怎么释放摄像头,摄像头不是把这个参数改成0,由你们去释放吗?

重启hallActivity是重新创建还是???
作者: 廖斌    时间: 2013-12-18 16:46
王小峰 发表于 2013-12-18 16:14
我用的你们的sdk,我就没有手动的调用camera这个类,我怎么释放摄像头,摄像头不是把这个参数改成0,由你 ...

AnyChatCameraHelper中有释放摄像头的方法。只要能hallActivity重新执行oncreate
作者: 王小峰    时间: 2013-12-18 16:59
我想问下重新执行oncreate有什么用呢,我oncreate方法
  1. super.onCreate(savedInstanceState);
  2.                 this.setContentView(R.layout.activity_hall);
  3.                 userListAdapter = new UserListAdapter(this);
  4.                 InitialSDK();
  5.                 InitialLayout();
复制代码
AnyChatCoreSDK.mCameraHelper.surfaceDestroyed(myView.getHolder());
就这么几句,InitialSDK();
  1. anychat = new AnyChatCoreSDK();
  2.                 anychat.SetBaseEvent(this);
  3.                 // 启动AnyChat传感器监听,可以采集本地视频
  4.                 anychat.mSensorHelper.InitSensor(this);
复制代码
这个方法中除了new AnychatCoreSDK();其他两句我也在onresume方法中写了,重启后,执行了那句话才好了的!如果按照你说的我打开videoAcitiviy,关闭HallActivity界面,这样的设计不是好!
作者: 廖斌    时间: 2013-12-18 17:09
王小峰 发表于 2013-12-18 16:59
我想问下重新执行oncreate有什么用呢,我oncreate方法AnyChatCoreSDK.mCameraHelper.surfaceDestroyed(myVi ...

主要是这个
  1. // 如果是采用Java视频采集,则需要设置Surface的CallBack
  2.                 if(AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_CAPDRIVER) == AnyChatDefine.VIDEOCAP_DRIVER_JAVA) {
  3.                         myView.getHolder().addCallback(AnyChatCoreSDK.mCameraHelper);                       
  4.                 }
复制代码
需要放到oncreate中,才能打开摄像头。这样设计是有些乱,你看需求能不能变通一下
作者: 廖斌    时间: 2013-12-18 17:39
廖斌 发表于 2013-12-18 17:09
主要是这个需要放到oncreate中,才能打开摄像头。这样设计是有些乱,你看需求能不能变通一下

你试试内核模式看看。内核模式UserCameraControl控制摄像头打开和释放
作者: 王小峰    时间: 2013-12-19 09:08
哦,好的!




欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) Powered by Discuz! X3