Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't recording 720P .mp4 (H264) video #49

Open
4 tasks done
TLexYuW opened this issue Jul 18, 2023 · 6 comments
Open
4 tasks done

Can't recording 720P .mp4 (H264) video #49

TLexYuW opened this issue Jul 18, 2023 · 6 comments

Comments

@TLexYuW
Copy link

TLexYuW commented Jul 18, 2023

Prerequisites

These are MANDATORY, otherwise the issue will be automatically closed.

Issue description

  • Can't recording 720P .mp4 (H264) video, recording video resolution always 640 x 480,
    even change conferenceroom.js media constraints.
var constraints = {
	audio: true,
	video: {
		mandatory: {
			width: 1280,
			height: 720,
			framerate: {
				max: 30,
				min: 30,
			}
		}
	}
};

Context

I'm trying to accomplish this:

Assuming there are 10 participants in one room, including a host, only the .mp4 (H264) video of the host will be recorded,
and audio of the host along with the audio of the other 9 participants mixed by hubport without their video,
separate and store as two individual files.

  • Application Server: Demo Project revised from Tutorial-GroupCall & focal-gstreamer-build-from-source (docker image)

    • Java: 11
    • Spring Boot: 2.7
    • Kurento-Java-Client: 7.0.0
    • Kurento Media Server: 7.0
    • Ubuntu:focal (20.04)
    • Gstreamer: GStreamer Core Library version 1.16.3
    • WebCam: Logitech C310 HD / OBS Studio Virtual Camera 1280 x 720 MP4
  • I pull media server image for test recording: docker pull kurento/kurento-media-server, and setup my own media server on AWS EC2 test recording separately.

    • When attempting to record in 720P resolution, I consistently encounter failures,
      Both server's video resolution always 640 x 480.
  • At Fisrt, I thought was Browser or JS WebRTC API problem, use different client to call application server

    • Browser: Chrome 114: JavaScripts
    • Unity WebRTC: C#
  • Browser Result:
    When first participant join room and room Created immediately recording
    Application Server Log & Media info

