AnyChat技术支持论坛

标题: AnyChat使用攻略之独立部署Windows中心录像服务器 [打印本页]

作者: admin    时间: 2013-7-3 19:48
标题: AnyChat使用攻略之独立部署Windows中心录像服务器
Linux平台中心录像服务器部署请参考http://bbs.anychat.cn/forum.php? ... ge=1&extra=#pid6117

AnyChat for Windows SDK自V4.8版本开始支持中心服务器录像(打开下载页面,位于SDK包bin\recordserver目录下),之前的版本只能在客户端录像,新版本支持在服务器端录像,集中保存,录像任务可由客户端发起,也可由业务服务器发起,录像完成之后,将录像文件名反馈给业务服务器,业务服务器可保存到数据库中便于集中维护。录像保存路径可设置。

下面一步一步介绍如何部署中心录像服务器,以及让中心录像服务器正常工作的注意事项:

一、下载AnyChat for Windows SDK包(要求V4.8及以上版本),解压缩,部署核心服务器和业务服务器(参考:AnyChat使用攻略之独立部署Windows视频服务器),让客户端能与核心服务器,以及核心服务器与业务服务器之间能正常的工作。
启动核心服务器之后,查看核心服务器的日志文件(AnyChatCoreServer.log),显示内容如下:
  1. [2013-07-03 18:28:28(479)]        ---------------------Init Service--------------------------
  2. [2013-07-03 18:28:28(488)]        Current File Version[4, 8, 0, 0],Build time:2013-07-03 13:52:21
  3. [2013-07-03 18:28:28(586)]        Start TCP Server Successed(port=8906)!
  4. [2013-07-03 18:28:28(604)]        Start UDP Server Successed(port=8907)!
  5. [2013-07-03 18:28:28(742)]        Authorized certification success!
复制代码
二、进入SDK包的bin\recordserver目录,里面包含如下图所示的文件:

其中“AnyChatRecordServer.exe”是主程序,注意,该主程序不能直接运行,可以通过如下两种方式来运行:
    1、运行run.bat来启动中心录像服务器;
    2、运行install.bat来安装为Windows服务,在“服务”中启动;

三、中心录像服务器参数配置。打开AnyChatRecordServer.ini配置文件,内容如下:
  1. [Base Settings]
  2. DebugMode=1
  3. ServerIpAddr=127.0.0.1
  4. ServerUdpPort=8907
  5. RecordRootDir=record
  6. RecordRootURL=http://www.anychat.cn/record/
  7. ServerCallBackPathType=1
  8. ClientCallBackPathType=2
复制代码
配置项详细说明如下:
    【DebugMode】    配置为0时,不在日志中输出相关的调试信息;为1时,可输出更多的调试信息,如录像开始,录像结束,录像文件名等,便于分析故障原因;      
    【ServerIpAddr】  配置核心服务器的IP地址,录像服务器与核心服务在同一台计算机时,默认为127.0.0.1
    【ServerUdpPort】 配置核心服务器的UDP通信端口,默认为8907
    【RecordRootDir】表示录像文件保存的本地根目录,可以为相对地址,如:RecordRootDir=record,表示当前录像服务器目录下的record子目录,也可以为绝对路径,如:RecordRootDir=d:\record(注意:不要配置为:RecordRootDir=d:\record\,即路径后面不要加上“\”);
    【RecordRootURL】表示录像文件保存本地根目录的互联网访问地址,是一个URL地址,通过该URL地址,可以访问到中心录像服务器目录下的指定文件,通常需要在Web服务器(如Apache)中设置一个虚拟路径指向【RecordRootDir】,而【RecordRootURL】就是该虚拟路径;
    【ServerCallBackPathType】表示中心录像服务器完成录像之后,触发业务服务器回调事件中的路径类型:0 相对路径、1 绝对路径、2 URL路径;
    【ClientCallBackPathType】表示中心录像服务器完成录像之后,触发客户端回调事件中的路径类型:0 相对路径、1 绝对路径、2 URL路径;


四、启动中心录像服务器。运行run.bat,出现如下图所示的界面:

同时在Windows右下角的任务栏区域显示程序图标(点击该图标将弹出菜单,可选择退出程序):
在中心录像服务器程序目录下将生成日志文件:AnyChatRecordServer.log,内容如下所示:
  1. [2013-07-03 19:58:49(865)]        AnyChat Record Server Init,V1.0, Build Time:Jun  9 2013 17:23:55
  2. [2013-07-03 19:58:49(872)]        Record Root Directory: D:\anychat\AnyChatRecordServer\Record\
  3. [2013-07-03 19:58:49(877)]        Ready to connect to the server  127.0.0.1(8907)....
  4. [2013-07-03 19:58:49(910)]        Successfully connect to the anychatcoreserver!
复制代码
若在日志中显示“Successfully connect to the anychatcoreserver!”则表示中心录像服务器与核心服务器连接成功,工作正常;否则请检查相关参数配置是否匹配,如AnyChatRecordServer.ini中的UDP端口和AnyChatCoreServer.ini中的UDP端口是否一致,另请检查程序的版本是否符合要求。

