设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 8476|回复: 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
11#
发表于 2015-6-23 17:34:40 | 只看该作者
jackpc 发表于 2015-6-23 17:28
那如果我希望实现的画中画显示对方的大图能看起来清晰一些,代码应该如何调整才能实现?求大侠给予帮忙, ...

设置了分辨率之后,还需要设置相应的码率,才会有效果的。建议设置的参数参考我之前的回帖

TSZ2)8N7N{L9%M61}F[O.jpg (161.97 KB, 下载次数: 2836)

TSZ2)8N7N{L9%M61}F[O.jpg
回复 支持 反对

使用道具 举报

6

主题

17

帖子

66

积分

注册会员

Rank: 2

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

那如果我希望实现的画中画显示对方的大图能看起来清晰一些,代码应该如何调整才能实现?求大侠给予帮忙,谢谢。
我在AnyChatCoreServer.ini里面配置了
[Video Settings]
VideoWidth=1920
VideoHeight=1080
好像没起作用。
回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
9#
发表于 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来设置。
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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


回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

使用道具 举报

6

主题

17

帖子

66

积分

注册会员

Rank: 2

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

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

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 06:00 , Processed in 0.146085 second(s), 25 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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