4415 0x7f3a880022a0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:689:MediaElementImpl: Configured target video bitrate for media transcoding: 6000000 bps
4415 0x7f3a880022a0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:694:MediaElementImpl: Configured minimum video bitrate for media transcoding: 2000000 bps
4415 0x7f3a880022a0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:699:MediaElementImpl: Configured maximum video bitrate for media transcoding: 6000000 bps
4415 0x7f3a64001b60 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:526:mediaFlowOutStateChanged:<kmshubport0> MediaFlowOutStateChanged: FLOWING, pad: 'default', type: 'audio'
4415 0x7f3a84002240 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:689:MediaElementImpl: Configured target video bitrate for media transcoding: 6000000 bps
4415 0x7f3a84002240 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:694:MediaElementImpl: Configured minimum video bitrate for media transcoding: 2000000 bps
4415 0x7f3a84002240 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:699:MediaElementImpl: Configured maximum video bitrate for media transcoding: 6000000 bps
4415 0x7f3a84002240 DEBUG   KurentoBaseRtpEndpointImpl BaseRtpEndpointImpl.cpp:114:BaseRtpEndpointImpl: No predefined RTP MTU found in config; using default
4415 0x7f3a84002240 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:160:generateDefaultCertificates: Unable to load the RSA certificate from file. Using the default certificate.
4415 0x7f3a84002240 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:169:generateDefaultCertificates: Unable to load the ECDSA certificate from file. Using the default certificate.
4415 0x7f3a84002240 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:572:WebRtcEndpointImpl: No QOS-DSCP value set
4415 0x7f3a84002240 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:112:remove_not_supported_codecs_from_array:<kmswebrtcendpoint0> Removing not supported codec 'AMR/8000'
4415 0x7f3a84002240 DEBUG   KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:599:WebRtcEndpointImpl: No predefined external IPv4 address found in config; you can set one or default to STUN automatic discovery
4415 0x7f3a84002240 DEBUG   KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:610:WebRtcEndpointImpl: No predefined external IPv6 address found in config; you can set one or default to STUN automatic discovery
4415 0x7f3a84002240 DEBUG   KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:621:WebRtcEndpointImpl: No predefined network interfaces found in config; you can set one or default to ICE automatic discovery
4415 0x7f3a84002240 DEBUG   KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:631:WebRtcEndpointImpl: ICE-TCP option not found in config; you can set it or default to 1 (TRUE)
4415 0x7f3a84002240 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:645:WebRtcEndpointImpl: Predefined STUN server: stun.l.google.com:19302:3478
4415 0x7f3a84002240 DEBUG   KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:667:WebRtcEndpointImpl: TURN relay server not found in config
4415 0x55d40c833c30 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:689:MediaElementImpl: Configured target video bitrate for media transcoding: 6000000 bps
4415 0x55d40c833c30 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:694:MediaElementImpl: Configured minimum video bitrate for media transcoding: 2000000 bps
4415 0x55d40c833c30 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:699:MediaElementImpl: Configured maximum video bitrate for media transcoding: 6000000 bps
4415 0x7f3aa0002320 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1004:connect: Connecting 7118bdbf-de57-485d-9242-d5e8e22ad5b6_kurento.MediaPipeline/d15fb059-367d-403d-bd7f-7b5d5b336a20_kurento.WebRtcEndpoint -> 7118bdbf-de57-485d-9242-d5e8e22ad5b6_kurento.MediaPipeline/6ab8de7d-80ee-4f56-a6e8-795062b1e06c_kurento.Composite/a846c979-8972-4f6e-ab90-bae60b993739_kurento.HubPort params AUDIO default default
4415 0x7f3aa8001d80 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:689:MediaElementImpl: Configured target video bitrate for media transcoding: 6000000 bps
4415 0x7f3aa8001d80 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:694:MediaElementImpl: Configured minimum video bitrate for media transcoding: 2000000 bps
4415 0x7f3aa8001d80 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:699:MediaElementImpl: Configured maximum video bitrate for media transcoding: 6000000 bps
4415 0x7f3a60008f00 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:526:mediaFlowOutStateChanged:<kmshubport0> MediaFlowOutStateChanged: FLOWING, pad: 'default', type: 'video'
4415 0x7f3aa8001d80 INFO    KurentoRecorderEndpointImpl RecorderEndpointImpl.cpp:133:RecorderEndpointImpl: Set MP4 AUDIO ONLY profile
4415 0x7f3aa800a4c0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:526:mediaFlowOutStateChanged:<kmshubport1> MediaFlowOutStateChanged: FLOWING, pad: 'default', type: 'audio'
4415 0x7f3aa800a520 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:526:mediaFlowOutStateChanged:<kmshubport1> MediaFlowOutStateChanged: FLOWING, pad: 'default', type: 'video'
4415 0x7f3a90001400 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:689:MediaElementImpl: Configured target video bitrate for media transcoding: 6000000 bps
4415 0x7f3a90001400 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:694:MediaElementImpl: Configured minimum video bitrate for media transcoding: 2000000 bps
4415 0x7f3a90001400 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:699:MediaElementImpl: Configured maximum video bitrate for media transcoding: 6000000 bps
4415 0x7f3a90001400 INFO    KurentoRecorderEndpointImpl RecorderEndpointImpl.cpp:127:RecorderEndpointImpl: Set MP4 VIDEO ONLY profile
4415 0x7f3aa40022c0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1004:connect: Connecting 7118bdbf-de57-485d-9242-d5e8e22ad5b6_kurento.MediaPipeline/6ab8de7d-80ee-4f56-a6e8-795062b1e06c_kurento.Composite/6157ca5c-8087-4ef9-86b0-78cfcd3a66be_kurento.HubPort -> 7118bdbf-de57-485d-9242-d5e8e22ad5b6_kurento.MediaPipeline/9d6741dd-6e6d-40cf-ba91-093f8bed4bc4_kurento.RecorderEndpoint params AUDIO default default
4415 0x7f3aa40022c0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1004:connect: Connecting 7118bdbf-de57-485d-9242-d5e8e22ad5b6_kurento.MediaPipeline/6ab8de7d-80ee-4f56-a6e8-795062b1e06c_kurento.Composite/6157ca5c-8087-4ef9-86b0-78cfcd3a66be_kurento.HubPort -> 7118bdbf-de57-485d-9242-d5e8e22ad5b6_kurento.MediaPipeline/9d6741dd-6e6d-40cf-ba91-093f8bed4bc4_kurento.RecorderEndpoint params VIDEO default default
4415 0x7f3aa40022c0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1004:connect: Connecting 7118bdbf-de57-485d-9242-d5e8e22ad5b6_kurento.MediaPipeline/6ab8de7d-80ee-4f56-a6e8-795062b1e06c_kurento.Composite/6157ca5c-8087-4ef9-86b0-78cfcd3a66be_kurento.HubPort -> 7118bdbf-de57-485d-9242-d5e8e22ad5b6_kurento.MediaPipeline/9d6741dd-6e6d-40cf-ba91-093f8bed4bc4_kurento.RecorderEndpoint params DATA default default
4415 0x7f3a90002360 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1004:connect: Connecting 7118bdbf-de57-485d-9242-d5e8e22ad5b6_kurento.MediaPipeline/d15fb059-367d-403d-bd7f-7b5d5b336a20_kurento.WebRtcEndpoint -> 7118bdbf-de57-485d-9242-d5e8e22ad5b6_kurento.MediaPipeline/2ceb0e96-3795-437b-b9d2-dc69d363382a_kurento.RecorderEndpoint params AUDIO default default
4415 0x7f3a90002360 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1004:connect: Connecting 7118bdbf-de57-485d-9242-d5e8e22ad5b6_kurento.MediaPipeline/d15fb059-367d-403d-bd7f-7b5d5b336a20_kurento.WebRtcEndpoint -> 7118bdbf-de57-485d-9242-d5e8e22ad5b6_kurento.MediaPipeline/2ceb0e96-3795-437b-b9d2-dc69d363382a_kurento.RecorderEndpoint params VIDEO default default
4415 0x7f3a90002360 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1004:connect: Connecting 7118bdbf-de57-485d-9242-d5e8e22ad5b6_kurento.MediaPipeline/d15fb059-367d-403d-bd7f-7b5d5b336a20_kurento.WebRtcEndpoint -> 7118bdbf-de57-485d-9242-d5e8e22ad5b6_kurento.MediaPipeline/2ceb0e96-3795-437b-b9d2-dc69d363382a_kurento.RecorderEndpoint params DATA default default
4415 0x7f3a90001400 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:596:onMediaTranscodingStateChanged:<kmshubport0> MediaTranscodingStateChanged: TRANSCODING, bin: 'kmshubport0_kmsagnosticbin2-2', type: 'audio'
4415 0x7f3a64001b60 WARN         audio-resampler audio-resampler.c:274:convert_taps_gint16_c: can't find exact taps
4415 0x7f3a90005d20 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:561:mediaFlowInStateChanged:<kmsrecorderendpoint0> MediaFlowInStateChanged: FLOWING, pad: 'default', type: 'audio'
4415 0x7f3a90005c60 WARN                   qtmux gstqtmux.c:2981:gst_qt_mux_start_file:<mp4mux0> Robust muxing requires reserved-moov-update-period to be set
4415 0x7f3a10005ea0 DEBUG   KurentoRecorderEndpointImpl RecorderEndpointImpl.cpp:199:onStateChanged:<kmsrecorderendpoint0> State changed to Recording
4415 0x7f3a10005ea0 INFO       KurentoWorkerPool WorkerPool.cpp:67:WorkerPool: Worker thread pool size: 12
4415 0x7f3a7c00e240 DEBUG   KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:293:newSelectedPairFull:<kmswebrtcendpoint0> New candidate pair selected, local: 'candidate:4 1 UDP 1847591167 192.168.1.191 57344 typ prflx raddr 172.17.0.2 rport 6667', remote: 'candidate:874158666 1 UDP 2122260223 192.168.1.191 61620 typ host', stream_id: '1', component_id: 1
4415 0x7f3aa800a5e0 DEBUG   KurentoBaseRtpEndpointImpl BaseRtpEndpointImpl.cpp:202:updateConnectionState:<kmswebrtcendpoint0> ConnectionState changed to 'CONNECTED'
4415 0x7f3a980871e0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:526:mediaFlowOutStateChanged:<kmswebrtcendpoint0> MediaFlowOutStateChanged: FLOWING, pad: 'default', type: 'audio'
4415 0x7f3a980871e0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:596:onMediaTranscodingStateChanged:<kmswebrtcendpoint0> MediaTranscodingStateChanged: TRANSCODING, bin: 'kmswebrtcendpoint0_kmsagnosticbin2-5', type: 'audio'
4415 0x7f3a980871e0 WARN                kmsutils kmsutils.c:1452:kms_utils_depayloader_adjust_pts_out:<rtpopusdepay0> Fix PTS not strictly increasing, last: 0:00:02.796658336, current: 0:00:02.796658336, fixed = last + 1: 0:00:02.797658336
4415 0x7f39e000ac60 WARN         audio-resampler audio-resampler.c:274:convert_taps_gint16_c: can't find exact taps
4415 0x7f39dc010c00 WARN         audio-resampler audio-resampler.c:274:convert_taps_gint16_c: can't find exact taps
4415 0x7f39e000ac60 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:561:mediaFlowInStateChanged:<kmshubport1> MediaFlowInStateChanged: FLOWING, pad: 'default', type: 'audio'
4415 0x7f3a98087360 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:601:onMediaTranscodingStateChanged:<kmswebrtcendpoint0> MediaTranscodingStateChanged: NOT TRANSCODING, bin: 'kmswebrtcendpoint0_kmsagnosticbin2-6', type: 'video'
4415 0x7f3a98087360 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:526:mediaFlowOutStateChanged:<kmswebrtcendpoint0> MediaFlowOutStateChanged: FLOWING, pad: 'default', type: 'video'
4415 0x7f39d800a580 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:561:mediaFlowInStateChanged:<kmsrecorderendpoint1> MediaFlowInStateChanged: FLOWING, pad: 'default', type: 'video'
4415 0x7f3aa0008cc0 WARN                   qtmux gstqtmux.c:2981:gst_qt_mux_start_file:<mp4mux1> Robust muxing requires reserved-moov-update-period to be set
4415 0x7f39c8004ea0 DEBUG   KurentoRecorderEndpointImpl RecorderEndpointImpl.cpp:199:onStateChanged:<kmsrecorderendpoint1> State changed to Recording
4415 0x7f3aa800a5e0 DEBUG   KurentoBaseRtpEndpointImpl BaseRtpEndpointImpl.cpp:165:updateMediaState:<kmswebrtcendpoint0> MediaState changed to 'CONNECTED'
4415 0x7f3a7c001d80 DEBUG        KurentoMediaSet MediaSet.cpp:121:doGarbageCollection: Running garbage collector
4415 0x7f3a84002240 DEBUG   KurentoServerMethods ServerMethods.cpp:815:ping: WebSocket Ping/Pong with sessionId 37fd2f63-f344-407a-9572-b47cece23923
General
Format                                   : MPEG-4
Format profile                           : Base Media / Version 2
Codec ID                                 : mp42 (mp42/mp41/isom/iso2)
File size                                : 121 MiB
Duration                                 : 10 min 4 s
Overall bit rate                         : 1 683 kb/s
Frame rate                               : 29.708 FPS

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Constrained Baseline@L3
Format settings                          : 1 Ref Frames
Format settings, CABAC                   : No
Format settings, Reference frames        : 1 frame
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 10 min 4 s
Bit rate                                 : 1 681 kb/s
Width                                    : 640 pixels
Height                                   : 480 pixels
Display aspect ratio                     : 4:3
Frame rate mode                          : Variable
Frame rate                               : 29.708 FPS
Minimum frame rate                       : 12.500 FPS
Maximum frame rate                       : 33.223 FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.184
Stream size                              : 121 MiB (100%)
Codec configuration box                  : avcC
  • Unity Result:
    Media Constraints set over 480P, then call application server, media server will occur errors.
    Application Server Error Message:
