设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
楼主: Cris
打印 上一主题 下一主题

SDK有实现客户端录屏的接口么。?

[复制链接]

10

主题

253

帖子

1405

积分

金牌会员

Rank: 6Rank: 6

积分
1405
楼主
发表于 2017-12-20 17:59:35 | 显示全部楼层
本帖最后由 佰锐科技-梁国桦 于 2017-12-20 19:08 编辑

以JavaScript代码为例,我简略说说多路音视频输入(含桌面共享)的步骤:
1、在初始化之后,设置启用桌面共享
  1. BRAC_SetSDKOption(BRAC_SO_CORESDK_SCREENCAMERACTRL, 1);
复制代码
2、枚举视频设备(用于桌面共享的虚拟摄像头一般在数组的最后一个;第2、3、4步可在进入房间后执行)
  1. videoCaptureList = BRAC_EnumDevices(BRAC_DEVICE_VIDEOCAPTURE);
复制代码
3、把获取的视频设备分别设置不同的视频流号(这里例子用for循环来设置,从0开始设置流号)
  1. for(var i=0; i<videoCaptureList.length; i++) {
  2.         BRAC_SetUserStreamInfo(mSelfUserId, i, BRAC_SO_LOCALVIDEO_DEVICENAME, videoCaptureList[i]);
  3. }
复制代码
4、设置绑定视频流显示位置和开启视频流
  1. // 设置视频流显示位置(由最后一个参数传入流号)
  2. // 把0号流显示在AnyChatLocalVideoDiv0上,其他流号亦然;要设置多个视频流显示位置就调用多次,每次传不同的div、objectId和视频流号即可
  3. BRAC_SetVideoPosEx(mSelfUserId, document.getElementById("AnyChatLocalVideoDiv0"), "ANYCHAT_VIDEO_LOCAL_0", 0);

  4. // 打开本地的0号流(由第三个参数传入流号)
  5. BRAC_UserCameraControlEx(mSelfUserId, 1, 0, 0, "");
复制代码
以上就是多路音视频的显示步骤。

设置某号流视频参数的方法:
  1. // deviceIdx为传入的视频流号
  2. function videoStreamParamsSetting(deviceIdx) {
  3.         // 设置本地视频编码的码率(如果码率为0,则表示使用质量优先模式)
  4.         BRAC_SetUserStreamInfo(-1,deviceIdx,BRAC_SO_LOCALVIDEO_BITRATECTRL,bitRate);
  5.         
  6.         // 设置本地视频采集分辨率
  7.         BRAC_SetUserStreamInfo(-1,deviceIdx,BRAC_SO_LOCALVIDEO_WIDTHCTRL, videoWidth);
  8.         BRAC_SetUserStreamInfo(-1,deviceIdx,BRAC_SO_LOCALVIDEO_HEIGHTCTRL, videoHeight);

  9.         // 设置本地视频编码的帧率
  10.         BRAC_SetUserStreamInfo(-1,deviceIdx,BRAC_SO_LOCALVIDEO_FPSCTRL,fps);

  11.         // 设置本地视频编码的关键帧间隔
  12.         BRAC_SetUserStreamInfo(-1,deviceIdx,BRAC_SO_LOCALVIDEO_GOPCTRL, gop);

  13.         // 让视频参数生效
  14.         BRAC_SetUserStreamInfo(-1,deviceIdx,BRAC_SO_LOCALVIDEO_APPLYPARAM,1);        
  15. }
复制代码
可以改造成视频参数由函数的参数传递。
若传的是桌面共享的视频流号,且分辨率设置得跟显示器的分辨率一致,则会整个桌面共享出去,绿框会消失(在打开桌面共享流之前调用)


回复 支持 反对

使用道具 举报

沙发
发表于 2017-12-21 16:26:37 | 显示全部楼层
Cris 发表于 2017-12-21 13:33
您好,我现在以实现同时输出两路视频流,还有个问题,录制视频文件时怎么选择录制桌面共享的视频流呢,用 ...

两个客户端是包括自己和对方?
回复 支持 反对

使用道具 举报

板凳
发表于 2017-12-21 22:47:16 | 显示全部楼层
Cris 发表于 2017-12-21 16:55
首先,我实现客户端与其他终端视频对讲,客户端显示双方摄像头的实时画面,同时我在输出一个桌面共享的视 ...

可以采用服务器合成流录制的方式。

开始录制代码:
  1. BRAC_StreamRecordCtrlEx(-1, 1, 0x1b37, 0, "");
复制代码
结束录制代码:
  1. BRAC_StreamRecordCtrlEx(-1, 0, 0x1b37, 0, "");
复制代码
回复 支持 反对

使用道具 举报

地板
发表于 2017-12-21 22:57:11 | 显示全部楼层
用合成流录制的方式,其中“0x1b37”包含了服务器录制、合成流录制、混合房间内用户音视频录制、并列模式录制、触发本地回调等。
该种录制方式会把房间内所有的视频流、音频流都合成在一起(视频流包括自己和其他人的视频流、桌面共享流),然后由于采用服务器录制,所以必须部署视频服务器。

录像服务器的部署请参考:
Windows:http://bbs.anychat.cn/forum.php?mod=viewthread&tid=20
Linux:http://bbs.anychat.cn/forum.php?mod=viewthread&tid=943
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 09:57 , Processed in 0.109117 second(s), 20 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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