- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
根据文档使用 updateStream 这个接口,修改一个合成流布局
参数如下: (结果始终返回500)
[{
"op": "replace",
"path": "/info/layout",
"value": [{
"stream": "816759984407917400",
"region": {
"id": 3,
"shape": "rectangle",
"area": {
"left": "0/2",
"top": "0/2",
"width": "1/2",
"height": "1/2"
}
}
}, {
"stream": "30468870494800184",
"region": {
"id": 2,
"shape": "rectangle",
"area": {
"left": "1/2",
"top": "0/2",
"width": "1/2",
"height": "1/2"
}
}
}, {
"stream": null,
"region": {
"id": 1,
"shape": "rectangle",
"area": {
"left": "0/2",
"top": "1/2",
"width": "1/2",
"height": "1/2"
}
}
}, {
"stream": null,
"region": {
"id": 4,
"shape": "rectangle",
"area": {
"left": "1/2",
"top": "1/2",
"width": "1/2",
"height": "1/2"
}
}
}]
}]
- Tags:
- HTML5
- JavaScript*
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
这里updatestream请求的request body我发现三处错误:一是,所有的id都是number,在rest文档中你会发现id只支持string;
二是, area中的结构要合理,譬如第一个stream的布局为左上角,长宽都是1/2大小,这里的left代表的是stream距离左边边框的距离,同理top是距离上边框的距离,你这里的0/2是不符合预期的,你可以left和top都为0
三是,如果没有stream需要布局,你就没必要增加value这个数组的成员了,stream为null的是可以删除的
这是我写的一个例子,你看下共同进步:
发送PATCH stream 请求 PATCH {url}:3001/rooms/{roomId}/streams/{roomId}-common
示例Request Body如下:
[{ "op": "replace", "path": "/info/layout", "value": [{ "stream": "990136654598519300", "region": { "id": "1", "shape": "rectangle", "area": { "left": "0", "top": "0", "width": "1/2", "height": "1/2" } } }, { "stream": "362529957792808260", "region": { "id": "2", "shape": "rectangle", "area": { "left": "1/2", "top": "1/2", "width": "1/2", "height": "1/2" } } }, { "stream": "308990862608290000", "region": { "id": "3", "shape": "rectangle", "area": { "left": "1/2", "top": "0", "width": "1/2", "height": "1/2" } } }] }]
谢谢
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
我使用manage_console更新布局不生效,重启服务器才生效,每次更新布局都需要重启服务器吗?。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
通过manage_console更新页面也就是通过3300/console页面来更新布局的,不仅仅更新布局,3300/console页面上的其他操作也可以用以下方法来使其生效: 第一种,就是你发现的重启服务器,其原理就是重启服务器会把这个房间的所有操作都停止。 第二种就是直接从原理出发,把这个room上所有操作都停止,譬如有rtmp操作的调用rest API中的delete rtmp;有rtsp操作的调用rest API中的delete rtsp;有recording操作的调用rest API中的delete recording;有各种客户端接入此room的用户,可以让登录此房间的所有用户调用jssdk中leave方法。 以上是我总结的3300/console修改后使其生效的方法,有什么不完善的地方,及时指出,我们共同进步。 谢谢
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
通过manage_console更新页面也就是通过3300/console页面来更新布局的,不仅仅更新布局,3300/console页面上的其他操作也可以用以下方法来使其生效: 第一种,就是你发现的重启服务器,其原理就是重启服务器会把这个房间的所有操作都停止。 第二种就是直接从原理出发,把这个room上所有操作都停止,譬如有rtmp操作的调用rest API中的delete rtmp;有rtsp操作的调用rest API中的delete rtsp;有recording操作的调用rest API中的delete recording;有各种客户端接入此room的所有用户删除,可以让登录此房间的所有用户调用jssdk中leave方法。 以上是我总结的3300/console修改后使其生效的方法,有什么不完善的地方,及时指出,我们共同进步。 谢谢
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@Zhao, Jinpeng (Intel) 您好,请问下怎么在外网情况下使用外网IP,内网使用内网IP(当前的做法是修改portal.toml ip地址为外网)
修改 webrtc_agent network_interfaces = [{name = "eth0", replaced_ip_address = "外网IP"}] 好像并不能实现内外网切换。3.5 版本这样配置同样的网络环境下只使用外网访问是正常的,4.1 同样的配置,同样的网络环境使用内网,外网均报错 ics.js:756 Uncaught (in promise) Error: ICE connection failed or closed.
at new t (ics.js:756)
at t.value (ics.js:534)
at RTCPeerConnection._pc.oniceconnectionstatechange (ics.js:539)
t @ ics.js:756
value @ ics.js:534
_pc.oniceconnectionstatechange @ ics.js:539
希望回复,谢谢
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
mcu所在的服务器是两个IP(网口)?还是一个IP(内网映射到外网)?
首先上述配置不能实现内外网切换。我看你两个模块的配置都是外网ip,所以只能用外网ip登录mcu,内网是不行的。
如果你是两个网口,可以尝试不配置任何东西,在内网用内网ip登录,在外网用外网ip登录,
如果你是一个ip,内网映射外网。可以尝试只配置外网ip,和你上述配置一样,网口名注意别写错了,这样内外网的client都可以用外网ip登录了;也可以尝试起两个mcu,其中一个所有模块都起来,并配置你上述配置,另外一个只启动webrtc_agent和portal两个模块,并且配置你上述配置的内网地址,这样内网ip和外网ip都能登录了,这个同样适用于双网卡的情况。
建议,配置成外网地址,这样只用外网地址登录,不用损耗多余的资源且简单明了
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Zhao, Jinpeng (Intel)
非常感谢,配置外网,并开放UDP 端口,以及可以正常使用了。另外,想了解下 一个MCU编码能力不够,如何通过增加MCU编码服务器,而不修改API调用方式进行多个编码单元集群使用呢?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
mcu支持分布式部署,上述问题可以增加video_agent来解决
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Zhao, Jinpeng (Intel) 使用 rest 接口 updateStream 修改 音视频状态后, js 客户端用什么消息可以接受到变化呢? 尝试使用单流对象监听 update activeaudioinputchange 都没反应。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
当用rest接口updateStream使audio、video的状态改变为有效或者无效的时候,会触发Publication和Subscription中的mute或者unmute事件。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
then((subscription) => {
subscription.addEventListener("mute", (event) => {
console.log('Subscription mute: ' + event);
})
是这样使用的吗? 通过 rest 修改 subscript audio 和 video 音视均被关闭 但是 mute 消息始终能接受到。是不是用法不对呢,看文档也没找到相关用法。
使用非mix 进行 subscribe 并监听 mute 是可以正常接受到消息的。(如果每个子流都subscribe 合成流也进行 subscribe 是不是占用n+1路的带宽呢)
我使用的合成场景,需要知道合成中某个流通过rest关闭了视频的消息。 希望回复,谢谢!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
首先合成流(mix流)中的一个流通过rest改变了audio或video的状态时,都会触发mute或unmute事件的
也就是说,上述用法是正确的,也能达到你的目的(某流改变状态后,你能得到信息)。当然你可以使用event.kind来输出具体改变了audio还是video的状态。
当通过rest关闭audio和video后,Publication和Subscription调用mute方法还是可以接受到mute事件的。
mute事件的定义是client/remote停止发送audio/video时触发
unmute事件的定义是client/remote继续发送audio/video时触发
所以无论是restAPI中改变某个流的video或audio的状态,还是Publication和Subscription调用mute方法,都会触发mute/unmute
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
then((subscription) => {
subscriptionForMixedStream = subscription;
$('.remote video').get(0).srcObject = stream.mediaStream;
subscription.addEventListener('error', (err) => {
console.log('Subscription error: ' + err.error.message);
})
subscriptionForMixedStream.addEventListener("mute", (event) => {
console.log('Subscription mute: ' + event);
})
使用 subscriptionForMixedStream 监听 mute 用 rest 控制 subscrip 里面的音视值,收不到任何消息。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
sub的是mix流还是forward流?forward流能够触发mute事件,mix的话不能触发mute事件。
1、then后的括号貌似少了一个,2、subscription没有error这个事件吧。重新sub一个forward流,然后试试以下代码:
.then((subscription) => {
subscription.addEventListener("mute", (event) => {
console.log(`Subscription ${subscription.id} muted + event.kind`);
})
)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Zhao, Jinpeng (Intel)
您好,动态切换布局按照您说的方式已经调测正常了。我想请问下,调用修改布局后,如何恢复到默认布局呢?(默认是自动变化,但是设置后,指定2个画面,大于2个视频就无法显示出来了)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Zhao, Jinpeng (Intel) wrote:这里updatestream请求的request body我发现三处错误:一是,所有的id都是number,在rest文档中你会发现id只支持string;
二是, area中的结构要合理,譬如第一个stream的布局为左上角,长宽都是1/2大小,这里的left代表的是stream距离左边边框的距离,同理top是距离上边框的距离,你这里的0/2是不符合预期的,你可以left和top都为0
三是,如果没有stream需要布局,你就没必要增加value这个数组的成员了,stream为null的是可以删除的
这是我写的一个例子,你看下共同进步:
发送PATCH stream 请求 PATCH {url}:3001/rooms/{roomId}/streams/{roomId}-common
示例Request Body如下:
[{ "op": "replace", "path": "/info/layout", "value": [{ "stream": "990136654598519300", "region": { "id": "1", "shape": "rectangle", "area": { "left": "0", "top": "0", "width": "1/2", "height": "1/2" } } }, { "stream": "362529957792808260", "region": { "id": "2", "shape": "rectangle", "area": { "left": "1/2", "top": "1/2", "width": "1/2", "height": "1/2" } } }, { "stream": "308990862608290000", "region": { "id": "3", "shape": "rectangle", "area": { "left": "1/2", "top": "0", "width": "1/2", "height": "1/2" } } }] }]
谢谢
V4.2.1版本,使用http request请求进行LayoutUpdate,服务器返回OK,但是布局的行为和默认房间的布局行为相同,也就是说自己设置的布局位置不生效,请问还需要进行其他设置吗?
谢谢。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
其他设置不需要,我这边是成功的,你是按照我写的body发送的请求吗?流id改了吗?

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page