INFO 26856 --- [nio-8443-exec-3] o.k.t.helloworld.HelloWorldRecHandler    : Msg = {"sdpOffer":"v=0\r\no=- 7534497441325278218 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS e23689bd-a398-45e5-983c-61500e37ef58\r\nm=audio 9 UDP/TLS/RTP/SAVPF 96 97 98 99 102 103 104 9 0 8 100 101 107 108 109 114 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:eE2Z\r\na=ice-pwd:EWlMKIfJRI3O8aRCPsGkRL/J\r\na=ice-options:trickle\r\na=fingerprint:sha-256 0F:EF:EE:49:1D:0D:CF:E7:1D:93:23:14:7C:B5:5A:48:C4:E8:F0:B5:F5:53:58:A7:B1:77:13:D9:51:D1:E1:57\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=sendonly\r\na=msid:e23689bd-a398-45e5-983c-61500e37ef58 40b0900d-5984-4f21-9760-e92fae3dadec\r\na=rtcp-mux\r\na=rtpmap:96 opus/48000/2\r\na=rtcp-fb:96 transport-cc\r\na=fmtp:96 minptime=10;sprop-stereo=1;stereo=1;useinbandfec=1\r\na=rtpmap:97 red/48000/2\r\na=fmtp:97 96/96\r\na=rtpmap:98 multiopus/48000/6\r\na=fmtp:98 channel_mapping=0,4,1,2,3,5;coupled_streams=2;minptime=10;num_streams=4;useinbandfec=1\r\na=rtpmap:99 multiopus/48000/8\r\na=fmtp:99 channel_mapping=0,6,1,2,3,4,5,7;coupled_streams=3;minptime=10;num_streams=5;useinbandfec=1\r\na=rtpmap:102 ILBC/8000\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:100 L16/8000\r\na=rtpmap:101 L16/16000\r\na=rtpmap:107 L16/32000\r\na=rtpmap:108 L16/8000/2\r\na=rtpmap:109 L16/16000/2\r\na=rtpmap:114 L16/32000/2\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:1764116073 cname:7BLBakQZ05pz0K96\r\na=ssrc:1764116073 msid:e23689bd-a398-45e5-983c-61500e37ef58 40b0900d-5984-4f21-9760-e92fae3dadec\r\nm=video 9 UDP/TLS/RTP/SAVPF 123 122 121 120\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:eE2Z\r\na=ice-pwd:EWlMKIfJRI3O8aRCPsGkRL/J\r\na=ice-options:trickle\r\na=fingerprint:sha-256 0F:EF:EE:49:1D:0D:CF:E7:1D:93:23:14:7C:B5:5A:48:C4:E8:F0:B5:F5:53:58:A7:B1:77:13:D9:51:D1:E1:57\r\na=setup:actpass\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:13 urn:3gpp:video-orientation\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendonly\r\na=msid:e23689bd-a398-45e5-983c-61500e37ef58 435f9231-b06e-430a-9c89-4253a07dd83c\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:123 H264/90000\r\na=rtcp-fb:123 goog-remb\r\na=rtcp-fb:123 transport-cc\r\na=rtcp-fb:123 ccm fir\r\na=rtcp-fb:123 nack\r\na=rtcp-fb:123 nack pli\r\na=fmtp:123 implementation_name=NvCodec;level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e033\r\na=rtpmap:122 H264/90000\r\na=rtcp-fb:122 goog-remb\r\na=rtcp-fb:122 transport-cc\r\na=rtcp-fb:122 ccm fir\r\na=rtcp-fb:122 nack\r\na=rtcp-fb:122 nack pli\r\na=fmtp:122 implementation_name=NvCodec;level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=420033\r\na=rtpmap:121 H264/90000\r\na=rtcp-fb:121 goog-remb\r\na=rtcp-fb:121 transport-cc\r\na=rtcp-fb:121 ccm fir\r\na=rtcp-fb:121 nack\r\na=rtcp-fb:121 nack pli\r\na=fmtp:121 implementation_name=NvCodec;level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640033\r\na=rtpmap:120 H264/90000\r\na=rtcp-fb:120 goog-remb\r\na=rtcp-fb:120 transport-cc\r\na=rtcp-fb:120 ccm fir\r\na=rtcp-fb:120 nack\r\na=rtcp-fb:120 nack pli\r\na=fmtp:120 implementation_name=NvCodec;level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0033\r\na=ssrc:2589173544 cname:7BLBakQZ05pz0K96\r\na=ssrc:2589173544 msid:e23689bd-a398-45e5-983c-61500e37ef58 435f9231-b06e-430a-9c89-4253a07dd83c\r\n","mode":"both","id":"start"}
2023-07-18 17:52:15.108  INFO 26856 --- [nio-8443-exec-3] o.k.t.helloworld.HelloWorldRecHandler    : Answer = v=0
o=- 3898662735 3898662735 IN IP4 0.0.0.0
s=Kurento Media Server
c=IN IP4 0.0.0.0
t=0 0
a=extmap-allow-mixed
a=msid-semantic: WMS e23689bd-a398-45e5-983c-61500e37ef58
a=group:BUNDLE 0 1
m=audio 1 UDP/TLS/RTP/SAVPF 96 0
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=recvonly
a=mid:0
a=rtcp:9 IN IP4 0.0.0.0
a=rtpmap:96 opus/48000/2
a=rtpmap:0 PCMU/8000
a=setup:active
a=rtcp-mux
a=fmtp:96 minptime=10;sprop-stereo=1;stereo=1;useinbandfec=1
a=ssrc:463513865 cname:user2910986067@host-fc420bb3
a=ice-ufrag:zi4s
a=ice-pwd:lrJN7V1sNGZBwVdQQjGaKQ
a=fingerprint:sha-256 C3:8F:8C:12:C6:AA:11:ED:2E:24:A4:86:35:56:04:32:94:83:26:7B:40:8B:13:69:8B:E8:2F:2C:CA:2F:9A:E5
m=video 1 UDP/TLS/RTP/SAVPF 123 122 121 120
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=recvonly
a=mid:1
a=rtcp:9 IN IP4 0.0.0.0
a=rtpmap:123 H264/90000
a=rtpmap:122 H264/90000
a=rtpmap:121 H264/90000
a=rtpmap:120 H264/90000
a=rtcp-fb:123 goog-remb
a=rtcp-fb:123 ccm fir
a=rtcp-fb:123 nack
a=rtcp-fb:123 nack pli
a=rtcp-fb:122 goog-remb
a=rtcp-fb:122 ccm fir
a=rtcp-fb:122 nack
a=rtcp-fb:122 nack pli
a=rtcp-fb:121 goog-remb
a=rtcp-fb:121 ccm fir
a=rtcp-fb:121 nack
a=rtcp-fb:121 nack pli
a=rtcp-fb:120 goog-remb
a=rtcp-fb:120 ccm fir
a=rtcp-fb:120 nack
a=rtcp-fb:120 nack pli
a=setup:active
a=rtcp-mux
a=fmtp:123 implementation_name=NvCodec;level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e033
a=fmtp:122 implementation_name=NvCodec;level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=420033
a=fmtp:121 implementation_name=NvCodec;level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640033
a=fmtp:120 implementation_name=NvCodec;level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0033
a=ssrc:3347471582 cname:user2910986067@host-fc420bb3
a=ice-ufrag:zi4s
a=ice-pwd:lrJN7V1sNGZBwVdQQjGaKQ
a=fingerprint:sha-256 C3:8F:8C:12:C6:AA:11:ED:2E:24:A4:86:35:56:04:32:94:83:26:7B:40:8B:13:69:8B:E8:2F:2C:CA:2F:9A:E5

ERROR 26856 --- [EventExec-e2-t7] o.k.t.helloworld.HelloWorldRecHandler    : [RecorderEndpoint::ErrorEvent] Error code 1: 'STREAM_ERROR_FAILED', source: d9431e68-3a83-46e3-b50b-ecfcde68d2e3_kurento.MediaPipeline/640aeaa9-a655-4066-b5c9-f6103d819010_kurento.RecorderEndpoint, timestamp: 1689673935353, tags: [], description: Error code 1: Internal data stream error., source: kmsrecorderendpoint2, element: kmsrecorderendpoint2, debug info: gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline4/GstAppSrc:videoSrc:
streaming stopped, reason not-negotiated (-4)
Media Server Error:
632 0x7fe1d8002240 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:689:MediaElementImpl: Configured target video bitrate for media transcoding: 6000000 bps
632 0x7fe1d8002240 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:694:MediaElementImpl: Configured minimum video bitrate for media transcoding: 2000000 bps
632 0x7fe1d8002240 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:699:MediaElementImpl: Configured maximum video bitrate for media transcoding: 6000000 bps
632 0x7fe1d8002240 DEBUG   KurentoBaseRtpEndpointImpl BaseRtpEndpointImpl.cpp:114:BaseRtpEndpointImpl: No predefined RTP MTU found in config; using default
632 0x7fe1d8002240 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:572:WebRtcEndpointImpl: No QOS-DSCP value set
632 0x7fe1d8002240 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:112:remove_not_supported_codecs_from_array:<kmswebrtcendpoint1> Removing not supported codec 'AMR/8000'
632 0x7fe1d8002240 DEBUG   KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:599:WebRtcEndpointImpl: No predefined external IPv4 address found in config; you can set one or default to STUN automatic discovery
632 0x7fe1d8002240 DEBUG   KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:610:WebRtcEndpointImpl: No predefined external IPv6 address found in config; you can set one or default to STUN automatic discovery
632 0x7fe1d8002240 DEBUG   KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:621:WebRtcEndpointImpl: No predefined network interfaces found in config; you can set one or default to ICE automatic discovery
632 0x7fe1d8002240 DEBUG   KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:631:WebRtcEndpointImpl: ICE-TCP option not found in config; you can set it or default to 1 (TRUE)
632 0x7fe1d8002240 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:645:WebRtcEndpointImpl: Predefined STUN server: stun.l.google.com:19302:3478
632 0x7fe1d8002240 DEBUG   KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:667:WebRtcEndpointImpl: TURN relay server not found in config
632 0x55c84ddb6640 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:689:MediaElementImpl: Configured target video bitrate for media transcoding: 6000000 bps
632 0x55c84ddb6640 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:694:MediaElementImpl: Configured minimum video bitrate for media transcoding: 2000000 bps
632 0x55c84ddb6640 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:699:MediaElementImpl: Configured maximum video bitrate for media transcoding: 6000000 bps
632 0x55c84ddb6640 INFO    KurentoRecorderEndpointImpl RecorderEndpointImpl.cpp:92:RecorderEndpointImpl: Set MP4 profile
632 0x7fe1dc001400 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1004:connect: Connecting d9431e68-3a83-46e3-b50b-ecfcde68d2e3_kurento.MediaPipeline/28f7702f-e53f-4e8d-9fe3-00237a07ecca_kurento.WebRtcEndpoint -> d9431e68-3a83-46e3-b50b-ecfcde68d2e3_kurento.MediaPipeline/640aeaa9-a655-4066-b5c9-f6103d819010_kurento.RecorderEndpoint params AUDIO default default
632 0x7fe1e0002300 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1004:connect: Connecting d9431e68-3a83-46e3-b50b-ecfcde68d2e3_kurento.MediaPipeline/28f7702f-e53f-4e8d-9fe3-00237a07ecca_kurento.WebRtcEndpoint -> d9431e68-3a83-46e3-b50b-ecfcde68d2e3_kurento.MediaPipeline/640aeaa9-a655-4066-b5c9-f6103d819010_kurento.RecorderEndpoint params VIDEO default default
632 0x7fe1d806ab60 DEBUG   KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:293:newSelectedPairFull:<kmswebrtcendpoint1> New candidate pair selected, local: 'candidate:4 1 TCP 935330047 192.168.1.191 3080 typ prflx raddr 172.17.0.2 rport 46075 tcptype active', remote: 'candidate:418784936 1 TCP 1518280447 192.168.1.155 63259 typ host tcptype passive', stream_id: '1', component_id: 1
632 0x7fe1b80088c0 DEBUG   KurentoBaseRtpEndpointImpl BaseRtpEndpointImpl.cpp:202:updateConnectionState:<kmswebrtcendpoint1> ConnectionState changed to 'CONNECTED'
632 0x7fe1b8008b60 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:526:mediaFlowOutStateChanged:<kmswebrtcendpoint1> MediaFlowOutStateChanged: FLOWING, pad: 'default', type: 'audio'
632 0x7fe1b8008b60 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:596:onMediaTranscodingStateChanged:<kmswebrtcendpoint1> MediaTranscodingStateChanged: TRANSCODING, bin: 'kmswebrtcendpoint1_kmsagnosticbin2-8', type: 'audio'
632 0x7fe1b8008b60 WARN                kmsutils kmsutils.c:1452:kms_utils_depayloader_adjust_pts_out:<rtpopusdepay1> Fix PTS not strictly increasing, last: 0:00:00.259455791, current: 0:00:00.259455791, fixed = last + 1: 0:00:00.260455791
632 0x7fe1b8008b60 WARN                kmsutils kmsutils.c:1452:kms_utils_depayloader_adjust_pts_out:<rtpopusdepay1> Fix PTS not strictly increasing, last: 0:00:00.260455791, current: 0:00:00.259455791, fixed = last + 1: 0:00:00.261455791
632 0x7fe1b8008b60 WARN                kmsutils kmsutils.c:1452:kms_utils_depayloader_adjust_pts_out:<rtpopusdepay1> Fix PTS not strictly increasing, last: 0:00:00.261455791, current: 0:00:00.259455791, fixed = last + 1: 0:00:00.262455791
632 0x7fe1b8008b60 WARN                kmsutils kmsutils.c:1452:kms_utils_depayloader_adjust_pts_out:<rtpopusdepay1> Fix PTS not strictly increasing, last: 0:00:00.262455791, current: 0:00:00.259455791, fixed = last + 1: 0:00:00.263455791
632 0x7fe1b8008b60 WARN                kmsutils kmsutils.c:1452:kms_utils_depayloader_adjust_pts_out:<rtpopusdepay1> Fix PTS not strictly increasing, last: 0:00:00.263455791, current: 0:00:00.259455791, fixed = last + 1: 0:00:00.264455791
632 0x7fe1b8008b60 WARN         audio-resampler audio-resampler.c:274:convert_taps_gint16_c: can't find exact taps
632 0x7fe11c004360 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:601:onMediaTranscodingStateChanged:<kmswebrtcendpoint1> MediaTranscodingStateChanged: NOT TRANSCODING, bin: 'kmswebrtcendpoint1_kmsagnosticbin2-9', type: 'video'
632 0x7fe11c004360 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:526:mediaFlowOutStateChanged:<kmswebrtcendpoint1> MediaFlowOutStateChanged: FLOWING, pad: 'default', type: 'video'
632 0x7fe17400ac60 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:561:mediaFlowInStateChanged:<kmsrecorderendpoint2> MediaFlowInStateChanged: FLOWING, pad: 'default', type: 'video'
632 0x7fe1a0010000 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:561:mediaFlowInStateChanged:<kmsrecorderendpoint2> MediaFlowInStateChanged: FLOWING, pad: 'default', type: 'audio'
632 0x7fe1e00088c0 WARN                   qtmux gstqtmux.c:2981:gst_qt_mux_start_file:<mp4mux2> Robust muxing requires reserved-moov-update-period to be set
632 0x7fe164005580 DEBUG   KurentoRecorderEndpointImpl RecorderEndpointImpl.cpp:199:onStateChanged:<kmsrecorderendpoint2> State changed to Recording
632 0x7fe1e0008920 WARN                   qtmux gstqtmux.c:5118:gst_qt_mux_can_renegotiate:<mp4mux2> pad video_0 refused renegotiation to video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c033ffe100196742c033959005005bb01100000303e80001ccf08da088464801000468cb8f20, level=(string)5.1, profile=(string)constrained-baseline, pixel-aspect-ratio=(fraction)1/1, width=(int)1280, height=(int)720, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
632 0x7fe1e0008920 WARN                   qtmux gstqtmux.c:5118:gst_qt_mux_can_renegotiate:<mp4mux2> pad video_0 refused renegotiation to video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c033ffe100196742c033959005005bb01100000303e80001ccf08da088464801000468cb8f20, level=(string)5.1, profile=(string)constrained-baseline, pixel-aspect-ratio=(fraction)1/1, width=(int)1280, height=(int)720, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
632 0x7fe1e0008920 WARN                 basesrc gstbasesrc.c:3072:gst_base_src_loop:<videoSrc> error: Internal data stream error.
632 0x7fe1e0008920 WARN                 basesrc gstbasesrc.c:3072:gst_base_src_loop:<videoSrc> error: streaming stopped, reason not-negotiated (-4)
632 0x7fe1e0008920 WARN                   qtmux gstqtmux.c:5118:gst_qt_mux_can_renegotiate:<mp4mux2> pad video_0 refused renegotiation to video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c033ffe100196742c033959005005bb01100000303e80001ccf08da088464801000468cb8f20, level=(string)5.1, profile=(string)constrained-baseline, pixel-aspect-ratio=(fraction)1/1, width=(int)1280, height=(int)720, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
632 0x7fe1e0008920 WARN                   qtmux gstqtmux.c:5118:gst_qt_mux_can_renegotiate:<mp4mux2> pad video_0 refused renegotiation to video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c033ffe100196742c033959005005bb01100000303e80001ccf08da088464801000468cb8f20, level=(string)5.1, profile=(string)constrained-baseline, pixel-aspect-ratio=(fraction)1/1, width=(int)1280, height=(int)720, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
632 0x55c84ddb6150 ERROR   KurentoMediaElementImpl MediaElementImpl.cpp:456:processBusMessage:<kmsrecorderendpoint2> Error code 1: Internal data stream error., source: kmsrecorderendpoint2, element: kmsrecorderendpoint2, debug info: gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline4/GstAppSrc:videoSrc:
streaming stopped, reason not-negotiated (-4)
632 0x7fe1e0008920 WARN                   qtmux gstqtmux.c:5118:gst_qt_mux_can_renegotiate:<mp4mux2> pad video_0 refused renegotiation to video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c033ffe100196742c033959005005bb01100000303e80001ccf08da088464801000468cb8f20, level=(string)5.1, profile=(string)constrained-baseline, pixel-aspect-ratio=(fraction)1/1, width=(int)1280, height=(int)720, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
632 0x7fe1b80088c0 DEBUG   KurentoBaseRtpEndpointImpl BaseRtpEndpointImpl.cpp:165:updateMediaState:<kmswebrtcendpoint1> MediaState changed to 'CONNECTED'
632 0x7fe1dc05a800 DEBUG        KurentoMediaSet MediaSet.cpp:121:doGarbageCollection: Running garbage collector
632 0x7fe1640055e0 WARN        recorderendpoint kmsrecorderendpoint.c:1346:kms_recorder_endpoint_on_eos:<kmsrecorderendpoint2> Releasing pending pads
632 0x7fe1640055e0 DEBUG   KurentoRecorderEndpointImpl RecorderEndpointImpl.cpp:186:onStateChanged:<kmsrecorderendpoint2> State changed to Stopped
632 0x7fe138067210 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1133:disconnect: Disconnecting d9431e68-3a83-46e3-b50b-ecfcde68d2e3_kurento.MediaPipeline/28f7702f-e53f-4e8d-9fe3-00237a07ecca_kurento.WebRtcEndpoint - d9431e68-3a83-46e3-b50b-ecfcde68d2e3_kurento.MediaPipeline/640aeaa9-a655-4066-b5c9-f6103d819010_kurento.RecorderEndpoint params AUDIO default default
632 0x7fe138067210 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1133:disconnect: Disconnecting d9431e68-3a83-46e3-b50b-ecfcde68d2e3_kurento.MediaPipeline/28f7702f-e53f-4e8d-9fe3-00237a07ecca_kurento.WebRtcEndpoint - d9431e68-3a83-46e3-b50b-ecfcde68d2e3_kurento.MediaPipeline/640aeaa9-a655-4066-b5c9-f6103d819010_kurento.RecorderEndpoint params VIDEO default default
632 0x7fe128061980 DEBUG        KurentoMediaSet MediaSet.cpp:463:async_delete: Destroying WebRtcEndpoint -> d9431e68-3a83-46e3-b50b-ecfcde68d2e3_kurento.MediaPipeline/28f7702f-e53f-4e8d-9fe3-00237a07ecca_kurento.WebRtcEndpoint
632 0x7fe15c00d590 DEBUG        KurentoMediaSet MediaSet.cpp:463:async_delete: Destroying RecorderEndpoint -> d9431e68-3a83-46e3-b50b-ecfcde68d2e3_kurento.MediaPipeline/640aeaa9-a655-4066-b5c9-f6103d819010_kurento.RecorderEndpoint
632 0x7fe128061980 DEBUG        KurentoMediaSet MediaSet.cpp:463:async_delete: Destroying MediaPipeline -> d9431e68-3a83-46e3-b50b-ecfcde68d2e3_kurento.MediaPipeline
  • Build my own docker image for Upgrade GStreamer Core Library Version to 1.20 / 1.22 Only:
    With this approach, it's challenging for me, especially I'm not familiar C programming language and Linux.
    I'm unsure if it will work or not, but I give it a try.
    However, still unable to recording and identify the root cause of the issue.
    with 1.20 / 1.22, Group-Call, media server same Log info:
