Meanings and main differences:
As you can see in your definition of profile-level-id
, it has a default and so it can be omitted in the signalling negotiation. The string contained in this parameter is in hexadecimal format and it has 3 bytes that inform the decoder about the profile, the constraints and the level that will be used to send data. This settings define several parameters like the bitrate, the resolution, the type of packets...
The parameter sprop-parameter-sets
can be seen as the key to decode the data that you will be sending. It contains some bytes that will be used to encode the data, and so you share it with the receiver so that it can decode the video packets. It can also be omitted from the signalling, but they are mandatory for the decoder, so they can also be sent in-band. So if you omit them in the sdp, they need to be sent in the packets. The receiver can only decode the data after receiving this information.
Problem 1:
As stated before, profile-level-id
can be omitted and it still works because the default 420010
will be used. The only difference is that the settings will be different, and probably, the video quality will be affected. For example, 42 in the default is referencing the Constrained Baseline Profile (CBP) and the 64 in your initial value in SDP is referencing High Profile (HiP).
The video is not working when sprop-parameter-sets
is missing probably because vlc does not support sending that data in-band, and as I explained above, it is mandatory.
Problem 2:
Many SIP implementations has support to send sprop-parameter-sets
in-band, and that's what you are capturing. Check the h264 packets in Wireshark, and you will see the description for this values in some packets.