五、启动中心录像。客户端调用API:BRAC_StreamRecordCtrl(...),或是业务服务器调用API:BRAS_StreamRecordCtrl(...)可启动或停止对目标用户的录像任务,停止录像之后,若录像成功,则会在业务服务器上触发相应的回调函数调用。


六、注意事项:
    1、由于早期的授权证书不支持中心录像服务器,若希望使用该功能(为可选模块),请与我们的商务人员联系升级授权证书;
    2、在中心服务器录像过程中,客户端网络异常掉线将会中断录像,并触发业务服务器的录像回调函数;
    3、停止录像、用户注销等操作与业务服务器触发录像回调函数的时机是异步的过程,在业务服务器编程时需要考虑这种时间差的因素,可能存在先触发用户注销的回调,然后再触发录像完成的回调;



关于回调事件路径类型:
0    相对路径,形如:2014-08-31/12-08-31-074_AnyChat4_53.mp4
1    绝对路径,形如:d:\record\2014-08-31\12-08-31-074_AnyChat4_53.mp4
2    URL路径,形如:http://www.anychat.cn/record/201 ... 074_AnyChat4_53.mp4

默认配置中:
【ServerCallBackPathType=1】表示业务服务器回调事件中返回绝对路径
【ClientCallBackPathType=2】表示客户端回调事件中返回URL地址,便于客户端可以直接通过该URL地址访问中心录像服务器上面的文件;

参考:
1、AnyChat音视频录制整体解决方案
2、有关中心录像服务器配置项【RecordRootURL】的说明

作者: admin    时间: 2013-7-3 20:34
标题: 中心录像服务器程序开发指南
一、业务服务器程序开发:

a)增加回调函数:
  1. // 服务器录像回调函数定义
  2. typedef void (CALLBACK * BRAS_OnServerRecord_CallBack)(DWORD dwUserId, DWORD dwParam, DWORD dwRecordServerId, DWORD dwElapse, LPCTSTR lpRecordFileName, LPVOID lpUserValue);
复制代码
dwUserId:录像用户Id;
lpRecordFileName:录像文件名(含路径,可以是相对路径,可以是绝对路径,在AnyChatRecordServer.ini中配置)
其它参数保留

b)增加回调函数设置API:
  1. // 设置服务器录像通知回调函数
  2. BRAS_API DWORD BRAS_SetOnServerRecordCallBack(BRAS_OnServerRecord_CallBack lpFunction, LPVOID lpUserValue=NULL);
复制代码
c)增加录像控制API:
  1. // 中心端录像控制
  2. BRAS_API DWORD BRAS_StreamRecordCtrl(DWORD dwUserId, BOOL bStartRecord, DWORD dwFlags, DWORD dwParam, DWORD dwRecordServerId);
复制代码
dwUserId:录像用户Id;
bStartRecord: 1 开始录像,  0 停止录像;
其它参数默认为0

二、客户端程序:
API接口没有变化:
  1. // 用户音、视频录制
  2. BRAC_API DWORD BRAC_StreamRecordCtrl(DWORD dwUserId, BOOL bStartRecord, DWORD dwFlags, DWORD dwParam);
复制代码
新增常量标识定义:
  1. #define BRAC_RECORD_FLAGS_SERVER        0x00000004L        ///< 服务器端录制
复制代码
当客户端调用API:BRAC_StreamRecordCtrl时,第三个参数(dwFlags)设置为:BRAC_RECORD_FLAGS_SERVER时,表示在服务器端进行录像。



作者: 博大的海    时间: 2013-7-26 12:48
需求是,手机端可以查看,视频通话的内容?看你们写的,应该可以做到,就是在两个人实时视频时,服务器端进行录制视频,通话结束后生成的mp4文件,手机端可以网路请求服务器获得。不知道我理解对不?可以满足需求吗?
作者: admin    时间: 2013-7-26 13:49
您好,目前实现的是把通话过程中的音频、视频流录制为MP4文件,目前AnyChat内核暂不支持MP4文件的播放,需要上层应用自己来实现。因为AnyChat主要是即时通讯方面的应用,MP4文件的播放属于点播,是另一个应用领域的,可能后期AnyChat会支持视频的点播。
作者: wansbest    时间: 2013-8-29 15:54
您好!
关于中心录制这部分有几个问题需要咨询一下。
1:中心录制服务器只提供windows版本,而没有linux版本吗?
2:核心服务器和业务服务器部署在linux上面,可以通过中心录制服务器录制。但在linux server SDK里面并没有找到 服务器录像回调函数定义以及设置服务器录像通知回调函数这两个接口,为什么这个地方跟windows server的SDK不同?linux业务服务器怎么控制音视频录制的业务逻辑?


