Windows平台AnyChat视频显示

1、如何显示本地视频,或是其它计算机上的视频?

a)AnyChat的客户端必须初始化、登录系统、进入房间成功之后,才能显示本地视频或是其它用户的视频,详细的流程可参考:193. AnyChat开发流程指南

b)AnyChat有两种方式来显示视频,分别是:自动显示(BRAC_FUNC_VIDEO_AUTODISP)、回调视频数据(BRAC_FUNC_VIDEO_CBDATA),应用程序需要在初始化(BRAC_InitSDK)时设置相关的标志来告诉AnyChat如何处理视频的显示。

当设置了自动显示(BRAC_FUNC_VIDEO_AUTODISP)时,应用程序需要设置视频显示位置(BRAC_SetVideoPos),当打开本地用户的视频,或是请求远程用户的视频时,AnyChat内部会自动将视频显示在指定的位置;

如果没有设置自动显示标志,而只设置了回调视频数据(BRAC_FUNC_VIDEO_CBDATA)标志时,AnyChat内部不会显示视频,而是将视频数据通过回调的方式(130. 视频数据回调函数)提交给应用程序,由应用程序自己来绘制;

c)当用户使用API接口(BRAC_UserCameraControl)打开本地摄像头后,本地计算机的视频即可显示出来;

d)当用户使用API接口(BRAC_UserCameraControl)请求其它用户的视频数据时,只有该用户打开自己的摄像头之后,本地计算机才能收到对方用户的视频;

2、什么是视频显示驱动,如何选择?

Windows平台有多种方式来实现视频的显示,常见的有GDI绘图和DirectShow两种模式。当设置AnyChat自动显示视频标志时,应用程序可以在这两种模式之间进行选择,视频显示驱动的选择需要在初始化(BRAC_InitSDK)成功之后设置,下面的代码演示了选择DirectShow显示驱动:

1.// 选择AnyChat显示驱动

2.DWORD dwVideoDriver = BRAC_VSD_DIRECTSHOW;

3.BRAC_SetSDKOption(BRAC_SO_VIDEOSHOW_DRIVERCTRL,(const char*)&dwVideoDriver, sizeof(DWORD));

AnyChat为了简化应用程序开发流程,同时也为了兼容更早期的版本,默认采用GDI绘图方式来显示视频;GDI绘图方式适合分辩率不大于CIF(352x288),同时帧率低于20FPS的视频显示;DirectShow显示模式适合高分辨率、高帧率的视频显示。

DirectShow显示模式在高视频质量下更节约资源;

(*注:视频显示驱动选择功能为AnyChat Platform Core SDK V4.0版本新增功能)

3、显示的视频为何有些变形,如何设置?

当视频显示区域的大小与视频的原始大小不成比例时,所显示的视频将会变形,所以要保证显示的视频不变形,则必须保证视频显示区域与视频的原始大小成正比关系;

通过WM_GV_VIDEOSIZECHG消息(V4.0版本新增)可以知道每一个用户当前原始视频的大小,应用程序可以根据原始视频的大小来确定视频显示区域的大小,也可以通过API(BRAC_QueryUserState)来获取用户当前的视频大小;

当用户进入房间时,AnyChat内部会每一个在线用户触发一次WM_GV_VIDEOSIZECHG消息;

当用户修改视频采集分辨率时,房间内所有用户都将收到该用户的WM_GV_VIDEOSIZECHG消息;

4、为何有时视频被其它窗口覆盖,或是最小化后视频被遮挡,不能自动刷新?

这主要出现在DirectShow显示模式下,主要原因是应用程序界面重绘之后,底层的DirectShow没有获得重绘的消息通知,所以导致视频被遮挡,解决方案是响应窗口的WM_PAINT消息,在消息处理函数中调用BRAC_RepaintVideo进行视频的重绘。

AnyChat默认的GDI绘图模式下,不存在该问题。

AnyChat底层的DirectShow是采用VMR的Windowless模式进行视频显示,有关该问题的详细信息可参考微软官方的开发文档:http://msdn.microsoft.com/en-us/library/dd407299

Windows平台AnyChat视频显示

时间: 2024-12-12 17:12:16

Windows平台AnyChat视频显示的相关文章

Windows平台视频录制支持视频并列模式录制

