4.0遇到的问题

4.0遇到的问题

1.video-agent 软硬件问题   启动mcu与vca卡中的video-agent,房间开始使用MCU中的video-agent模块,手动关闭该模块,自动切换到vca卡中的video-agent可以看到cpu明显上升,混合流画面停止,刷新后混合流画面不显示,需启动MCU中video-agent才能正常显示,若开始使用的是VCA卡中的video-agent亦是同样的情况,请帮忙复现

2.updateRoom更改房间配置返回500错误,是接口调用失败?看到restapi中有updateRoomPartially,如何更改房间内的配置?,3300/console中配置修改后apply能否将配置立即生效而不需重新启动服务

3.webrtc-agent/agent.toml中的stunserver,ip和端口设置未生效,iceServer在创建conference如何添加stunServer与turnServer,在demo中使用如下代码抓包未启作用

 conference = new Ics.Conference.ConferenceClient(
        {
                iceServers: [{
                        urls: "stun:xxx:3478"
                }, {
                        urls: [
                                "turn:xxx:3478?transport=udp",
                                "turn:xxx:3478?transport=tcp"
                        ],
                        credential: "123456",
                        username: "aaa"
                }]
        });

期待回复,感谢!!

33 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hi, 关于问题1,我们这边没能复现,请回答以下问题:

a VCA卡的image版本

b. VCA卡使用的video agent是不是4.0的版本
c. video_agent中rabbit host设置的是不是跟其他MCU模块一样的host地址

d video agent中的hardwareAcceletrated是否设置为true

e 看到CPU明显上升是大概多少,混合流画面不显示之后MCU的log里有没什么异常信息,请提供相关的log信息

问题2: updateRoomPartially API这个版本不支持,请使用updateRoom更改房间配置。3300/console中配置修改后如果房间里没有任何流连接新的配置会在6s后生效

问题3:4.0设置iceServer的设置接口有变化,请参照下面方式进行,具体请参考文档说明:

var conference = Woogeen.ConferenceClient.create({iceServers : [{

        urls: "turn:xx.xx.xx.xx:xx?transport=tcp",

       credential: "xxx",

       username: "xxx"

        }]});

 

VCA的image版本  vca_persistent_centos7.2_1.3.48.img   

hardwareAcceletrated设置为true 

CPU上升单核35% GPU 2% ,日志无异常信息

关闭video-agent自动切换CPU上升,等待一段时间后刷新混合流画面出现,video-agent切换需要等待的时间? Centos必须使用7.3?

 

var config = { 

  publishLimit: -1,

   userLimit: -1  

};

updateRoom(myRoom,config);更新房间配置信息返回500错误,config必须是整个房间的配置,还是调用的方法有问题?

感谢回复!

vca卡跟MCU是在同一个网络环境下吗?切换慢的话大概等待多久才出现的画面?client是用什么客户端publish stream的,请确认继续增加用户publish跟subscribe CPU是否还是快速上升,centos不一定要是7.3. 

updateRoom中的config必须是整个房间的配置信息

video-agent自动切换问题应该是我配置的webrtc-agent/webrtc外网映射出现的问题,使用内网时现在已经能正常切换工作

客户端为chrome最新版本66.0.3359.139

当MCU工作在NAT后时,portal/portal.toml的ip设置为映射的外网地址,端口需与映射的端口保持一致,webrtc中network_interface=[{name = "映射的端口,replace_address = "映射的外网地址""}],udp端口为55535-55536仅开放两个端口,该配置会偶先刷新不显示混合流画面,日志无错误信息,配置有问题?

updateRoom当房间内有流时修改背景颜色与布局layout,查看响应参数是生效的,但刷新后画面依旧是之前的配置,updateRoom时,房间内不允许有流的连接?

感谢!

