设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: kinghong
打印 上一主题 下一主题

关于surface上运行anychat遇到的问题

[复制链接]

36

主题

181

帖子

542

积分

高级会员

Rank: 4

积分
542
11#
 楼主| 发表于 2015-9-8 13:07:34 | 只看该作者
佰锐科技-李友勤 发表于 2015-9-8 11:52
您好,以下代码有实现吗
//开启屏幕共享
int bEnableScreenCamera = 1;

有实现,请看我源码:
private void initAnychat()
        {
            if (hallForm != null && !hallForm.bReleased)
            {
                AnyChatCoreSDK.Logout();
                AnyChatCoreSDK.Release();

            }
            else
            {
                hallForm = null;
                hallForm = new VideoForm(m_myUserID, m_userName, m_firendID, m_LocalVideoWidth, m_LocalVideoHeight,deviceList);
                hallForm.OnVideoCall_Reply += new EventHandler<NotifyMessageEventArgs>(hallForm_OnVideoCall_Reply);
                //this.Hide();
                hallForm.Show();
                hallForm.LoadBg(loading);
            }

            SystemSetting.Init(this.Handle);

            int bEnableScreenCamera = 1;
            int x = AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_CORESDK_SCREENCAMERACTRL, ref bEnableScreenCamera, sizeof(int));


            //设置视频分辨率
            int m_Refw = AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_LOCALVIDEO_WIDTHCTRL, ref m_LocalVideoWidth, sizeof(int));
            int m_Refh = AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_LOCALVIDEO_HEIGHTCTRL, ref m_LocalVideoHeight, sizeof(int));
            AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_LOCALVIDEO_BITRATECTRL, ref m_LocalVideoBitrate, sizeof(int));
            AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_LOCALVIDEO_FPSCTRL, ref m_LocalVideoFps, sizeof(int));
            AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_LOCALVIDEO_PRESETCTRL, ref m_LocalPreset, sizeof(int));
            AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_LOCALVIDEO_GOPCTRL, ref m_LocalGop, sizeof(int));
            AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_LOCALVIDEO_QUALITYCTRL, ref m_LocalQuality, sizeof(int));


            //应用本地视频编码参数,使得前述修改即时生效(参数为int型:1 使用新参数,0 使用默认参数)
            int m_AppLocal = 1;
            AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_LOCALVIDEO_APPLYPARAM, ref m_AppLocal, sizeof(int));


            //AnyChatCoreSDK.SelectVideoCapture(capture);

            AnyChatCoreSDK.Connect(videoServerIP, videoPort);
        }
回复 支持 反对

使用道具 举报

0

主题

13

帖子

322

积分

中级会员

Rank: 3Rank: 3

积分
322
QQ
12#
发表于 2015-9-8 20:27:16 | 只看该作者
kinghong 发表于 2015-9-8 09:12
private void UseDestopSharing()
        {
            pan_conversation.Hide();

你好,通过对您帖上的代码分析,发现是没有正常设置包括帧率(BRAC_SO_LOCALVIDEO_FPSCTRL)、关键帧(BRAC_SO_LOCALVIDEO_GOPCTRL)、码率(BRAC_SO_LOCALVIDEO_BITRATECTRL)等视频参数导致的共享桌面的视频没有正常显示。在代码中增加这些视频参数设置语句即可正常显示共享桌面的视频。

另外代码中是假设“Native Screen Camera"设备在被枚举时始终为最后一个设备,从代码严谨的角度来看还是通过判断语句去选择设备更合适。

可以参考如下的代码:
  1.                         int deviceNum = 0;
  2.                         AnyChatCoreSDK.EnumVideoCapture(null, ref deviceNum);
  3.                         IntPtr[] deviceList = new IntPtr[deviceNum];                        

  4.                         AnyChatCoreSDK.EnumVideoCapture(deviceList, ref deviceNum);
  5.                         for (int idx = 0; idx < deviceNum; idx++)
  6.                         {
  7.                             IntPtr intPtr = deviceList[idx];
  8.                             int len = 100;
  9.                             byte[] byteArray = new byte[len];
  10.                             Marshal.Copy(intPtr, byteArray, 0, len);
  11.                             string m_DeviceName = Encoding.Default.GetString(byteArray);
  12.                             m_DeviceName = m_DeviceName.Substring(0, m_DeviceName.IndexOf('\0'));

  13.                             if (m_DeviceName.IndexOf("Native Screen Camera") > 0)
  14.                             {
  15.                                 AnyChatCoreSDK.SelectVideoCapture(m_DeviceName);

  16.                                 //设置视频参数
  17.                                 int screenWidth = 800;
  18.                                 int screenHeight = 600;
  19.                                 AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_LOCALVIDEO_WIDTHCTRL, ref screenWidth, sizeof(int));
  20.                                 AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_LOCALVIDEO_HEIGHTCTRL, ref screenHeight, sizeof(int));

  21.                                 int bitrateCtrl = 0;
  22.                                 AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_LOCALVIDEO_BITRATECTRL, ref bitrateCtrl, sizeof(int));

  23.                                 int fpsCtrl = 15;
  24.                                 AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_LOCALVIDEO_FPSCTRL, ref fpsCtrl, sizeof(int));

  25.                                 int gopCtrol = 60;
  26.                                 AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_LOCALVIDEO_GOPCTRL, ref gopCtrol, sizeof(int));

  27.                                 int presetCtrl = 3;
  28.                                 AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_LOCALVIDEO_PRESETCTRL, ref presetCtrl, sizeof(int));

  29.                                 int qualityCtrl = 3;
  30.                                 AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_LOCALVIDEO_QUALITYCTRL, ref qualityCtrl, sizeof(int));

  31.                                 int m_AppLocal = 1;
  32.                                 AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_LOCALVIDEO_APPLYPARAM, ref m_AppLocal, sizeof(int));

  33.                                 break;
  34.                             }
  35.                         }
复制代码
回复 支持 反对

使用道具 举报

36

主题

181

帖子

542

积分

高级会员

Rank: 4

积分
542
13#
 楼主| 发表于 2015-9-9 09:20:08 | 只看该作者
bairui.tony 发表于 2015-9-8 20:27
你好,通过对您帖上的代码分析,发现是没有正常设置包括帧率(BRAC_SO_LOCALVIDEO_FPSCTRL)、关键帧(BRAC_ ...

谢谢你的回答,根据你上面的视频分辨率设置共享桌面就达不到全屏共享了,还有我用台式机来设置共享的话是没有问题的,也可以设置全屏共享。
回复 支持 反对

使用道具 举报

14#
发表于 2015-9-9 09:30:26 | 只看该作者
kinghong 发表于 2015-9-9 09:20
谢谢你的回答,根据你上面的视频分辨率设置共享桌面就达不到全屏共享了,还有我用台式机来设置共享的话是 ...

您好,上面代码仅供参考,可以将分辨率设置高一些以达到全屏效果。
回复 支持 反对

使用道具 举报

36

主题

181

帖子

542

积分

高级会员

Rank: 4

积分
542
15#
 楼主| 发表于 2015-9-9 09:55:06 | 只看该作者
佰锐科技-邵光清 发表于 2015-9-9 09:30
您好,上面代码仅供参考,可以将分辨率设置高一些以达到全屏效果。

请看我在第一页发的日志, 同样的参数设置在台式机上共享桌面没有问题,但是在surface上就有问题,请问我参数设置哪里有问题了?
回复 支持 反对

使用道具 举报

36

主题

181

帖子

542

积分

高级会员

Rank: 4

积分
542
16#
 楼主| 发表于 2015-9-9 09:55:50 | 只看该作者
bairui.tony 发表于 2015-9-8 20:27
你好,通过对您帖上的代码分析,发现是没有正常设置包括帧率(BRAC_SO_LOCALVIDEO_FPSCTRL)、关键帧(BRAC_ ...

请看我在第一页发的日志, 同样的参数设置在台式机上共享桌面没有问题,但是在surface上就有问题,请问我参数设置哪里有问题了?
回复 支持 反对

使用道具 举报

17#
发表于 2015-9-9 10:09:28 | 只看该作者
kinghong 发表于 2015-9-9 09:55
请看我在第一页发的日志, 同样的参数设置在台式机上共享桌面没有问题,但是在surface上就有问题,请问我 ...

您好,视频参数选项中视频质量和预设都是5最高级别,这对运算能力更高要求,CPU压力稍高;另外gop:30这个设置不合理,gop一般为fps的3到4倍。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 04:35 , Processed in 0.140230 second(s), 20 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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