632 0x7fb6a0002330 WARN     GST_ELEMENT_FACTORY gstelementfactory.c:701:gst_element_factory_make_with_properties: no such element factory "compositemixer"!
632 0x7fb6a0002330 ERROR                   glib GLib-GObject:0:: g_object_ref: assertion 'G_IS_OBJECT (object)' failed
(kurento-media-server:632): GStreamer-CRITICAL **: 06:17:11.080: gst_bin_add: assertion 'GST_IS_ELEMENT (element)' failed
632 0x7fb6940022d0 WARN     GST_ELEMENT_FACTORY gstelementfactory.c:701:gst_element_factory_make_with_properties: no such element factory "hubport"!
# After application servver diconnect
632 0x7fb688001600 DEBUG        KurentoMediaSet MediaSet.cpp:121:doGarbageCollection: Running garbage collector
632 0x7fb688002360 DEBUG        KurentoMediaSet MediaSet.cpp:463:async_delete: Destroying Composite -> da29907d-7dc5-45c6-af84-526f0cc85753_kurento.MediaPipeline/bbf2a5e2-8425-4706-aa66-d82230897238_kurento.Composite
(kurento-media-server:632): GStreamer-CRITICAL **: 06:20:05.630: gst_bin_remove: assertion 'GST_IS_ELEMENT (element)' failed
(kurento-media-server:632): GStreamer-CRITICAL **: 06:20:05.630: gst_element_set_state: assertion 'GST_IS_ELEMENT (element)' failed
632 0x7fb688002360 ERROR                   glib GLib-GObject:0:: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
632 0x7fb688002360 DEBUG        KurentoMediaSet MediaSet.cpp:463:async_delete: Destroying MediaPipeline -> da29907d-7dc5-45c6-af84-526f0cc85753_kurento.MediaPipeline
with 1.20, media server Log info:
# Hello-World-Recording Application Server Error Msg
Cannot create gstreamer element: webrtcendpoint (Code:40108, Type:null, Data: {"type":"MEDIA_OBJECT_NOT_AVAILABLE"})
with 1.22, media server Log info:
# Group-Call Application Server Error Msg
Cannot create gstreamer element: hubport (Code:40108, Type:null, Data: {"type":"MEDIA_OBJECT_NOT_AVAILABLE"})
  • I trace similar issues from past to present, I can't find any solution, or perhaps my issues not like these? :

