Since the
kurento bugtracker is currently not working https://github.com/Kurento/bugtracker/issues/new/choose (it answers all properly filled bug reports with a Github Action failure mail, complaining about a security problem with the repo. Most likely the access token, GA is made to use, is no longer valid for the work repo)
Anyway. Here in short form the missing or problematic issues:
1) I'm missing a kms-client ^7.0.0 (npm). This is required in order to benefit from the new MediaElement API `requestKeyframe` (from which I hope it had found the way into this KMS 7 version.
2) Up to 6.18 I was used to `setOutpuBitrate`. This was changed to `setMinOutputBitrate` and `setMaxOutputBitrate` in 6.18. And it worked until 6.18. It is not working anymore with 7.0.0
This sequence:
if (this.versionCompare(this.kmsVersion, '6.18.0') < 0) {
await webRtcEndpoint.setOutputBitrate(config.maxBandwidth * 1000)
}
else {
await webRtcEndpoint.setMinOutputBitrate(config.maxBandwidth / 10 * 1000)
await webRtcEndpoint.setMaxOutputBitrate(config.maxBandwidth * 1000)
}
is now with KMS 7 producing this error and there error comes straight from the KMS core (not from the kms-client, this is working well):
Trace: Error: Method 'setMinOutputBitrate' with 1 parameters not found
at /home/ubuntu/webrtc-server/node_modules/kurento-client/lib/KurentoClient.js:365:24
at Object.dispatchCallback [as callback] (/home/ubuntu/webrtc-server/node_modules/kurento-jsonrpc/lib/index.js:546:9)
at processResponse (/home/ubuntu/webrtc-server/node_modules/kurento-jsonrpc/lib/index.js:667:15)
at RpcBuilder.decode (/home/ubuntu/webrtc-server/node_modules/kurento-jsonrpc/lib/index.js:723:5)
at Stream.transportMessage (/home/ubuntu/webrtc-server/node_modules/kurento-jsonrpc/lib/index.js:208:10)
at Stream.emit (events.js:400:28)
at Stream.emit (domain.js:475:12)
at drain (/home/ubuntu/webrtc-server/node_modules/through/index.js:36:16)
at Stream.stream.queue.stream.push (/home/ubuntu/webrtc-server/node_modules/through/index.js:45:5)
at WebsocketStream.onMessage (/home/ubuntu/webrtc-server/node_modules/websocket-stream/index.js:45:15) {
code: 40008,
data: { type: 'MALFORMED_TRANSACTION' }
}
at Object.noop (/home/ubuntu/webrtc-server/node_modules/kurento-client-core/lib/abstracts/MediaElement.js:40:22)
at callback2 (/home/ubuntu/webrtc-server/node_modules/promisecallback/index.js:27:25)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
at async /home/ubuntu/webrtc-server/ms.js:491:29
Trace: Error: Method 'setMaxOutputBitrate' with 1 parameters not found
at /home/ubuntu/webrtc-server/node_modules/kurento-client/lib/KurentoClient.js:365:24
at Object.dispatchCallback [as callback] (/home/ubuntu/webrtc-server/node_modules/kurento-jsonrpc/lib/index.js:546:9)
at processResponse (/home/ubuntu/webrtc-server/node_modules/kurento-jsonrpc/lib/index.js:667:15)
at RpcBuilder.decode (/home/ubuntu/webrtc-server/node_modules/kurento-jsonrpc/lib/index.js:723:5)
at Stream.transportMessage (/home/ubuntu/webrtc-server/node_modules/kurento-jsonrpc/lib/index.js:208:10)
at Stream.emit (events.js:400:28)
at Stream.emit (domain.js:475:12)
at drain (/home/ubuntu/webrtc-server/node_modules/through/index.js:36:16)
at Stream.stream.queue.stream.push (/home/ubuntu/webrtc-server/node_modules/through/index.js:45:5)
at WebsocketStream.onMessage (/home/ubuntu/webrtc-server/node_modules/websocket-stream/index.js:45:15) {
code: 40008,
data: { type: 'MALFORMED_TRANSACTION' }
}
at Object.noop (/home/ubuntu/webrtc-server/node_modules/kurento-client-core/lib/abstracts/MediaElement.js:40:22)
at callback2 (/home/ubuntu/webrtc-server/node_modules/promisecallback/index.js:27:25)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
at async /home/ubuntu/webrtc-server/ms.js:492:29
Same time the KMS brings up this log:
0:00:37.263719401 34433 0x7f384c0022f0 DEBUG KurentoWebSocketTransport WebSocketTransport.cpp:551:processMessage: Message: {"jsonrpc":"2.0","method":"invoke","params":{"object":"42b1e47b-f4d7-4a11-9971-21182c8a8440_kurento.MediaPipeline/791aeb51-a302-43c7-be69-6baa5cdd06e1_webrtcarucocode.webrtcarucocode","operation":"setMaxOutputBitrate","operationParams":{"maxOutputBitrate":3000},"sessionId":"cffb01bd-3ca3-47c7-ac26-8a21b29a9cac"},"id":100}
0:00:37.263945081 34433 0x7f384c0022f0 LOG KurentoServerMethods ServerMethods.cpp:350:postProcess: Caching: {
"error" : {
"code" : 40008,
"data" : {
"type" : "MALFORMED_TRANSACTION"
},
"message" : "Method 'setMaxOutputBitrate' with 1 parameters not found"
},
"id" : 100,
"jsonrpc" : "2.0"
}
0:00:37.264009962 34433 0x7f384c0022f0 DEBUG KurentoWebSocketTransport WebSocketTransport.cpp:553:processMessage: Response: {"error":{"code":40008,"data":{"type":"MALFORMED_TRANSACTION"},"message":"Method 'setMaxOutputBitrate' with 1 parameters not found"},"id":100,"jsonrpc":"2.0"}
That means, that `setMinOutputBitrate`, `setMaxOutputBitrate` and (intendedly) `setuOutputBitrate` are broken in KMS 7. You are no longer able to set the bitrate of a transcoding encoder and will fallback to 300 kBit/s (the way over the ini file works, though)
3a: KURENTO_MODULES_PATH need to be patched in `/etc/default/kurento-media-server`, not as documented in `/etc/default/kurento` (at least for non-Docker source installations)
3b: Debian package build for custom modules doesn't work at all
3c: Autogenerated version check in `/usr/share/cmake/Kurento/VersionHelpers.cmale` line 301 fails for "-dev" versions (Version does not match <7.0.0 with 7.0.0-dev)
Have a nice week