Skip to content

[1.x] It cannot get the info about "audiolevel_ext_id""videoorient_ext_id""playoutdelay_ext_id" of remote publisher #3252

Open
@jamken

Description

@jamken

What version of Janus is this happening on?
v1.1.4 about cascade featre

Have you tested a more recent version of Janus too?
Yes

Was this working before?
No

Is there a gdb or libasan trace of the issue?
No

Additional context

hi, @lminiero

I am the maintainer of Janus-cloud (https://github.com/OpenSight/janus-cloud), which is a orchestrator of Janus-gateway. When I try to support the cascade feature for Janus-gateway, I found I don't know about"audiolevel_ext_id""videoorient_ext_id""playoutdelay_ext_id" info of remote publisher when invoking "add_remote_publisher" and "update_remote_publisher" request. The other stream's info, like type, code, mid, can be retrieved from the reply of the "publish" request for the original publisher. So, maybe Janus-gateway can add these stream's info ("audiolevel_ext_id""videoorient_ext_id""playoutdelay_ext_id" ) to the reply of "publish/configure" request of the normal publisher in next version. The current code which return the publisher's stream info is like below:

       while(temp) {
              ......
					temp = temp->next;
					/* Add to the info we send back to the publisher */
					json_t *info = json_object();
					json_object_set_new(info, "type", json_string(janus_videoroom_media_str(ps->type)));
					json_object_set_new(info, "mindex", json_integer(ps->mindex));
					json_object_set_new(info, "mid", json_string(ps->mid));
					if(ps->disabled) {
						json_object_set_new(info, "disabled", json_true());
					} else {
						if(ps->description)
							json_object_set_new(info, "description", json_string(ps->description));
						if(ps->type == JANUS_VIDEOROOM_MEDIA_AUDIO) {
							json_object_set_new(info, "codec", json_string(janus_audiocodec_name(ps->acodec)));
							if(ps->acodec == JANUS_AUDIOCODEC_OPUS) {
								if(ps->opusstereo)
									json_object_set_new(info, "stereo", json_true());
								if(ps->opusfec)
									json_object_set_new(info, "fec", json_true());
								if(ps->opusdtx)
									json_object_set_new(info, "dtx", json_true());
							}
						} else if(ps->type == JANUS_VIDEOROOM_MEDIA_VIDEO) {
							json_object_set_new(info, "codec", json_string(janus_videocodec_name(ps->vcodec)));
							if(ps->vcodec == JANUS_VIDEOCODEC_H264 && ps->h264_profile != NULL)
								json_object_set_new(info, "h264_profile", json_string(ps->h264_profile));
							else if(ps->vcodec == JANUS_VIDEOCODEC_VP9 && ps->vp9_profile != NULL)
								json_object_set_new(info, "vp9_profile", json_string(ps->vp9_profile));
							if(ps->simulcast)
								json_object_set_new(info, "simulcast", json_true());
							if(ps->svc)
								json_object_set_new(info, "svc", json_true());
						}
					}
					json_array_append_new(media, info);
				}


If Janus-gateway can return "audiolevel_ext_id""videoorient_ext_id""playoutdelay_ext_id" for the normal publisher, it's more convenient for orchestrator to create the remote publisher. Thanks

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions