xingshuangs/rtsp-websocket-server

com.github.xingshuangs.iot.exceptions.AuthenticationException: nonce为空

Closed this issue · 1 comments

你好,这个填写rtsp地址后点击打开会报错,是需要改什么吗,这是报错信息
2023-08-09 17:17:18.316 ERROR 4092 --- [nio-8088-exec-1] c.g.x.r.s.controller.WebSocketServer : nonce为空

com.github.xingshuangs.iot.exceptions.AuthenticationException: nonce为空
at com.github.xingshuangs.iot.protocol.rtsp.authentication.DigestAuthenticator.createResponse(DigestAuthenticator.java:80) ~[iot-communication-1.4.1.jar:na]
at com.github.xingshuangs.iot.protocol.rtsp.model.RtspMessageRequest.addCommonRequestHeader(RtspMessageRequest.java:95) ~[iot-communication-1.4.1.jar:na]
at com.github.xingshuangs.iot.protocol.rtsp.model.RtspMessageRequest.toObjectString(RtspMessageRequest.java:74) ~[iot-communication-1.4.1.jar:na]
at com.github.xingshuangs.iot.protocol.rtsp.service.RtspNetwork.readFromServer(RtspNetwork.java:173) ~[iot-communication-1.4.1.jar:na]
at com.github.xingshuangs.iot.protocol.rtsp.service.RtspNetwork.describe(RtspNetwork.java:277) ~[iot-communication-1.4.1.jar:na]
at com.github.xingshuangs.iot.protocol.rtsp.service.RtspNetwork.doAfterConnected(RtspNetwork.java:155) ~[iot-communication-1.4.1.jar:na]
at com.github.xingshuangs.iot.net.client.TcpClientBasic.getAvailableSocket(TcpClientBasic.java:137) ~[iot-communication-1.4.1.jar:na]
at com.github.xingshuangs.iot.net.client.TcpClientBasic.connect(TcpClientBasic.java:109) ~[iot-communication-1.4.1.jar:na]
at com.github.xingshuangs.iot.protocol.rtsp.service.RtspClient.start(RtspClient.java:47) ~[iot-communication-1.4.1.jar:na]
at com.github.xingshuangs.iot.protocol.rtsp.service.RtspFMp4Proxy.start(RtspFMp4Proxy.java:277) ~[iot-communication-1.4.1.jar:na]
at com.github.xingshuangs.rtsp.server.controller.WebSocketServer.openRtspFmp4Proxy(WebSocketServer.java:112) ~[classes/:na]
at com.github.xingshuangs.rtsp.server.controller.WebSocketServer.onMessage(WebSocketServer.java:74) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at org.apache.tomcat.websocket.pojo.PojoMessageHandlerWholeBase.onMessage(PojoMessageHandlerWholeBase.java:80) ~[tomcat-embed-websocket-9.0.38.jar:9.0.38]
at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:402) ~[tomcat-embed-websocket-9.0.38.jar:9.0.38]
at org.apache.tomcat.websocket.server.WsFrameServer.sendMessageText(WsFrameServer.java:119) ~[tomcat-embed-websocket-9.0.38.jar:9.0.38]
at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:502) ~[tomcat-embed-websocket-9.0.38.jar:9.0.38]
at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:301) ~[tomcat-embed-websocket-9.0.38.jar:9.0.38]
at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:133) ~[tomcat-embed-websocket-9.0.38.jar:9.0.38]
at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:82) ~[tomcat-embed-websocket-9.0.38.jar:9.0.38]
at org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:171) ~[tomcat-embed-websocket-9.0.38.jar:9.0.38]
at org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:151) ~[tomcat-embed-websocket-9.0.38.jar:9.0.38]
at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148) ~[tomcat-embed-websocket-9.0.38.jar:9.0.38]
at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:59) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

2023-08-09 17:17:18.318 ERROR 4092 --- [nio-8088-exec-1] c.g.x.r.s.controller.WebSocketServer : 发生错误,sessionId=0,错误信息=Cannot invoke "com.github.xingshuangs.iot.protocol.rtsp.model.base.RtspSessionInfo.getSessionId()" because "this.sessionInfo" is null
2023-08-09 17:17:18.322 INFO 4092 --- [nio-8088-exec-1] c.g.x.i.p.rtsp.service.RtspFMp4Proxy : 关闭FMp4代理服务端
2023-08-09 17:17:18.322 INFO 4092 --- [nio-8088-exec-1] c.g.x.r.s.controller.WebSocketServer : 有一连接关闭!,当前在线人数为0,sessionId=0

是不是摄像头rtsp地址中账号和密码写错了,同时也可以添加下面代码,将交互信息打印出来看看

RtspClient client = new RtspClient(uri, authenticator, ERtspTransportProtocol.UDP);
// 这一行
client.onCommCallback(x-> System.out.println(x));

正常信息打印是这样的,nonce有值的,你这里没有nonce值才报错

RTSP/1.0 401 Unauthorized
CSeq: 3
WWW-Authenticate: Digest realm="IP Camera(10789)", nonce="6b9a455aec675b8db81a9ceb802e4eb8", stale="FALSE"
Date:  Mon, Jan 29 2018 16:56:47 GMT

也可以加qq群沟通,QQ群:759101350