How to reproduce?

Expected & current behavior

(Optional) Possible solution

Info about your environment

configs

  • WebRtcEndpoint.conf.ini
stunServerAddress=stun.l.google.com:19302
stunServerPort=3478
  • SdpEndpoint.conf.json
{
    "numAudioMedias": 1,
    "numVideoMedias": 1,
    "audioCodecs": [
        {
            "name": "opus/48000/2",
            "//": "Next is an example about how a codec can be configured.",
            "//": "WARNING: Usage of properties is not yet supported",
            "//properties": {
                "//maxcodedaudiobandwidth": "16000",
                "//maxaveragebitrate": "20000",
                "//stereo": "1",
                "//useinbandfec": "1",
                "//usedtx": "0"
            }
        },
        { "name": "PCMU/8000" },
        { "name": "AMR/8000" }
    ],
    "videoCodecs": [
        { "name": "H264/90000" }
    ]
}
  • MediaElement.conf.ini
//...

encoderBitrate=6000000

//...

minEncoderBitrate=2000000

//...

maxEncoderBitrate=6000000

About Kurento Media Server

About your Application Server

  • Programming Language: Java
  • Kurento Client version: 7.0.0

About end-user clients

  • Device(s): PC
  • OS(es): Windows 10
  • Browser(s): Chrome 114

