如何在客户端进行视频聊天时使用画中画模式?
如何在客户端进行视频聊天时使用画中画模式?在C#WinForm程序代码里如何实现画中画视频聊天模式?求实现的代码,谢谢。
您好,可以将显示视频的控件叠成画中画形式试下? 廖斌 发表于 2015-6-19 17:00
您好,可以将显示视频的控件叠成画中画形式试下?
我们显示视频布局是通过显示控件来控制的,控件叠加在一起,视频内容是否被刷新需要看平台特性。 廖斌 发表于 2015-6-19 17:00
我们显示视频布局是通过显示控件来控制的,控件叠加在一起,视频内容是否被刷新需要看平台特性。
从AnyChatCallCenter的代码工程里面看不出是如何实现两个并列用户的视频聊天模式,应该使用Panle“pan_conversation”来呈现的,是否是在底层控制了这种并行模式?求大侠帮忙解决。 jackpc 发表于 2015-6-19 17:18
从AnyChatCallCenter的代码工程里面看不出是如何实现两个并列用户的视频聊天模式,应该使用Panle“pan_co ...
您好,底层没有控制视频的界面布局,都是通过控件来控制的。AnyChatCallCenter就是用panl来控制的,调整panl的布局就行了 廖斌 发表于 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);
} jackpc 发表于 2015-6-23 17:15
画中画的实现代码如下:
private void SetVideoSize()
{
您好,自己的视频,是采集之后直接渲染在控件中的,是没有经过编码的,所以比较清晰。而对方的视频是经过编码传输过来的,有压缩。 廖斌 发表于 2015-6-23 17:24
您好,自己的视频,是采集之后直接渲染在控件中的,是没有经过编码的,所以比较清晰。而对方的视频是经过 ...
默认我们设置编码视频参数为:分辨率320x240,码率为90Kbps,是比较低的视频参数。若想要清晰一些,可以将视频参数设置高一些,参考视频参数:
1、分辨率320x240,码率为150Kbps
2、分辨率640x480,码率为400Kbps
jackpc 发表于 2015-6-23 17:15
画中画的实现代码如下:
private void SetVideoSize()
{
您好,可能是对方(大图)设置的参数有问题。 廖斌 发表于 2015-6-23 17:26
默认我们设置编码视频参数为:分辨率320x240,码率为90Kbps,是比较低的视频参数。若想要清晰一些,可以将 ...
设置的方法有两种
1、通过服务器那边来配置(AnyChatCoreServer.ini),参考
http://bbs.anychat.cn/forum.php?mod=viewthread&tid=737&extra=page%3D1
2、通过客户端调用api来设置。
页:
[1]
2