设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 13118|回复: 27
打印 上一主题 下一主题

anychat.GetUserVideoWidth(id)的值问题

[复制链接]

7

主题

43

帖子

121

积分

注册会员

Rank: 2

积分
121
跳转到指定楼层
楼主
发表于 2014-2-19 17:31:22 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我打开摄像头,并且anychat.GetCameraState(id) 的值为2,但是anychat.GetUserVideoWidth(id)的值却为为0
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
28#
发表于 2014-2-21 12:34:51 | 只看该作者
bdcn 发表于 2014-2-21 12:26
// 如果是采用Java视频采集,则需要设置Surface的CallBack
if(AnyChatCoreSDK.GetSDKOptionInt(AnyChatDef ...

这种情况通常原因有两方面
1、调用selfSurfaceHolder.addCallback(AnyChatCoreSDK.mCameraHelper);时机不对。需要在activity的oncreate中调用

2、selfSurfaceHolder不可见(invisiable,gone或者被遮挡)

上次说selfSurfaceHolder要设置setZOrderOnTop(true),远程surfaceview没有设置吧?远程设置了的话,那就没效果了
回复 支持 反对

使用道具 举报

7

主题

43

帖子

121

积分

注册会员

Rank: 2

积分
121
27#
 楼主| 发表于 2014-2-21 12:26:59 | 只看该作者
// 如果是采用Java视频采集,则需要设置Surface的CallBack
if(AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_CAPDRIVER) == AnyChatDefine.VIDEOCAP_DRIVER_JAVA) {
      selfSurfaceHolder.addCallback(AnyChatCoreSDK.mCameraHelper);
}

上面这段代码执行了,但是下面这段代码没执行

@Override
        public void surfaceCreated(SurfaceHolder holder) {
                try {
                        mCamera = Camera.open(iCurrentCameraId);
                        currentHolder = holder;
                        mCamera.setPreviewDisplay(holder);//set the surface to be used for live preview
                        initCamera();
                } catch (Exception ex) {
                        if(null != mCamera) {
                                mCamera.release();
                                mCamera = null;
                                mVideoPixfmt = -1;
                        }
                }
        }
回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
26#
发表于 2014-2-21 10:26:44 | 只看该作者
如果用的是Java模式,调试一下,在AnyChatCameraer的surfaceCreated中打个断点,看执行情况
回复 支持 反对

使用道具 举报

7

主题

43

帖子

121

积分

注册会员

Rank: 2

积分
121
25#
 楼主| 发表于 2014-2-21 10:23:51 | 只看该作者
//  根据配置文件配置视频参数
        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_CAPDRIVER, configEntity.videoCapDriver);
                // 本地视频采集偏色修正设置
                AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_FIXCOLORDEVIA, configEntity.fixcolordeviation);
                // 视频显示驱动设置
                AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL, configEntity.videoShowDriver);
                // 音频播放驱动设置
                AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_AUDIO_PLAYDRVCTRL, configEntity.audioPlayDriver);
                // 音频采集驱动设置
                AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_AUDIO_RECORDDRVCTRL, configEntity.audioRecordDriver);
                // 视频GPU渲染设置
                AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_GPUDIRECTRENDER, configEntity.videoShowGPURender);
                // 本地视频自动旋转设置
                AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_AUTOROTATION, configEntity.videoAutoRotation);
        }

        public static ConfigEntity LoadConfig(Context context)
        {
                ConfigEntity configEntity = new ConfigEntity();
            SharedPreferences  share = context.getSharedPreferences("perference", Context.MODE_WORLD_WRITEABLE);  

        configEntity.name = share.getString("name", "");
        configEntity.password = share.getString("password", "");
        configEntity.IsSaveNameAndPw = share.getString("IsSaveNameAndPw", "").equals("1") ? true : false;
      
//      configEntity.ip = share.getString("ip", "192.168.7.95");
        configEntity.ip = share.getString("ip", "192.168.8.209");
//      configEntity.ip = share.getString("ip", "192.168.7.115");
        configEntity.port = share.getInt("port", 8906);
        
        configEntity.configMode = share.getInt("configMode", ConfigEntity.VIDEO_MODE_SERVERCONFIG);
        configEntity.resolution_width = share.getInt("resolution_width", 320);
        configEntity.resolution_height = share.getInt("resolution_height", 240);
        configEntity.videoBitrate = share.getInt("videoBitrate", 200*1000);
        configEntity.videoFps = share.getInt("videoFps", 20);
        configEntity.videoQuality = share.getInt("videoQuality", ConfigEntity.VIDEO_QUALITY_BEST);
        configEntity.videoPreset = share.getInt("videoPreset", 3);
        configEntity.videoOverlay = share.getInt("videoOverlay", 1);
        configEntity.videorotatemode = share.getInt("VideoRotateMode", 0);
        configEntity.videoCapDriver = share.getInt("VideoCapDriver", AnyChatDefine.VIDEOCAP_DRIVER_JAVA);
        configEntity.fixcolordeviation = share.getInt("FixColorDeviation", 0);
        configEntity.videoShowGPURender = share.getInt("videoShowGPURender", 0);
        configEntity.videoAutoRotation = share.getInt("videoAutoRotation", 1);

        configEntity.enableP2P = share.getInt("enableP2P", 1);
        configEntity.useARMv6Lib = share.getInt("useARMv6Lib", 0);
        configEntity.enableAEC = share.getInt("enableAEC", 1);
        configEntity.useHWCodec = share.getInt("useHWCodec", 0);
        configEntity.videoShowDriver = share.getInt("videoShowDriver", AnyChatDefine.VIDEOSHOW_DRIVER_JAVA);
        configEntity.audioPlayDriver = share.getInt("audioPlayDriver", AnyChatDefine.AUDIOPLAY_DRIVER_JAVA);   
        configEntity.audioRecordDriver = share.getInt("audioRecordDriver", AnyChatDefine.AUDIOREC_DRIVER_JAVA);
                return configEntity;
        }

