Good morning, group and especially - Good Morning Vietnam!!

109 views
Skip to first unread message

Neil Young

unread,
Mar 13, 2023, 4:43:32 AM3/13/23
to kurento
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)

3) And I would like to re-raise my minor issues posted here: https://groups.google.com/g/kurento/c/CrkhsJmU8Ms

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
KMS_7_missing_kurento-client_lib_·_Kurento_bugtracker_24d8627.png

Neil Young

unread,
Mar 14, 2023, 2:40:45 AM3/14/23
to kurento
1) is a no issue meanwhile. I patched the support for "requestKeyframe" into the 6.18 kurento-client lib. That should work until client 7.0.0 comes out
2) Is gone, strangely. It works. Maybe some strange encounter of the 3rd kind
3) still pending

Also still pending: The outage of kurento bugtracker

Juan Navarro

unread,
Mar 17, 2023, 3:48:38 PM3/17/23
to kur...@googlegroups.com
Hi,

1) The NPM client for Kurento 7.0.0 was released yesterday, so it should be available now for apps.

2) "OutpuBitrate" and "OutputBitrate" were giving issues to some users, and after some investigation, it turned out that the functionality was utterly broken basically since it had been introduced. So the path of action was to deprecate it and introduce "EncoderBitrate" as a new alternative that works as expected and furthermore provides more control than what was possible before.

See more info at
https://doc-kurento.readthedocs.io/en/stable/project/relnotes/v7_0_0.html#ouputbitrate-outputbitrate-encoderbitrate
and
https://github.com/Kurento/kms-core/pull/30

3a) Was a bug in the documentation, where every mention to the config file points to "/etc/default/kurento-media-server", except just one mention that was "/etc/default/kurento", and is now fixed.

3b) Similarly, docs for Kurento 7 were missing a small but important update wrt. 6.x, and the dpkg-buildpackage command has been corrected to add the "-b" flag.

3c) Doesn't look like a bug to me: obviously, the requirement "<7.0.0" should fail for a version that starts with "7" regardless of what comes afterwards. That's intended behavior, caused by wrong version of packages installed.

As of today, all of Java, JavaScript, and Documentation have been released on their final versions 7.0.0; the only missing parts are the media server which has currently been released with version name "dev-release-7.0.0" and on Tuesday will be re-built with the final name "7.0.0". Meanwhile you can use the former name to grab packages from Apt repos, or Docker images.

Regards,
Juan
--
You received this message because you are subscribed to the Google Groups "kurento" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kurento+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/kurento/f8e21f5e-39b5-493b-b984-c8f00b04a880n%40googlegroups.com.

Neil Young

unread,
Mar 17, 2023, 4:23:33 PM3/17/23
to kurento
Hi Juan,

that's an unexpected bunch of answers on a Friday evening :) But great news to have 7.0.0 out soon completely.

2) Wait... I have seen that "setEncoderBitrate" and was quite confused. I thought you have changed "setOutputBitrate" to "setMin/MaxOutputBitrate" with 7.0? At least I'm using it (setMinMaxOutputBitrate) and indeed, it changes the transcoding bitrate

3a) OK, I thought that
3b) Cool, will give it a try
3c) Well, according to the temp doc I installed the kms dev package before compiling. In fact, w/o this change I wasn't able to compile my modules. The test failed. The installed version is 7.0.0-dev, but expected is 7.0.0. That was the error. Anyway, I will wait for the final version then.

Neil Young

unread,
Mar 17, 2023, 4:38:02 PM3/17/23
to kurento
BTW: Also "setKeyframe" works like expected. :)

Good job. As always. Love to see my #1 media server having survived. In some extent I'm stepping a bit back (e.g. I was using OpenCV 4.5 together with KMS 6.x and GST 1.18.4). Nowadays OpenCV 4.2 and GST 1.16.3 is on vogue. I know there was a lot of mandatory improvement in GST (especially the NICE components) from 1.14. to 1.16. I hope, this version is sufficient down the road. So far no issues detected.

Also all my "recording extensions" and "RTSP gateways" via RtpEndpoint and FFMPEG process (Great, H.264 recording w/o breaking on resolution changes) work like a champ on the new OS and latest KMS. 

Great work for a major version change, where you expect way more complications. 

Have a nice weekend, and let me know about setMinMaxOutputBitrate vs. setEncoderBitrate
Reply all
Reply to author
Forward
0 new messages