4.0 怎么创建 H246 的 流呢? 测试步骤 使用chrome 采集的摄像头调用streaming-outs 返回 500 ,使用streaming-ins 方式添加rtmp方式,在调用streaming-outs 时可以正常推流的, 调试观察 使用rtmp方式,h264 aac 使用 浏览器采集摄像头方式 vp8 opus 但是新接口没找到怎么改变编码格式

房间内有流时,forbidSub,forbidPub调用后感觉没起作用,混合流画面依旧显示

@Daghe 当有多个连接时, webrtc agent需要使用的udp端口数也会随着增加,两个udp端口不够用,请开放更多的udp端口如果有多个连接。updateRoom如果要生效的话要求房间内没有流6s之后才会生效。forbidSub, forbidPub对已经存在的流不起作用,只对后面加入的流起作用

@yt 我理解你的问题是如何publish h264的流,这个可以在调用publish API的时候指定videoCodec, 推流的时候可以在调用streaming-outs的restful API的json data里指定videoCodec

@Daghe 前面关于iceserver设置的示例是旧的版本,请参照文档使用下面新的版本:

 const conference = new Ics.Conference.ConferenceClient({

    rtcConfiguration: {

      iceServers: [{

        urls: ["turn:xx.xx.xx.xx?transport=tcp"],

        credential: "xxx",

        username: "xxx"

      }]

    }

  });

我改怎么使用streaming-outs 将mix 流推到rtmp 服务上呢? 