作者: 廖斌    时间: 2013-8-29 16:12
wansbest 发表于 2013-8-29 15:54
您好!
关于中心录制这部分有几个问题需要咨询一下。
1:中心录制服务器只提供windows版本,而没有linux ...

您好
1、目前没有linux版本的录像服务器程序,录像服务器跟核心服务器可以部署在不同的电脑上面
2、您好,我们在本周之内将接口加上。
作者: admin    时间: 2013-8-30 16:08
wansbest 发表于 2013-8-29 15:54
您好!
关于中心录制这部分有几个问题需要咨询一下。
1:中心录制服务器只提供windows版本,而没有linux ...

您好,已更新AnyChat for Linux SDK,支持服务器录像相关业务逻辑控制,请重新下载:http://www.anychat.cn/download.html
作者: Maco    时间: 2013-11-27 10:27
请问,我需要使用windows版的视频录制功能,你在上面说的录像服务器和核心服务器是分开的还是一个的

作者: 佰锐技术-卓剑锐    时间: 2013-11-27 10:37
Maco 发表于 2013-11-27 10:27
请问,我需要使用windows版的视频录制功能,你在上面说的录像服务器和核心服务器是分开的还是一个的

你好,是分开的,录制服务器是另一个。
http://bbs.anychat.cn/forum.php? ... 1&extra=#pid305
作者: Maco    时间: 2013-11-27 12:02
你好,我想在web端与客户端视频通话时,录制视频保存到(windows pc端),该怎么调用,调用循序是怎样的(录像服务器和核心服务器已部署)
作者: 佰锐技术-卓剑锐    时间: 2013-11-27 13:34
本帖最后由 佰锐技术-卓剑锐 于 2013-11-27 14:25 编辑

你好,如果你只是想客户端录制而不是服务器录制的话,可以参考开发手册PDF里的5.5.11章节
作者: Maco    时间: 2013-11-27 14:19
我只想在服务器端录制视频,方便维护人员管理,但是怎么去触发整个流程呢,需要怎样调用sdk里面的那些方法呢。
作者: 佰锐技术-卓剑锐    时间: 2013-11-27 15:14
你好,开发文档里有介绍的,也是在第5章节。
作者: admin    时间: 2013-11-27 15:49
您好,这个帖子的2楼,就是讲中心服务器录像的开发的。
作者: liulang2450    时间: 2014-1-7 16:27
您好,视频录制是不是只能保持成mp4格式文件,如果不是,可以配置保存成其他什么格式?
你们现在有做视频点播功能么?
作者: admin    时间: 2014-1-7 16:30
您好:
1、目前暂时支持保存mp4格式,后续的版本将能支持自定义文件格式;
2、暂时没有实现视频点播功能;
作者: oy919007    时间: 2014-5-30 17:54
Maco 发表于 2013-11-27 12:02
你好,我想在web端与客户端视频通话时,录制视频保存到(windows pc端),该怎么调用,调用循序是怎样的( ...

我也和你是一样的问题,需要在服务器端录制视频。
作者: lincy    时间: 2014-11-27 08:53
请问可以将互相通讯的两个用户的视频同步录制在一个文件里吗?
作者: 佰锐技术-卓剑锐    时间: 2014-11-27 09:01
本帖最后由 佰锐技术-卓剑锐 于 2014-11-27 09:08 编辑
lincy 发表于 2014-11-27 08:53
请问可以将互相通讯的两个用户的视频同步录制在一个文件里吗?

您好,可以的,调用SDK里录像功能的API接口就可以实现。
可以参考 产品特性AnyChat支持录像文件格式设置。如评估过程有什么疑问也可以联系我们,谢谢!




作者: lincy    时间: 2015-2-3 16:36
请问视频服务器可做负载均衡吗?
作者: admin    时间: 2015-2-3 17:15
可以部署多台服务器,上层应用根据需要连接不同的视频服务器即可。
作者: Dijkstra08    时间: 2015-4-5 16:45
现在我的业务服务器部署在java容器内,是否可以在同一套代码内通过录像服务器的 SDK 来控制录像服务器?
作者: admin    时间: 2015-4-5 18:16
您好,您可以通过客户端的API接口,或是业务服务器所提供的API接口来控制录像功能,参考:AnyChat音视频录制整体解决方案,您不需要使用录像服务器的 SDK。
作者: 一瓶爱因斯坦    时间: 2015-5-11 16:42
您好, 请问关于录像的功能, 能不能实现在服务器录像的同时本地也录像呢? 我看自带的demo服务器录像和本地录像是分开的, 所以有这样的疑惑。。。希望告知,  谢谢哈
作者: 佰锐科技-杨子鳄    时间: 2015-5-11 17:04
目前是不可以的。。但是不同ID,应该可以。这个问题我要问一下
作者: admin    时间: 2015-5-11 21:19
请问关于录像的功能, 能不能实现在服务器录像的同时本地也录像呢?

除了合成流录制不行,其它录制模式都是可以的,有关合成流录制模式请参考:AnyChat音视频录制整体解决方案




欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) Powered by Discuz! X3