Run these commands

gst-inspect-1.0 --gst-version
GStreamer Core Library version 1.16.3
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.6 LTS"
kurento-media-server --version
0:00:00.017338554  4554 0x55f2eba16150 DEBUG   KurentoModuleManager ModuleManager.cpp:172:loadModules: Looking for modules in path: /usr/lib/x86_64-linux-gnu/kurento/modules
0:00:00.017453925  4554 0x55f2eba16150 DEBUG   KurentoModuleManager ModuleManager.cpp:182:loadModules: Found file: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmscoremodule.so
0:00:00.017879398  4554 0x55f2eba16150 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmscoremodule.so, module name: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmscoremodule.so
0:00:00.017939089  4554 0x55f2eba16150 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: core, version: 7.0.0, date: Mar 21 2023 16:57:44
0:00:00.017997539  4554 0x55f2eba16150 DEBUG   KurentoModuleManager ModuleManager.cpp:182:loadModules: Found file: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmselementsmodule.so
0:00:00.030635033  4554 0x55f2eba16150 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmselementsmodule.so, module name: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmselementsmodule.so
0:00:00.030701494  4554 0x55f2eba16150 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: elements, version: 7.0.0, date: Mar 21 2023 17:03:47
0:00:00.030737904  4554 0x55f2eba16150 DEBUG   KurentoModuleManager ModuleManager.cpp:182:loadModules: Found file: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmsfiltersmodule.so
0:00:00.031636361  4554 0x55f2eba16150 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmsfiltersmodule.so, module name: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmsfiltersmodule.so
0:00:00.031695762  4554 0x55f2eba16150 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: filters, version: 7.0.0, date: Mar 21 2023 17:09:51
Kurento Media Server version: 7.0.0
Found modules:
        'core' version 7.0.0
        'elements' version 7.0.0
        'filters' version 7.0.0
dpkg -l | grep -Pi 'kurento|kms-|gst.*1.5|nice'
ii  gstreamer1.0-nice:amd64              0.1.18-0kurento1                  amd64        ICE library (GStreamer plugin)
ii  gstreamer1.0-plugins-good:amd64      1:1.16.3-0ubuntu1.1kurento1       amd64        GStreamer plugins from the "good" set
ii  gstreamer1.0-plugins-good-kurento    1.0.0-0kurento1ubuntu1            amd64        Dummy package that depends on Kurento patched gstreamer1.0-plugins-good (shared library)
ii  kurento-jsonrpc                      7.0.0-1kurento1                   amd64        Kurento JSON-RPC library
ii  kurento-media-server                 7.0.0-1kurento1                   amd64        Kurento Media Server
ii  kurento-module-core                  7.0.0-1kurento1                   amd64        Core module for use by Kurento Media Server
ii  kurento-module-elements              7.0.0-1kurento1                   amd64        Kurento Elements module
ii  kurento-module-filters               7.0.0-1kurento1                   amd64        Kurento Filters module
ii  libgstreamer-plugins-good1.0-0:amd64 1:1.16.3-0ubuntu1.1kurento1       amd64        GStreamer development files for libraries from the "good" set
ii  libnice10:amd64                      0.1.18-0kurento1                  amd64        ICE library (shared library)
ii  libsrtp-kurento                      1.0.0-0kurento1ubuntu1            amd64        Dummy package that depends on Kurento patched libsrtp (shared library)
ii  libsrtp2-1:amd64                     1:2.3.0-2kurento1                 amd64        Secure RTP (SRTP) and UST Reference Implementations - shared library
ii  openh264                             2.3.0-0kurento1                   amd64        OpenH264 Video Codec provided by Cisco Systems, Inc.
ii  openh264-gst-plugin                  1.0.0-0kurento1ubuntu1            amd64        OpenH264 plugin for GStreamer
@Suaro
Copy link

Suaro commented Apr 11, 2024

Hi,

Any update with this issue? I know Kurento is in low mantainance mode, but I think there are a possible compatibility issue in Kurento with new H264/X264 releases of 2024.

I reproduce same behaviour in iOS 17.4 devices in Safari. It happens 80% of connections. When everything works fine, there are no WARN/ERROR logs related to this, but sometimes, Kurento in latest version (7.0.1) prints:

(enabling MKV):

ERROR   KurentoMediaElementImpl MediaElementImpl.cpp:456:processBusMessage:<kmsrecorderendpoint43> Error code 10: Could not multiplex stream., source: kmsrecorderendpoint43, element: kmsrecorderendpoint43, debug info: matroska-mux.c(991): gst_matroska_mux_can_renegotiate_caps (): /GstPipeline:pipeline59/GstMatroskaMux:avmuxer_matroskamux37:

Most caps changes are not supported by Matroska

Current: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0164001effe100132764001eac131470781469b81010103c22119e01000428ee3cb0, level=(string)3, profile=(string)high, width=(int)480, height=(int)640, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true

New: video/x-h264, codec_data=(buffer)0164001effe1001d6764001eacb40b077c44f80b706010540000030005dcd650003c58ba8001000468ef3cb0, stream-format=(string)avc, alignment=(string)au, level=(string)3, profile=(string)high, width=(int)338, height=(int)452, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:4, chroma-site=(string)mpeg2, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono

Enabling MP4:


0:12:09.842125763    12 0x7f21dde0f2a0 WARN                   qtmux gstqtmux.c:5118:gst_qt_mux_can_renegotiate:<avmuxer_mp4mux12> pad video_0 refused renegotiation to video/x-h264, codec_data=(buffer)0164001effe1001f6764001eacb40f028dff80a900a9b706010540000003005dcd650003c58ba801000468ef3cb0, stream-format=(string)avc, alignment=(string)au, level=(string)3, profile=(string)high, width=(int)480, height=(int)640, pixel-aspect-ratio=(fraction)338/339, framerate=(fraction)0/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:4, chroma-site=(string)mpeg2, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono

0:12:09.843460714    12 0x7f21dde0f2a0 WARN                   qtmux gstqtmux.c:5118:gst_qt_mux_can_renegotiate:<avmuxer_mp4mux12> pad video_0 refused renegotiation to video/x-h264, codec_data=(buffer)0164001effe1001f6764001eacb40f028dff80a900a9b706010540000003005dcd650003c58ba801000468ef3cb0, stream-format=(string)avc, alignment=(string)au, level=(string)3, profile=(string)high, width=(int)480, height=(int)640, pixel-aspect-ratio=(fraction)338/339, framerate=(fraction)0/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:4, chroma-site=(string)mpeg2, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono

0:12:09.843517636    12 0x7f21dde0f2a0 WARN                 basesrc gstbasesrc.c:3072:gst_base_src_loop:<avMuxerVideoSrc> error: Internal data stream error.

0:12:09.843527036    12 0x7f21dde0f2a0 WARN                 basesrc gstbasesrc.c:3072:gst_base_src_loop:<avMuxerVideoSrc> error: streaming stopped, reason not-negotiated (-4)

0:12:09.844702412    12 0x7f21dde0f2a0 WARN                   qtmux gstqtmux.c:5118:gst_qt_mux_can_renegotiate:<avmuxer_mp4mux12> pad video_0 refused renegotiation to video/x-h264, codec_data=(buffer)0164001effe1001f6764001eacb40f028dff80a900a9b706010540000003005dcd650003c58ba801000468ef3cb0, stream-format=(string)avc, alignment=(string)au, level=(string)3, profile=(string)high, width=(int)480, height=(int)640, pixel-aspect-ratio=(fraction)338/339, framerate=(fraction)0/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:4, chroma-site=(string)mpeg2, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono

0:12:09.844930737    12 0x7f22132bdb50 ERROR   KurentoMediaElementImpl MediaElementImpl.cpp:456:processBusMessage:<kmsrecorderendpoint12> Error code 1: Internal data stream error., source: kmsrecorderendpoint12, element: kmsrecorderendpoint12, debug info: gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline15/GstAppSrc:avMuxerVideoSrc:
streaming stopped, reason not-negotiated (-4)

0:12:09.846331946    12 0x7f21dde0f2a0 WARN                   qtmux gstqtmux.c:5118:gst_qt_mux_can_renegotiate:<avmuxer_mp4mux12> pad video_0 refused renegotiation to video/x-h264, codec_data=(buffer)0164001effe1001f6764001eacb40f028dff80a900a9b706010540000003005dcd650003c58ba801000468ef3cb0, stream-format=(string)avc, alignment=(string)au, level=(string)3, profile=(string)high, width=(int)480, height=(int)640, pixel-aspect-ratio=(fraction)338/339, framerate=(fraction)0/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:4, chroma-site=(string)mpeg2, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono

0:12:09.847353331    12 0x7f21dde0f2a0 WARN                   qtmux gstqtmux.c:5118:gst_qt_mux_can_renegotiate:<avmuxer_mp4mux12> pad video_0 refused renegotiation to video/x-h264, codec_data=(buffer)0164001effe1001f6764001eacb40f028dff80a900a9b706010540000003005dcd650003c58ba801000468ef3cb0, stream-format=(string)avc, alignment=(string)au, level=(string)3, profile=(string)high, width=(int)480, height=(int)640, pixel-aspect-ratio=(fraction)338/339, framerate=(fraction)0/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:4, chroma-site=(string)mpeg2, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono

Curiously, we receive correctly images in our custom OpenCV filter (we're saving all frames Kurento receive for testing purposes) but final video is pixelated, trimmed, partially black... Could be related to transcoding or something like that?

According to GStreamer errors, it seems an incompatibility issue. Any light on that? By the way, I reproduce same behaviour in OpenVidu demo with Kurento backend.

Regards.

@Suaro
Copy link

Suaro commented Apr 11, 2024

Could it be related to old issue Kurento/bugtracker#535? As far as I saw in @j1elo comments, no fix was implemented (because matroska and VP8). I don't know if at least, you have a workaround.

Regards.

@j1elo
Copy link
Member

j1elo commented Apr 12, 2024

The problem is exactly issue Kurento/bugtracker#535, as mentioned above, and it stems from this:

Current: video/x-h264, width=(int)480, height=(int)640
New: video/x-h264, width=(int)338, height=(int)452

Problem was that Kurento got upgraded to use the GStreamer dependency that comes with Ubuntu 20.04 (GStreamer 1.16), but it turns out that this came with breaking changes in behaviors (I guess at some point they considered it a bug but then changed their mind and considered it a regression, but in the meantime a release was cut, published, and ended up being part of Ubuntu).

Solution is not small as it would consist on researching a bit about that GStreamer issue, see which commits fixed the problem, then locate which releases already contain the commit(s) to be clear on what GStreamer version needs to be used. And then, the major part, upgrading Kurento to make it work with that version. It's not a trivial thing to do because GStreamer sometimes changes internals such that old code needs to be changed in order to use newer versions of the library.

I'd like to get some of my own time at some point to do the upgrade. For now, may I suggest you try using the latest available version of Kurento 6.x?

@j1elo
Copy link
Member

j1elo commented Apr 12, 2024

Seems that I had done the initial part that I mentioned:

Kurento/bugtracker#535 (comment)

So GStreamer >= 1.20 seems to contain the fixes already. But as the next comment in that issue points out, there seem to be some other additional issues when using those newer versions of GStreamer!

No doubt, those corruption issues come probably from the fact that the user who tested with GStteamer 1.21 tried to use Kurento 7 as-is, without the work to adapt it to possible breaking changes. As expected, some work needs to be done explicitly to support newer versions of the library, it cannot be used as-is like nothing bad would happen.

@Suaro
Copy link

Suaro commented Apr 13, 2024

Hi @j1elo

Thanks for your quick response. I think I 've understood properly root cause of problem.

I got your advice to rollback to previos Kurento versión (6.18.0) but I've been looking for a quick solution and I found (already deprecated) degradationPreference parameter (https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender/setParameters#degradationpreference) and I think it could be a mitigation and possible cause of behaviour we're experiencing since iOS 17.4.

According to iOS 17.4 release notes, they "fixed" degradationPreference's "mantain-framerate" option (https://developer.apple.com/documentation/safari-release-notes/safari-17_4-release-notes#WebRTC) and It seems they fixed "balanced" option too (which is default value), so probable it's related to our recent problem.

When I have a chance to test It, I'll come back to share my results.

Regards.

@Suaro
Copy link

Suaro commented Apr 14, 2024

Hi all,

In case it helps to anyone, issue for me is solved setting "degradationPreference" parameter to "mantain-resolution". Sample code:

  private addMediaStreamTracks(stream: MediaStream, webRtcPeer: RTCPeerConnection) {
    const tracksResponse = stream.getTracks();
    tracksResponse.forEach((track: MediaStreamTrack) => {
      if (webRtcPeer) {
        const sender = webRtcPeer.addTrack(track, stream);
       
        if(track.kind == 'video') {
          track.contentHint = 'text';
          const parameters = sender.getParameters();
          parameters.degradationPreference = "maintain-resolution";
          sender.setParameters(parameters);
        }
      }
    });
  }

Anyway, this is a mitigation because Kurento shouldn't crash. Do you have plans to upgrade it to latest version of Gstreamer? I think I could help in case is needed.

Regards.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants