GStreamer + pcap SIP call

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

GStreamer + pcap SIP call

GStreamer-devel mailing list

Hi all,

 

I am using GStreamer to create a video file from a pcap dump file that contains RTP traffic of SIP calls (2 or 2+ legs).

 

For example,

“call123-media.pcap” with 2 legs contains only SIP call media (OPUS + VP8 RTP packets).

Pcap captured on one server.

Every leg has 1 audio + 2 video (videoIN + videoOUT) streams.

 

Streams start and end at the same time (after trimming the pcap file).

 

I am using the following pipeline for converting:

gst-launch-1.0 videomixer name=m background=1 \

                sink_0::xpos=0 sink_0::ypos=0 sink_0::width=640 sink_0::height=480 \

                sink_1::xpos=640 sink_1::ypos=0 sink_1::width=640 sink_1::height=480 ! queue ! x264enc tune=zerolatency pass=17 bitrate=768 ! queue \

                ! mp4mux name=avMux faststart=true ! queue ! filesink location=call123-media.mp4 \

                rtpbin name=rtpbin \

                filesrc location=call123-media.pcap ! queue ! tee name=pcapTee \

                pcapTee. ! queue ! pcapparse src-port=16242 ! application/x-rtp,media=audio,clock-rate=48000,encoding-name=OPUS ! rtpbin. \

                pcapTee. ! queue ! pcapparse src-port=17234 ! application/x-rtp,media=audio,clock-rate=48000,encoding-name=OPUS ! rtpbin. \

                pcapTee. ! queue ! pcapparse src-port=16268 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=VP8 ! rtpbin. \

                pcapTee. ! queue ! pcapparse src-port=17254 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=VP8 ! rtpbin. \

                \

                rtpbin. ! rtpjitterbuffer ! rtpopusdepay ! opusdec ! audioconvert ! avenc_aac ! avMux.audio_0 \

                rtpbin. ! rtpjitterbuffer ! rtpopusdepay ! opusdec ! audioconvert ! avenc_aac ! avMux.audio_1 \

                rtpbin. ! rtpjitterbuffer ! rtpvp8depay ! vp8dec ! videoscale ! video/x-raw,width=640,height=480 ! m. \

                rtpbin. ! rtpjitterbuffer ! rtpvp8depay ! vp8dec ! videoscale ! video/x-raw,width=640,height=480 ! m.

 

 

As a result, I get two video streams, where the first is not started simultaneously with the second.

 

I am getting following results:

  1. the first stream starts 5 seconds after the start of the second (5 seconds of black screen)
  2. the second stream ends 5 seconds after the end of the first
  3. video streams are not synchronous

 

What wrong with my pipeline?

How can I fix that?

 

I tried adding queues but it didn't help.

 

-- 

Thanks in advance,

Alexander

 


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: GStreamer + pcap SIP call

GStreamer-devel mailing list
I use:

gst-launch-1.0 filesrc location=out.pcap ! pcapparse dst-port=24384 caps="application/x-rtp,media=(string)video, clock-rate=(int)90000, encoding-name=(string)VP8-DRAFT-IETF-01, payload=(int)96" ! rtpvp8depay ! webmmux ! filesink location=out.webm

><>
Nathan Stratton
Founder, CTO
Vocinity, Inc. 


On Fri, Jun 4, 2021 at 6:58 AM Жаров Александр Николаевич via gstreamer-devel <[hidden email]> wrote:

Hi all,

 

I am using GStreamer to create a video file from a pcap dump file that contains RTP traffic of SIP calls (2 or 2+ legs).

 

For example,

“call123-media.pcap” with 2 legs contains only SIP call media (OPUS + VP8 RTP packets).

Pcap captured on one server.

Every leg has 1 audio + 2 video (videoIN + videoOUT) streams.

 

Streams start and end at the same time (after trimming the pcap file).

 

I am using the following pipeline for converting:

gst-launch-1.0 videomixer name=m background=1 \

                sink_0::xpos=0 sink_0::ypos=0 sink_0::width=640 sink_0::height=480 \

                sink_1::xpos=640 sink_1::ypos=0 sink_1::width=640 sink_1::height=480 ! queue ! x264enc tune=zerolatency pass=17 bitrate=768 ! queue \

                ! mp4mux name=avMux faststart=true ! queue ! filesink location=call123-media.mp4 \

                rtpbin name=rtpbin \

                filesrc location=call123-media.pcap ! queue ! tee name=pcapTee \

                pcapTee. ! queue ! pcapparse src-port=16242 ! application/x-rtp,media=audio,clock-rate=48000,encoding-name=OPUS ! rtpbin. \

                pcapTee. ! queue ! pcapparse src-port=17234 ! application/x-rtp,media=audio,clock-rate=48000,encoding-name=OPUS ! rtpbin. \

                pcapTee. ! queue ! pcapparse src-port=16268 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=VP8 ! rtpbin. \

                pcapTee. ! queue ! pcapparse src-port=17254 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=VP8 ! rtpbin. \

                \

                rtpbin. ! rtpjitterbuffer ! rtpopusdepay ! opusdec ! audioconvert ! avenc_aac ! avMux.audio_0 \

                rtpbin. ! rtpjitterbuffer ! rtpopusdepay ! opusdec ! audioconvert ! avenc_aac ! avMux.audio_1 \

                rtpbin. ! rtpjitterbuffer ! rtpvp8depay ! vp8dec ! videoscale ! video/x-raw,width=640,height=480 ! m. \

                rtpbin. ! rtpjitterbuffer ! rtpvp8depay ! vp8dec ! videoscale ! video/x-raw,width=640,height=480 ! m.

 

 

