设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: 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. }
复制代码
可以改造成视频参数由函数的参数传递。
若传的是桌面共享的视频流号,且分辨率设置得跟显示器的分辨率一致,则会整个桌面共享出去,绿框会消失(在打开桌面共享流之前调用)


回复 支持 反对

使用道具 举报

5

主题

18

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2017-12-21 13:33:54 | 显示全部楼层
佰锐科技-梁国桦 发表于 2017-12-20 17:59
以JavaScript代码为例,我简略说说多路音视频输入(含桌面共享)的步骤:
1、在初始化之后,设置启用桌面 ...

您好,我现在以实现同时输出两路视频流,还有个问题,录制视频文件时怎么选择录制桌面共享的视频流呢,用什么接口,还有录桌面共享的视频时能否录制同时把两个客户端对讲的声音同时录进去呢?
回复 支持 反对

使用道具 举报

2

主题

336

帖子

1243

积分

金牌会员

Rank: 6Rank: 6

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

根据上面提到的第2步  第3步可以获取到桌面共享的视频流  在录制桌面共享的同时 可以把两个客户端对讲的声音同时录制进去
回复 支持 反对

使用道具 举报

5

主题

18

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2017-12-21 14:48:14 | 显示全部楼层
您没明白我的意思,我本地是输出了两个视频流的,一个是摄像头的视频,还有一个是共享桌面的流,现在用StreamRecordCtrlEx(dwSelfId, 1, 20,20,600,400, 0, "")录制视频的时候是录制的摄像头那一路流,我想知道的是怎么切换到录制屏幕共享的那路流。并且连同摄像头对讲的声音一并录到视频中去。
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

5

主题

18

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2017-12-21 16:55:49 | 显示全部楼层
佰锐科技-梁国桦 发表于 2017-12-21 16:26
两个客户端是包括自己和对方?

首先,我实现客户端与其他终端视频对讲,客户端显示双方摄像头的实时画面,同时我在输出一个桌面共享的视频流,然后把这个桌面共享的视频流录制成视频文件。还是刚才的问题,本地输出两路视频流,能选择录制指定的流的视频文件么。能留个您的qq么。
回复 支持 反对

使用道具 举报

发表于 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
回复 支持 反对

使用道具 举报

5

主题

18

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2017-12-22 11:12:45 | 显示全部楼层
2016-12-13 多路视频流合成录制时,支持选择指定的流进行录制
http://bbs.anychat.cn/forum.php? ... &fromuid=259536
(出处: AnyChat技术支持论坛)
录像的API接口为:BRAC_StreamRecordCtrlEx,该接口的最后一个参数“lpUserStr”为一个JSON字符串,可以通过该参数来控制录制的行为,包括指定录像文件名,"{'filename':'myname.mp4'}"。

新版本(AnyChat r6424)提供了新的功能特性,本次增加“streamlist”参数(JSON对象数组),可以通过该参数来控制录制的视频流,JSON格式定义如下:
{
    "streamlist": [
        {
            "userid": 100,
            "streamindex": 0
        },
        {
            "userid": 101,
            "streamindex": 1
        }
    ]
}

这个streamlist参数是怎么用的,放到BRAC_StreamRecordCtrlEx最后一个参数json里边去么,可以跟“filename”并列使用么
回复 支持 反对

使用道具 举报

2

主题

336

帖子

1243

积分

金牌会员

Rank: 6Rank: 6

积分
1243
发表于 2017-12-22 11:31:36 | 显示全部楼层
Cris 发表于 2017-12-22 11:12
2016-12-13 多路视频流合成录制时,支持选择指定的流进行录制
http://bbs.anychat.cn/forum.php?mod=viewt ...

你好  可以的,filename跟streamlist同级!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-30 08:21 , Processed in 0.175512 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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