这是配置
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9109

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9109
24#
发表于 2014-2-20 22:17:03 | 只看该作者
在“ApplyVideoConfig”里面,所有的参数是从配置文件中读取的,您还得对比一下,这些参数是否相一致,我怀疑问题就在这个地方?
回复 支持 反对

使用道具 举报

7

主题

43

帖子

121

积分

注册会员

Rank: 2

积分
121
23#
 楼主| 发表于 2014-2-20 21:44:22 | 只看该作者
比对过了,逻辑没问题,ApplyVideoConfig()也调用了
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9109

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9109
22#
发表于 2014-2-20 17:49:52 | 只看该作者
建议您对比一下AnyChatCallCenter.apk的示例源代码,看看您的工程和示例工程有哪些差异,比如参数设置上是否有差异(HallActivity.java):

  1. // 根据配置文件配置视频参数
  2. private void ApplyVideoConfig() {
  3.     ......
  4. }
复制代码
再对比一下视频surface初始化(VideoActivity.java):
  1. private void initView() {
  2.     ......
  3. }
复制代码
回复 支持 反对

使用道具 举报

7

主题

43

帖子

121

积分

注册会员

Rank: 2

积分
121
21#
 楼主| 发表于 2014-2-20 17:31:06 | 只看该作者
标准的示例程序没问题
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9109

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9109
20#
发表于 2014-2-20 16:17:06 | 只看该作者
建议您先运行一下我们标准的示例程序,看是否OK,确认我们的SDK是否可以在您的设备上正常工作?

可以运行最新版本SDK包里面的:AnyChatCallCenter.apk,也有示例源代码的,在SDK包的:src\AnyChatCallCenter目录下。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-12-23 15:17 , Processed in 0.142682 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表