自AnyChat r4027版本开始,Windows平台(含Web平台)本地视频录制支持并列模式录制. Windows平台本地视频录制支持单用户录制.合成录制(画中画模式).并列录制,其中:1.单用户录制是指整个录像文件只有一个用户的视频信息:2.合成录制是指整个录像文件包括通话双方的视频信息,其中视频以画面迭加的形式展现:3.并列录制是指整个录像文件包括通话双方的视频信息,其中视频画面以左右对称的形式展现,不会遮挡任何一方的视频区域: 并列录制增加了一个录制标志定义(以Web版本为例): va

Windows平台分布式架构实践 - 负载均衡

概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过 Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为什么那么的迫切的希望.NET跨平台呢?第一个理由是便宜,淘宝号称4万多台服务器 全部运行在Linux,Linux平台下还有免费的MySql,这些都是免费的,这些省下来直接就是利润呀,做企业的成本可以降低又没有任何损失,何乐而 不为呢?第二个理由是在Linux系统下还有很多非常优秀的构架(当然同样也

QT5.x应用在Mac OS X和Windows平台的发布过程

QT是一款非常牛逼的跨平台开发工具,目前可以开发Mac OS X.Windows.Linux.Android.iOS等平台的App.对于Android和iOS平台,发布相对容易,例如,Android平台是生成apk文件上传到Android设备的,所以直接安装apk文件即可.不过对于PC平台(Mac OS X.Windows和Linux)的应用,在发布时就显得麻烦些. 本文主要介绍Mac OS X和Windows平台的发布过程.这两个平台运行的应用都称为可执行程序.Windows平台可执行文件扩展

如何在Windows平台下安装或卸载Apache服务

安装 下载资源包 在下载链接(<–点这里)处下载: 然后,选择你要下载的版本,我选择的是最新版:2.4.16,点击该链接: 因为我的是Windows平台,所以我选择:Files for Microsoft Windows,继续点击: 此处,有5处下载源,我选择的是:ApacheHaus,继续点击: 到了这里就要注意了!针对自己系统的版本,选择合适的版本!我的是64位系统,所以,我选择的是下方的:Apache 2.4.16 x64 ,然后,点击Download Locations下方的那个小国旗,

windows平台在tomcat中启动cas报错解决

windows平台在tomcat中启动cas报错: Caused by: java.lang.UnsatisfiedLinkError: Could not load library. Reasons: [no jansi in java.library.path, 系统找不到指定的路径.] 解决办法:将jansi.dll文件放到C:\Windows\System32目录下即可. 注意:jansi.dll文件在使用gradle编译打包cas时会下载到C:\Users\${用户名}\.gradle

windows平台python 2.7环境编译安装zbar

最近一个项目需要识别二维码,找来找去找到了zbar和zxing,中间越过无数坑,总算基本上弄明白,分享出来给大家. 一.zbar官方介绍 ZBar 是款桌面电脑用条形码/二维码扫描工具,支持摄像头及图片扫描,支持多平台,例如 iPhone,Andriod 手机,同时 ZBar封装了二维码扫描的 API 开发包. ZBar 目前条码类型有:EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 and QR Code. 从

Cocos2d-x在Windows平台环境的搭建

|   版权声明:本文为博主原创文章,未经博主允许不得转载. windows平台下配置Cocos2d-X引擎所需的压缩文件和可执行文件,如下: 下载链接: adt:    http://tools.android-studio.org/index.php ndk:    http://wear.techbrood.com/tools/sdk/ndk/ apache:   http://ant.apache.org/bindownload.cgi Cocos:   http://www.cocos

【翻译自mos文章】在windows平台上怎么启用Oracle database 企业版的partition?

来源于: How to enable Partitioning in Oracle Database Enterprise Edition 11.2 on Windows (文档 ID 1188238.1) 适用于: Oracle Database - Enterprise Edition - Version 11.2.0.1 and later Information in this document applies to any platform. 目标: 在Windows平台上怎么启用Or

Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)

概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效果,可以说还是非常的理想的.同时我们也收集到了不少的问题,比如说如何在这种分布式的架构下使用Session,NLB中有一台服务器挂掉了会导致对外暴露的地址无法访问,如果实现服务器之间的同步,如果更好的进行热修复等等,还有我们在上一篇中也提到了NLB所提供的功能是非常简单的,为了回答我们前面提到的问题