"info": {

"label": "common",

"activeInput": "648025971757003600",

....

 

 

是使用activeInput  这个流ID吗?

 

使用非合成的摄像头流,也是同样的错误,是使用方法不对吗?

"id": "184603000989775680",

"type": "forward",

"media": {

"audio": {

"status": "active",

"format": {

"codec": "opus",

"sampleRate": 48000,

"channelNum": 2

},

"source": "mic",

},

"video": {

"status": "active",

"format": {

"codec": "vp8"

},

"source": "camera",

"parameters": {

"resolution": {

"width": 640,

"height": 480

},

"framerate": 30

},

 

}

但是始终返回  500 错误

 

日志查看

2018-05-07 11:40:53,107  - INFO: woogeen.AVStreamOut - Closing rtmp://192.168.1.138/live/5aebb3dc73f1432f009975cd-common
2018-05-07 11:40:53,113  - INFO: woogeen.AVStreamOut - Closed

 

另外:关于forbidSub,forbidPub 设置后,是对后面进入该room的人员的限制么,包括任何role? 使用 presenter 

测试,确实没发现有什么作用。

 

@yt, xia 

1. 关于forbidsub与forbidpub,是禁用的是指定的单个用户的sub及pub权限,是起效的。

使用如下场景,使用samplepage,默认是会sub mix流的。之后调用forbidsub接口,成功返回后,不要刷新页面,被指定的用户再调用sub相关的接口都不会成功,而是得到一个跟授权相关的错误。也可以让被指定的用户unsub mix流,之后再次sub mix流,这时sub也是不会成功的。

forbidsub或forbidpub,是对单个用户的行为,不能够作用到新增加的用户。刷新页面会有用户的退出和新加入发生,这时的用户标识已经不同了, 所以也不会再起作用

2. 关于如何使用streaming-outs推流到rtmpserver

首先,调用getStreams接口获取到房间中的流信息,一般第一个为房间中的mix流,信息类似:

{
        "id": "5adee0cb367b2758669bed9b-common",
        "type": "mixed",
        "media": {
            "audio": {
                "format": {
                    "channelNum": 2,
                    "sampleRate": 48000,
                    "codec": "opus"
其中的id就是streaming-out接口中使用的流ID

之后调用streaming-out接口,调用要传入以下参数:

{

"url": "rtmpserver://streamurl",

"media": {

    "audio": { "from": "mixstreamid" },

    "video": { "from": "mixstreamid",

                     "parameters":{ "keyFrameInterval": 2}  // the parameter object for video, can give resolution, frameRate etc

                  }

    }

}

我们使用这样的参数调用可以正确工作

@Xie, Wenlong (Intel)  非常感谢, 将 hardware 选项关闭后,可以正常使用streaming-outs 接口了。forbidsub/forbidpub 也可以了。硬件编码,不知道是什么原因,不支持h264吗?

@yt, xia 关于你说的硬件不能够进行H264编码的问题,希望能提供一些具体的环境参数,方便我们这边重现和模拟

1.你使用的硬件是什么?VCA硬件还是有硬件加速的机器?

2.如果是VCA硬件,那VCA硬件的版本和上面运行的image的版本分别是什么?

3.如果是硬件加速的机器,那使用的MSDK版本是什么?机器的CPU型号等等机器信息是什么?

 

@Xie, Wenlong (Intel)

   Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz

  我看说明好像只能支持到  第4代及以上

@Xie, Wenlong (Intel)  会有和  3.5 一样的接口使用说明么。很多参数不知道怎么传,和3.5 差别很大,例如本地摄像头怎么修改分辨率之类的,录制的时候选择mp4无法录制,设置json会报错,也不知该怎么传。

videoFrom: {

codec: 'h264'

},

audioFrom: {

codec: 'aac'

}

@Qiujiao W. (Intel)

1.现在混合流画面没有全屏的按钮?之前的版本是支持全屏的

2.录制的文件名如何改变,而不是默认的startRecording返回的id,录制时是否能指定keyFrameRate等视频参数

3.updateRoomPartially是否会再之后的版本修改,能否实现修改(画面布局)立即生效而不是房间内必须没有流?

期待回复,谢谢

 

@ yt, xia

4.0也是有关于RESTful api的文档说明的,后面会上线,请关注官方页面的相关信息。

可以下载文档包,查看关于各个接口的使用说明。

另外,使用硬件模式,有两种方式:1.使用支持硬件加速的cpu,并且需要安装相应的MSDK软件包,具体请参考官方页面。2.使用VCA专用硬件进行硬件解码,具体也请参看官方页面的说明。

 

 

@Daghe, 我们提供的是sample page,全屏功能是浏览器提供的接口,需要的话可以自行添加
录制下来的文件名id是固定的, 如果需要修改文件名可以将id记录下来在录制结束之后自行修改文件名

我们有计划在后续版本中支持updateRoomPartially功能,敬请期待

配置实时生效这个我们暂时不会支持

@Xie, Wenlong (Intel)    关于屏幕共享报错问题

const audioConstraintsForMic = new Ics.Base.AudioTrackConstraints(Ics.Base.AudioSourceInfo.SCREENCAST);

const videoConstraintsForCamera = new Ics.Base.VideoTrackConstraints(Ics.Base.VideoSourceInfo.SCREENCAST);

videoConstraintsForCamera.frameRate = 25;

videoConstraintsForCamera.resolution = Resolution;

videoConstraintsForCamera.deviceId = 'jgodoicpeogbcecimafplcnomdkfkipd';

设备ID传的是屏幕共享插件的ID

是否是这样使用的呢,始终都返回错误

 

Failed to create MediaStream, TypeError: Extension ID must be specified for screen sharing on Chrome.

yt, xia

进行屏幕共享,请使用Ics.Base.MediaStreamFactory.createMediaStream(constraints)方法

其中constraints是一个对象,包含以下三个属性:

audio: Ics.Base.AudioTrackConstraints

video: Ics.Base.VideoTrackConstraints

extensionId: extensionid

@Xie, Wenlong (Intel)  如果说只需要纯音频的,或者存视频的方式加入房间该如做呢?

const audioConstraintsForMic = new Ics.Base.AudioTrackConstraints(Ics.Base.AudioSourceInfo.SCREENCAST);

const videoConstraintsForCamera = new Ics.Base.VideoTrackConstraints(Ics.Base.VideoSourceInfo.SCREENCAST);

 

Ics.Base.MediaStreamFactory.createMediaStream(constraints).then(stream => {

mediaStream = stream;

localStream = new Ics.Base.LocalStream(mediaStream, new Ics.Base.StreamSourceInfo('screen-cast', 'screen-cast'));

 

目前通这种方式出现一个问题,在屏幕共享的时候不选择音频报错一个错误:

ics.js:713 Uncaught (in promise) Error: options.audio/video cannot be true or an object if there is no audio/video track in remote stream.

 

T

forbidPub使用后请求成功感觉没起作用,预览画面及混合流画面依旧显示,如何判断forbidPub起作用了?

forbidSub后生效,是否可以自己写permitSub:{audio,true,video:true}; 取消forbidSub

Daghe  请看 Quote #12的说明

 

通过验证:

forbidSub后再sub确实会报错:Uncaught (in promise) unauthorized   permitSub(自己重写权限:audio:true,video:true)后画面能正常显示

forbidPub后无混合流画面,报错Uncaught (in promise) unauthorized ,permitPub 再publish后需再次sub才能看到流画面

@Xie, Wenlong (Intel)   多次验证发现,使用SIP呼叫参数的stream,无法被重复subscribe ,并且也没返回任何错误。

1.测试场景,浏览器先进入room,然后使用SIP 呼叫该room,sip的画面可以正常显示到合成里面,在streamadded 事件里面将sip的流退出合成(有嵌套,因此需要退出),然后重新subscribe 可也是可以正常的,偶尔也会无法显示,几率比较小(没打印错误)。

2. 新用户加入,在 resp.remoteStreams 里面找到 sip相关的流,进行subscribe的时候无法显示,也没打印任何异常日志。是本身就不支持这样的操作吗

 

@yt, xia  关于如何进行video-only的屏幕共享,只要把不需要的多媒体的值设定为false就可以了

如创建video-only的屏幕共享,只要在mediaStreamDeviceConstraints中的audio设置为false。

关于SIP呼叫,我们测试了如下的场景,并没有出现不能够sub的情况。

场景1:

1.user 1 使用sip加入room。此时user1可以加入mix画面,也能够sub到自己的forward流

2.user 2使用chrome加入room。此时mix画面中有user1和user2,user2可以sub user1和user2的forward流,user1也可以成功的sub所有forward流

场景2:

1.user1使用chrome加入room

2.user2使用sip加入room

3.user3使用chrome加入room

以上三个user都可以sub mix流和所有的forward流

 

@Xie, Wenlong (Intel) user2进入房间是通过resp.remoteStreams 找到 stream.origin.startsWith('sip:') 然后进行 conference.subscribe(stream, {

audio: true,

video: true

}.then((

subscription) => {

subscriptionForScreen = subscription;

console.log(subscription)

$('.sip video').get(0).srcObject = stream.mediaStream;

});

 

 

我这边还是不行,不知道什么原因,谷歌版本 66.0.3359.139 ,sip 呼叫参数 

audio:format:{codec: "pcmu"} ,video:format:{codec: "h264"}

@Xie, Wenlong (Intel) 测试发现,SIP入会的画面,经过streaming-outs ,传入sip入会的 流ID  返回成功,但是并不能通过rtmp正常观看

{"id":"716522781352293400","media":{"audio":{"from":"efd3d2a43930","format":{"codec":"aac","sampleRate":48000,"channelNum":2},"status":"active"},"video":{"from":"efd3d2a43930","format":{"codec":"h264"},"status":"active"}},"url":"rtmp://192.168.1.138/live/efd3d2a43930"}

 

查看后台日志  

2018-05-16 09:15:47.755  - INFO: ErizoJS - pid: 26799
2018-05-16 09:15:47.758  - INFO: ErizoJS - Connecting to rabbitMQ server...
2018-05-16 09:15:47.772  - INFO: AmqpClient - Connecting to rabbitMQ server OK, hostPort: { host: 'localhost', port: 5672 }
2018-05-16 09:15:47.813  - INFO: ErizoJS - streaming-36ffdb35bbb0cede0fd7@192.168.1.156_0 as rpc server ready
2018-05-16 09:15:47.816  - INFO: ErizoJS - streaming-36ffdb35bbb0cede0fd7@192.168.1.156_0 as monitor ready
2018-05-16 09:20:27,633  - INFO: woogeen.AVStreamOut - Initial audio options format(AAC_48000_2), sample rate(48000), channels(2), isRtpPacket(0)
2018-05-16 09:20:30,594  - ERROR: woogeen.AVStreamOut - No a/v frames, hasAudio(1) - ready(1), hasVideo(1) - ready(0), timeOutMs 3000
2018-05-16 09:20:30.594  - ERROR: StreamingNode - avstream-out fatal error: No a/v frames
2018-05-16 09:20:30,598  - INFO: woogeen.AVStreamOut - Closing rtmp://192.168.1.138/live/efd3d2a43930
2018-05-16 09:20:30,598  - INFO: woogeen.AVStreamOut - Closed
2018-05-16 09:20:30.638  - WARN: ErizoJS - Exiting on SIGTERM

@Xie, Wenlong (Intel) 您好,使用streaming-ins方式(tmp://live.hkstv.hk.lxdns.com/live/hks)sub mix流画面能够正常出来,但是声音比较失真,有点颤音。这个情况如何处理?

@tony 可以贴下您的streaming-ins 传参方式吗?

我这么传递的提示500.

curl -X POST -H "Content-Type:application/json"  127.0.0.1:3004/rooms/5b1f8d16e293076181a617e5/streaming-ins/  -d '{"connection":{"url":"rtmp://127.0.0.1/live/streamname"},"media":{"audio":true,"video":true}}' -v

错误码如下:

<pre>TypeError: Cannot read property &#39;protocol&#39; of undefined<br> &nbsp; &nbsp;at Object.startStreamingIn (/opt/rtc/mcu/4.0/extras/basic_example/rest.js:1327:37)<br> &nbsp; &nbsp;at /opt/rtc/mcu/4.0/extras/basic_example/samplertcservice.js:337:15<br> &nbsp; &nbsp;at Layer.handle [as handle_request] (/opt/rtc/mcu/4.0/extras/basic_example/node_modules/express/lib/router/layer.js:95:5)<br> &nbsp; &nbsp;at next (/opt/rtc/mcu/4.0/extras/basic_example/node_modules/express/lib/router/route.js:137:13)<br> &nbsp; &nbsp;at Route.dispatch (/opt/rtc/mcu/4.0/extras/basic_example/node_modules/express/lib/router/route.js:112:3)<br> &nbsp; &nbsp;at Layer.handle [as handle_request] (/opt/rtc/mcu/4.0/extras/basic_example/node_modules/express/lib/router/layer.js:95:5)<br> &nbsp; &nbsp;at /opt/rtc/mcu/4.0/extras/basic_example/node_modules/express/lib/router/index.js:281:22<br> &nbsp; &nbsp;at param (/opt/rtc/mcu/4.0/extras/basic_example/node_modules/express/lib/router/index.js:354:14)<br> &nbsp; &nbsp;at param (/opt/rtc/mcu/4.0/extras/basic_example/node_modules/express/lib/router/index.js:365:14)<br> &nbsp; &nbsp;at Function.process_params (/opt/rtc/mcu/4.0/extras/basic_example/node_modules/express/lib/router/index.js:410:3)</pre>

 

streaming-ins传参通过如下可以集成,

curl -X POST -H "Content-Type:application/json"  127.0.0.1:3004/rooms/5b1f8d16e293076181a617e5/streaming-ins/  -d '{"url":"rtmp://127.0.0.1/live/streamname","transport":{"transportProtocol":"tcp","bufferSize":2048},"media":{"audio":true,"video":true}}' -v

这块的参数似乎与官方提供的rest-api 5.4对不上https://software.intel.com/en-us/documentation/intel-collaboration-suite...

Leave a Comment

Please sign in to add a comment. Not a member? Join today