我在我的服务器上安装了一个KMS容器,我在我的服务器上下载了kurento hello world java应用程序但是当我使用我的服务器IP地址访问我的java web应用程序时,我必须远程流并且出现以下错误(在firefox中) :
ICE failed, see about:webrtc for more details
在about:webrtc它告诉我没有指定STUN并且没有指定TURN服务器(并且很多以下输出对我来说不是很清楚)问题是我在WebRtcEndpoint.conf.ini上指定了一个STUN服务器
这是我的docker-compose.yml文件:
kurento:
image: fiware/stream-oriented-kurento:latest
volumes:
- ./kurento.conf.json:/etc/kurento/kurento.conf.json:ro
- ./defaultCertificate.pem:/etc/kurento/defaultCertificate.pem:ro
- ./WebRtcEndpoint.conf.ini:/etc/kurento/modules/kurento/WebRtcEndpoint$
ports:
- "8888:8888"
- "8433:8433"
这是我的kurento.conf.json文件:
{
"mediaServer" : {
"resources": {
// //Resources usage limit for raising an exception when an object creatio$
// "exceptionLimit": "0.8",
// // Resources usage limit for restarting the server when no objects are $
// "killLimit": "0.7",
// Garbage collector period in seconds
"garbageCollectorPeriod": 240
},
"net" : {
"websocket": {
"port": 8888,
"secure": {
"port": 8433,
"certificate": "defaultCertificate.pem",
"password": ""
},
//"registrar": {
// "address": "ws://localhost:9090",
// "localAddress": "localhost"
//},
"path": "kurento",
"threads": 10
}
}
}
}
和我的WebRtcEndpoint.conf.ini
; Only IP address are supported, not domain names for addresses
; You have to find a valid stun server. You can check if it works
; usin this tool:
; http://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
stunServerAddress=62.71.2.168
stunServerPort=3478
; turnURL gives the necessary info to configure TURN for WebRTC.
; 'address' must be an IP (not a domain).
; 'transport' is optional (UDP by default).
; turnURL=user:password@address:port(?transport=[udp|tcp|tls])
;pemCertificate is deprecated. Please use pemCertificateRSA instead
;pemCertificate=<path>
;pemCertificateRSA=<path>
;pemCertificateECDSA=<path>
并且证书已生成:
certtool --generate-privkey --outfile defaultCertificate.pem
echo 'organization = your organization name' > certtool.tmpl
certtool --generate-self-signed --load-privkey defaultCertificate.pem \
--template certtool.tmpl >> defaultCertificate.pem
sudo chown kurento defaultCertificate.pem
我继续https://localhost:8433/kurento验证证书
当我用docker-compose启动kurento容器时,我可以在日志上看到我的conf。文件已加载:
kurento_1 | "websocket":
kurento_1 | {
kurento_1 | "port": "8888",
kurento_1 | "secure":
kurento_1 | {
kurento_1 | "port": "8433",
kurento_1 | "certificate":
"defaultCertificate.pem",
kurento_1 | "password": ""
kurento_1 | },
kurento_1 | "path": "kurento",
kurento_1 | "threads": "10"
kurento_1 | }
.....
kurento_1 | "WebRtcEndpoint":
kurento_1 | {
kurento_1 | "stunServerAddress": "62.71.2.168",
kurento_1 | "stunServerPort": "3478",
kurento_1 | "configPath":
"\/etc\/kurento\/modules\/kurento"
kurento_1 | },
我以:
启动hello world示例sudo mvn compile exec:java -Dkms.url=wss://localhost:8433/kurento
此时一切似乎都正常,没有错误输出。
当我尝试使用https://:8443从客户端访问我的Web应用程序时,网页已正确加载并可以启动流。但我没有远程流,并且在开头打印出错误。
更新1
我从
更改了docker-compose.yml中kurento图像的版本image: fiware/stream-oriented-kurento:latest
为:
image: fiware/stream-oriented-kurento:6.6.0
现在它有时会起作用。我有相同的错误( ICE失败,请参阅:webrtc了解更多详细信息)但是如果我多次重新加载页面,它会在重新加载后结束。关于我做错了什么的任何建议?
更新2
我意识到当Web应用程序开始工作时(多次重新加载后),下次访问Web应用程序时,它将始终有效,直到我重新启动KMS。然后我必须多次重新加载页面以获得远程流。
现在我意识到,我再次尝试使用 image:fiware / stream-oriented-kurento:latest ,它具有完全相同的行为。我必须多次重新加载页面以使其工作。我不知道为什么会这样,任何想法?
答案 0 :(得分:2)
考虑到你的问题,我觉得双方都没有正确创建ICE候选人。
您是否在webApplication(JS)中配置了STUN / TURN? 如果您尚未修改示例,我认为默认情况下未配置
检查options.configuration。例如:
var options = {
........ some options here ....
configuration: {
iceServers:[{
"url": "turn:xxx.xxx.xxx:port",
"username": "xxxxxx",
"credential": "xxxxxx"
}]
}
webRtcPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerSendrecv(options,<callback-here>);
您能为Firefox ICE候选生成和KMS ICE生成提供日志吗?
此外,KMS在与教程相同的机器中运行并运行?