As a result, I get two video streams, where the first is not started simultaneously with the second.

 

I am getting following results:

  1. the first stream starts 5 seconds after the start of the second (5 seconds of black screen)
  2. the second stream ends 5 seconds after the end of the first
  3. video streams are not synchronous

 

What wrong with my pipeline?

How can I fix that?

 

I tried adding queues but it didn't help.

 

-- 

Thanks in advance,

Alexander

 

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: GStreamer + pcap SIP call

GStreamer-devel mailing list

Thanks for your reply!

 

I am trying to fetch 4 rtp sessions from a pcap file in the same pipeline simultaneously.

What should I do to keep all sessions in sync?

 

Thanks in advance,

Alexander

 

From: Nathan Stratton <[hidden email]>
Date: Friday, 4 June 2021, 5:13 PM
To: Discussion of the development of and with GStreamer <[hidden email]>
Cc: Жаров Александр Николаевич <[hidden email]>
Subject: Re: GStreamer + pcap SIP call

 

I use:

 

gst-launch-1.0 filesrc location=out.pcap ! pcapparse dst-port=24384 caps="application/x-rtp,media=(string)video, clock-rate=(int)90000, encoding-name=(string)VP8-DRAFT-IETF-01, payload=(int)96" ! rtpvp8depay ! webmmux ! filesink location=out.webm

 

><> 

Nathan Stratton

Founder, CTO

Vocinity, Inc. 

 

 

On Fri, Jun 4, 2021 at 6:58 AM Жаров Александр Николаевич via gstreamer-devel <[hidden email]> wrote:

Hi all,

 

I am using GStreamer to create a video file from a pcap dump file that contains RTP traffic of SIP calls (2 or 2+ legs).

 

For example,

“call123-media.pcap” with 2 legs contains only SIP call media (OPUS + VP8 RTP packets).

Pcap captured on one server.

Every leg has 1 audio + 2 video (videoIN + videoOUT) streams.

 

Streams start and end at the same time (after trimming the pcap file).

 

I am using the following pipeline for converting:

gst-launch-1.0 videomixer name=m background=1 \

                sink_0::xpos=0 sink_0::ypos=0 sink_0::width=640 sink_0::height=480 \

                sink_1::xpos=640 sink_1::ypos=0 sink_1::width=640 sink_1::height=480 ! queue ! x264enc tune=zerolatency pass=17 bitrate=768 ! queue \

                ! mp4mux name=avMux faststart=true ! queue ! filesink location=call123-media.mp4 \

                rtpbin name=rtpbin \

                filesrc location=call123-media.pcap ! queue ! tee name=pcapTee \

                pcapTee. ! queue ! pcapparse src-port=16242 ! application/x-rtp,media=audio,clock-rate=48000,encoding-name=OPUS ! rtpbin. \

                pcapTee. ! queue ! pcapparse src-port=17234 ! application/x-rtp,media=audio,clock-rate=48000,encoding-name=OPUS ! rtpbin. \

                pcapTee. ! queue ! pcapparse src-port=16268 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=VP8 ! rtpbin. \

                pcapTee. ! queue ! pcapparse src-port=17254 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=VP8 ! rtpbin. \

                \

                rtpbin. ! rtpjitterbuffer ! rtpopusdepay ! opusdec ! audioconvert ! avenc_aac ! avMux.audio_0 \

                rtpbin. ! rtpjitterbuffer ! rtpopusdepay ! opusdec ! audioconvert ! avenc_aac ! avMux.audio_1 \

                rtpbin. ! rtpjitterbuffer ! rtpvp8depay ! vp8dec ! videoscale ! video/x-raw,width=640,height=480 ! m. \

                rtpbin. ! rtpjitterbuffer ! rtpvp8depay ! vp8dec ! videoscale ! video/x-raw,width=640,height=480 ! m.

 

 

As a result, I get two video streams, where the first is not started simultaneously with the second.

 

I am getting following results:

  1. the first stream starts 5 seconds after the start of the second (5 seconds of black screen)
  2. the second stream ends 5 seconds after the end of the first
  3. video streams are not synchronous

 

What wrong with my pipeline?

How can I fix that?

 

I tried adding queues but it didn't help.

 

-- 

Thanks in advance,

Alexander

 

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel