OpenVidu / openvidu

OpenVidu Platform main repository

Home Page:https://openvidu.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

publishVideo java.lang.NullPointerException error

seungsunkim opened this issue · comments

I use Unity width Openvidu 2.21.0
call publishVideo with JSON
JSON message is
{"jsonrpc":"2.0","method":"publishVideo","params":{"sdpOffer":"v=0\r\no=- 47699862964267331 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=msid-semantic: WMS\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:+Bz/\r\na=ice-pwd:zO5f5zYKCX30BE2hUSoOZYVT\r\na=ice-options:trickle\r\na=fingerprint:sha-256 AA:0E:C7:92:2E:7E:A9:62:E2:99:C6:5C:54:EB:8D:30:05:C8:5B:56:DA:6C:63:6B:63:F7:BE:4F:0B:C3:AE:E1\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=sendrecv\r\na=msid:- eabe6efa-a1d7-4f1c-987b-694ee057473f\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:102 ILBC/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:112 telephone-event/32000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:165633618 cname:b/VQczLsGzFAOmwF\r\na=ssrc:165633618 msid: eabe6efa-a1d7-4f1c-987b-694ee057473f\r\na=ssrc:165633618 mslabel:\r\na=ssrc:165633618 label:eabe6efa-a1d7-4f1c-987b-694ee057473f\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 127 124 125\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:+Bz/\r\na=ice-pwd:zO5f5zYKCX30BE2hUSoOZYVT\r\na=ice-options:trickle\r\na=fingerprint:sha-256 AA:0E:C7:92:2E:7E:A9:62:E2:99:C6:5C:54:EB:8D:30:05:C8:5B:56:DA:6C:63:6B:63:F7:BE:4F:0B:C3:AE:E1\r\na=setup:actpass\r\na=mid:1\r\na=extmap:2 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 urn:3gpp:video-orientation\r\na=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:10 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=sendrecv\r\na=msid:- 03a928d0-888b-477c-9afc-7cfaa773d83d\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=fmtp:98 x-google-profile-id=0\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 multiplex/90000\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 transport-cc\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=fmtp:100 acn=VP9;x-google-profile-id=0\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:127 red/90000\r\na=rtpmap:124 rtx/90000\r\na=fmtp:124 apt=127\r\na=rtpmap:125 ulpfec/90000\r\na=ssrc-group:FID 1494552323 3048759412\r\na=ssrc:1494552323 cname:b/VQczLsGzFAOmwF\r\na=ssrc:1494552323 msid: 03a928d0-888b-477c-9afc-7cfaa773d83d\r\na=ssrc:1494552323 mslabel:\r\na=ssrc:1494552323 label:03a928d0-888b-477c-9afc-7cfaa773d83d\r\na=ssrc:3048759412 cname:b/VQczLsGzFAOmwF\r\na=ssrc:3048759412 msid: 03a928d0-888b-477c-9afc-7cfaa773d83d\r\na=ssrc:3048759412 mslabel:\r\na=ssrc:3048759412 label:03a928d0-888b-477c-9afc-7cfaa773d83d\r\n","doLoopback":false,"hasAudio":true,"hasVideo":true,"audioActive":true,"videoActive":true,"typeOfVideo":"CAMERA","frameRate":30,"videoDimensions":"{"width":640,"height":480}"},"id":454}

Help!!!

Hello,

The RPC documentation may have been outdated for the 2.21.0.
It is now updated: https://docs.openvidu.io/en/2.21.0/developing/rpc/
Please, take a look at the methods you have implemented and see if there are any changes required.

Cheers.

@pabloFuente
Still no problem solved.
Is there no way?

The line throwing a NullPointer is related to the token of the participant joining the session. How did you joined the user owning the stream to the session? You must still use a proper token: https://docs.openvidu.io/en/stable/cheatsheet/join-session/

@pabloFuente
I am trying to apply it to unity.
The token was used as a return value by calling api/session/<SESSION_ID>.
What is suspicious is the sdpOffer value. Is it ok to be long?

sdpOffers are long. There is probably no problem in the publishVideoRPC operation. The problem is that your token is not well formed. The Connection associated to it lacks property "record": https://docs.openvidu.io/en/2.21.0/reference-docs/REST-API/#post-connection
Carefully review your token creation process.

@pabloFuente
I performed joinRoom and publishVideo using the token that came out of calling with the API you mentioned, but the same error still appears.

https://YOUR_OPENVIDUSERVER_IP/openvidu/api/sessions/SESSION_ID/connection
It seems that the body is needed at the same time as the call, so I wrote it as follows.
string uploadBody = "{"type": "WEBRTC"," +
""data": "My Server Data"," +
""record": false," +
""role": "PUBLISHER"," +
""kurentoOptions": {" +
""videoMaxRecvBandwidth": 1000," +
""videoMinRecvBandwidth": 300," +
""videoMaxSendBandwidth": 1000," +
""videoMinSendBandwidth": 300," +
""allowedFilters": [" +
""GStreamerFilter"," +
""ZBarFilter"" +
"]" +
"}" +
"}";

I am sorry, but this is hard for me to keep up with the little information you are providing. I really don't know what this phrase means: "It seems that the body is needed at the same time as the call, so I wrote it as follows.". What do you mean by the body is needed at the same time as the call?

@pabloFuente
Sorry, I'm Korean. So English very weak.

If you look at the documentation, when calling https://YOUR_OPENVIDUSERVER_IP/openvidu/api/sessions/SESSION_ID/connection

I understand that the following syntax is required.
{
"type": "WEBRTC",
"data": "My Server Data",
"record": true,
"role": "PUBLISHER",
"kurentoOptions": {
"videoMaxRecvBandwidth": 1000,
"videoMinRecvBandwidth": 300,
"videoMaxSendBandwidth": 1000,
"videoMinSendBandwidth": 300,
"allowedFilters": [ "GStreamerFilter", "ZBarFilter" ]
},
"customIceServers": [
{
"url": "turn:turn-domain.com:443",
"username": "usertest",
"credential": "userpass"
}
]
}

If you call it without syntax, an error occurs.

This was not a bug in OpenVidu, but some kind of wrong parameter issue when consuming RPC protocol (https://openvidu.discourse.group/t/joinroom-message-question/3826)