RTSP/SRTP in gstreamer (MIKEY vrl2rtspserver)

Manikandan Valaguru via gstreamer-devel <[email protected]> Thu, 27 Mar 2025 06:24:19 +0000
Newsgroups gmane.comp.video.gstreamer.devel
Message-ID <KL1PR03MB81175F2448A272160942A6BFB5A12@KL1PR03MB8117.apcprd03.prod.outlook.com>
--_004_KL1PR03MB81175F2448A272160942A6BFB5A12KL1PR03MB8117apcp_
Content-Type: multipart/alternative;
	boundary="_000_KL1PR03MB81175F2448A272160942A6BFB5A12KL1PR03MB8117apcp_"

--_000_KL1PR03MB81175F2448A272160942A6BFB5A12KL1PR03MB8117apcp_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hi,
I am currently working with a custom v4l2rtspserver built on Live555, aimin=
g to enable RTSPS (RTSP over TLS) and SRTP (Secure RTP) for secure video st=
reaming. My objective is to stream encrypted video and successfully decode =
it in GStreamer.

Based on my understanding:

    RTSPS encryption and decryption rely on TLS certificates.

    SRTP requires a decryption key, which can be extracted from the MIKEY d=
ata in the SDP (Session Description Protocol) of the RTSP response.

    Using this key, I need to construct a GStreamer pipeline to decrypt SRT=
P packets.

Could you confirm if this approach is correct?

Currently, I am extracting the SRTP key from the SDP session and embedding =
it into the GStreamer pipeline as follows:

GST_DEBUG=3D3 gst-launch-1.0 rtspsrc location=3Drtsps://econ:[email protected]=
.23:5005/routecam tls-validation-flags=3D4 protocols=3Dudp \
    ! application/x-srtp, srtp-key=3Da053ace0edcaba09192bff35fa01da6170317c=
d36af12b87be015f416701, \
      srtp-cipher=3Daes-128-icm, srtp-auth=3Dhmac-sha1-80, roc=3D0 \
    ! srtpdec \
    ! rtph264depay \
    ! avdec_h264 \
    ! xvimagesink -v

However, I am encountering issues during playback. I have attached the erro=
r logs and MIKEY data for reference. Could you please review them and let m=
e know if I am missing anything?

Looking forward to your insights.

Regards,
Manikandan
This email and any files transmitted with it are confidential and intended =
solely for the use of the individual or entity to whom they are addressed. =
If you are not the named addressee you should not disseminate, distribute o=
r copy this e-mail. Taking any action in reliance on the contents of this i=
nformation is strictly prohibited. Please notify the sender immediately by =
e-mail if you have received this e-mail by mistake and delete this e-mail f=
rom your system. WARNING: Although the company has taken reasonable precaut=
ions to ensure no viruses are present in this email, e-con cannot accept re=
sponsibility for any loss or damage arising from the use of this email or a=
ttachment.

--_000_KL1PR03MB81175F2448A272160942A6BFB5A12KL1PR03MB8117apcp_
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
1">
<style type=3D"text/css" style=3D"display:none;"> P {margin-top:0;margin-bo=
ttom:0;} </style>
</head>
<body dir=3D"ltr">
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
Hi,<br>
I am currently working with a custom v4l2rtspserver built on Live555, aimin=
g to enable RTSPS (RTSP over TLS) and SRTP (Secure RTP) for secure video st=
reaming. My objective is to stream encrypted video and successfully decode =
it in GStreamer.</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
Based on my understanding:</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
&nbsp; &nbsp; RTSPS encryption and decryption rely on TLS certificates.</di=
v>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
&nbsp; &nbsp; SRTP requires a decryption key, which can be extracted from t=
he MIKEY data in the SDP (Session Description Protocol) of the RTSP respons=
e.</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
&nbsp; &nbsp; Using this key, I need to construct a GStreamer pipeline to d=
ecrypt SRTP packets.</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
Could you confirm if this approach is correct?</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
Currently, I am extracting the SRTP key from the SDP session and embedding =
it into the GStreamer pipeline as follows:</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
GST_DEBUG=3D3 gst-launch-1.0 rtspsrc location=3Drtsps://econ:[email protected]=
.23:5005/routecam tls-validation-flags=3D4 protocols=3Dudp \</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
&nbsp; &nbsp; ! application/x-srtp, srtp-key=3Da053ace0edcaba09192bff35fa01=
da6170317cd36af12b87be015f416701, \</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
&nbsp; &nbsp; &nbsp; srtp-cipher=3Daes-128-icm, srtp-auth=3Dhmac-sha1-80, r=
oc=3D0 \</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
&nbsp; &nbsp; ! srtpdec \</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
&nbsp; &nbsp; ! rtph264depay \</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
&nbsp; &nbsp; ! avdec_h264 \</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
&nbsp; &nbsp; ! xvimagesink -v</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
However, I am encountering issues during playback. I have attached the erro=
r logs and MIKEY data for reference. Could you please review them and let m=
e know if I am missing anything?</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
Looking forward to your insights.<br>
<br>
Regards,</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c=
olor: rgb(0, 0, 0);">
Manikandan</div>
This email and any files transmitted with it are confidential and intended =
solely for the use of the individual or entity to whom they are addressed. =
If you are not the named addressee you should not disseminate, distribute o=
r copy this e-mail. Taking any action
 in reliance on the contents of this information is strictly prohibited. Pl=
ease notify the sender immediately by e-mail if you have received this e-ma=
il by mistake and delete this e-mail from your system. WARNING: Although th=
e company has taken reasonable precautions
 to ensure no viruses are present in this email, e-con cannot accept respon=
sibility for any loss or damage arising from the use of this email or attac=
hment.
</body>
</html>

--_000_KL1PR03MB81175F2448A272160942A6BFB5A12KL1PR03MB8117apcp_--

--_004_KL1PR03MB81175F2448A272160942A6BFB5A12KL1PR03MB8117apcp_
Content-Type: application/zip; name="error_logs.zip"
Content-Description: error_logs.zip
Content-Disposition: attachment; filename="error_logs.zip"; size=5505;
	creation-date="Thu, 27 Mar 2025 06:23:20 GMT";
	modification-date="Thu, 27 Mar 2025 06:23:52 GMT"
Content-Transfer-Encoding: base64

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

--_004_KL1PR03MB81175F2448A272160942A6BFB5A12KL1PR03MB8117apcp_--