设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

如何在客户端进行视频聊天时使用画中画模式?

[复制链接]

6

主题

17

帖子

66

积分

注册会员

Rank: 2

积分
66
跳转到指定楼层
楼主
发表于 2015-6-19 16:57:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
如何在客户端进行视频聊天时使用画中画模式?
在C#WinForm程序代码里如何实现画中画视频聊天模式?求实现的代码,谢谢。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
沙发
发表于 2015-6-19 17:00:21 | 只看该作者
您好,可以将显示视频的控件叠成画中画形式试下?
回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
板凳
发表于 2015-6-19 17:00:56 | 只看该作者
廖斌 发表于 2015-6-19 17:00
您好,可以将显示视频的控件叠成画中画形式试下?

我们显示视频布局是通过显示控件来控制的,控件叠加在一起,视频内容是否被刷新需要看平台特性。
回复 支持 反对

使用道具 举报

6

主题

17

帖子

66

积分

注册会员

Rank: 2

积分
66
地板
 楼主| 发表于 2015-6-19 17:18:34 | 只看该作者
廖斌 发表于 2015-6-19 17:00
我们显示视频布局是通过显示控件来控制的,控件叠加在一起,视频内容是否被刷新需要看平台特性。

从AnyChatCallCenter的代码工程里面看不出是如何实现两个并列用户的视频聊天模式,应该使用Panle“pan_conversation”来呈现的,是否是在底层控制了这种并行模式?求大侠帮忙解决。
回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
5#
发表于 2015-6-19 18:17:45 | 只看该作者
jackpc 发表于 2015-6-19 17:18
从AnyChatCallCenter的代码工程里面看不出是如何实现两个并列用户的视频聊天模式,应该使用Panle“pan_co ...

您好,底层没有控制视频的界面布局,都是通过控件来控制的。AnyChatCallCenter就是用panl来控制的,调整panl的布局就行了
回复 支持 反对

使用道具 举报

6

主题

17

帖子

66

积分

注册会员

Rank: 2

积分
66
6#
 楼主| 发表于 2015-6-23 17:15:55 | 只看该作者
廖斌 发表于 2015-6-19 18:17
您好,底层没有控制视频的界面布局,都是通过控件来控制的。AnyChatCallCenter就是用panl来控制的,调整p ...

画中画的实现代码如下:
private void SetVideoSize()
        {
            pic_suserVideo.Width = 320;
            pic_suserVideo.Height = 240;
            pic_tuserVideo.Width = 960;
            pic_tuserVideo.Height = 720;

            this.pic_suserVideo.Location = new System.Drawing.Point(730, 270);
        }

//操作双方音视频设备
        public void OpenCameraAndSpeak(int userId, bool isopen)
        {

            if (isopen)
            {

                //打开呼叫者音视频
                AnyChatCoreSDK.UserCameraControl(userId, true);
                AnyChatCoreSDK.UserSpeakControl(userId, true);

                if (userId == m_UserId)
                {
                    AnyChatCoreSDK.SetVideoPos(userId, pic_suserVideo.Handle, 0, 0, pic_suserVideo.Width, pic_suserVideo.Height);
                }
                else
                {
                    AnyChatCoreSDK.SetVideoPos(userId, pic_tuserVideo.Handle, 0, 0, pic_tuserVideo.Width, pic_tuserVideo.Height);
                }
            }
            else
            {
                AnyChatCoreSDK.UserCameraControl(userId, false);
                AnyChatCoreSDK.UserSpeakControl(userId, false);
            }

            //音量刷新
            timer_speak.Enabled = isopen;

        }

//进入房间成功
        public void EnterRoomSuccess()
        {

            timer_call.Stop();
            Bitmap bit = Properties.Resources._28;
            bit.RotateFlip(RotateFlipType.Rotate180FlipY);
            //pic_suser.Image = bit;
            UserInfo tUserItem = GetUserInfoByUserId(getOtherInSession());
            if (tUserItem != null)
            {
                lb_tuserName.Text = tUserItem.Name;
                lb_suserName.Text = m_UserName;

                pan_users.Hide();
                pan_call.Hide();
                pan_conversation.Dock = DockStyle.Fill;
                pan_conversation.Show();
                SetVideoSize();

                OpenCameraAndSpeak(m_UserId, true);//打开自己的音视频
            }
        }
为何实现的画中画,对方显示的大图很模糊,自己显示的小图就很清晰?问题出在哪里?如何解决?
问题可能是以下的代码导致的
if (userId == m_UserId)
                {
                    AnyChatCoreSDK.SetVideoPos(userId, pic_suserVideo.Handle, 0, 0, pic_suserVideo.Width, pic_suserVideo.Height);
                }
                else
                {
                    AnyChatCoreSDK.SetVideoPos(userId, pic_tuserVideo.Handle, 0, 0, pic_tuserVideo.Width, pic_tuserVideo.Height);
                }
回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
7#
发表于 2015-6-23 17:24:24 | 只看该作者
jackpc 发表于 2015-6-23 17:15
画中画的实现代码如下:
private void SetVideoSize()
        {

您好,自己的视频,是采集之后直接渲染在控件中的,是没有经过编码的,所以比较清晰。而对方的视频是经过编码传输过来的,有压缩。
回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
8#
发表于 2015-6-23 17:26:46 | 只看该作者
廖斌 发表于 2015-6-23 17:24
您好,自己的视频,是采集之后直接渲染在控件中的,是没有经过编码的,所以比较清晰。而对方的视频是经过 ...

默认我们设置编码视频参数为:分辨率320x240,码率为90Kbps,是比较低的视频参数。若想要清晰一些,可以将视频参数设置高一些,参考视频参数:
1、分辨率320x240,码率为150Kbps
2、分辨率640x480,码率为400Kbps


回复 支持 反对

使用道具 举报

9#
发表于 2015-6-23 17:27:09 | 只看该作者
jackpc 发表于 2015-6-23 17:15
画中画的实现代码如下:
private void SetVideoSize()
        {

您好,可能是对方(大图)设置的参数有问题。
回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
10#
发表于 2015-6-23 17:27:44 | 只看该作者
廖斌 发表于 2015-6-23 17:26
默认我们设置编码视频参数为:分辨率320x240,码率为90Kbps,是比较低的视频参数。若想要清晰一些,可以将 ...

设置的方法有两种
1、通过服务器那边来配置(AnyChatCoreServer.ini),参考
http://bbs.anychat.cn/forum.php? ... &extra=page%3D1
2、通过客户端调用api来设置。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 12:59 , Processed in 0.162863 second(s), 21 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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