Top Banner
gst-rtsp-server Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK
38

Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

Jan 17, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

gst-rtsp-server

Wim Taymans

22 Oct 2013 – GStreamer ConferenceEdinburgh, UK

Page 2: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

A Library to make it easy to develop RTSP servers

Page 3: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers
Page 4: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

● Testing RTSP library● Test rtspsrc● Test RTP caps

Page 5: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

● Live streams and on-demand streams● Not so good on the internet● Very good for low-latency streaming on

local network

Page 6: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

exampes/test-ogg

Example

Page 7: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

● RTP over UDP needs port setup and destination IP

● RTP just streams, need something to start/pause/stop/seek

● RTP receiver needs extra info to decode packets (clock-rate,...)

Example

Page 8: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

C->S DESCRIBE rtsp://127.0.0.1:8554/test RTSP/1.0 CSeq: 2 Accept: application/sdp Date: Tue, 15 Oct 2013 17:22:57 GMT

S->C RTSP/1.0 200 OK CSeq: 2 Content-Type: application/sdp Content-Base: rtsp://127.0.0.1:8554/test/ Server: GStreamer RTSP server Date: Tue, 15 Oct 2013 17:22:57 GMT Content-Length: 407

v=0 o=- 1188340656180883 1 IN IP4 127.0.0.1 s=Session streamed with GStreamer i=rtsp-server t=0 0 a=tool:GStreamer a=type:broadcast a=control:* a=range:npt=0- m=video 0 RTP/AVP 96 c=IN IP4 0.0.0.0 a=rtpmap:96 H264/90000 a=control:stream=0 a=fmtp:96 sprop-parameter-sets=Z0LAFdkBYJbARAAAAwAF3NZQADxYuSA=,aMuMsg== m=audio 0 RTP/AVP 8 c=IN IP4 0.0.0.0 a=rtpmap:8 PCMA/8000 a=control:stream=1

Page 9: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

C->S SETUP rtsp://127.0.0.1:8554/test/stream=0 RTSP/1.0 CSeq: 3 Transport: RTP/AVP;unicast;client_port=45168-45169 Date: Tue, 15 Oct 2013 17:22:57 GMT

S->C RTSP/1.0 200 OK CSeq: 3 Transport: RTP/AVP;unicast;client_port=45168-45169; server_port=53730-53731;mode="PLAY" Server: GStreamer RTSP server Session: s_kKG6GL8WrEhrP7 Date: Tue, 15 Oct 2013 17:22:57 GMT

Page 10: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

C->S SETUP rtsp://127.0.0.1:8554/test/stream=1 RTSP/1.0 CSeq: 4 Transport: RTP/AVP;unicast;client_port=58026-58027 Session: s_kKG6GL8WrEhrP7 Date: Tue, 15 Oct 2013 17:22:57 GMT

S->C RTSP/1.0 200 OK CSeq: 4 Transport: RTP/AVP;unicast;client_port=58026-58027; server_port=37952-37953;mode="PLAY" Server: GStreamer RTSP server Session: s_kKG6GL8WrEhrP7 Date: Tue, 15 Oct 2013 17:22:57 GMT

Page 11: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

C->S PLAY rtsp://127.0.0.1:8554/test RTSP/1.0 CSeq: 5 Range: npt=0- Session: s_kKG6GL8WrEhrP7 Date: Tue, 15 Oct 2013 17:22:57 GMT

S->C RTSP/1.0 200 OK CSeq: 5 RTP-Info:url=rtsp://127.0.0.1:8554/test/stream=0; seq=15850;rtptime=946903593, url=rtsp://127.0.0.1:8554/test/stream=1; seq=15542;rtptime=150431586 Range: npt=0- Server: GStreamer RTSP server Session: s_kKG6GL8WrEhrP7 Date: Tue, 15 Oct 2013 17:22:57 GMT

Page 12: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

C->S PAUSE rtsp://127.0.0.1:8554/test RTSP/1.0 CSeq: 6 Session: s_kKG6GL8WrEhrP7 Date: Tue, 15 Oct 2013 17:23:02 GMT

S->C RTSP/1.0 200 OK CSeq: 6 Server: GStreamer RTSP server Session: s_kKG6GL8WrEhrP7 Date: Tue, 15 Oct 2013 17:23:02 GMT

Page 13: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

GstRTSPServer

Page 14: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

GstRTSPServer

GstRTSPClientGstRTSPClient

GstRTSPThreadPool

Page 15: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

GstRTSPServer

GstRTSPClientGstRTSPClientGstRTSPMountPoints

GstRTSPMediaFactoryGstRTSPMediaFactory

GstRTSPThreadPool

/test DESCRIBE

Page 16: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

GstRTSPServer

GstRTSPClientGstRTSPClientGstRTSPMountPoints

GstRTSPMediaFactoryGstRTSPMediaFactory

GstRTSPThreadPool

/test DESCRIBE

GstRTSPMedia

GstRTSPStreamGstRTSPStream

Page 17: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

GstRTSPServer

GstRTSPClientGstRTSPClientGstRTSPMountPoints

GstRTSPMediaFactoryGstRTSPMediaFactory

GstRTSPThreadPool

/test DESCRIBE

GstRTSPMedia

GstRTSPStreamGstRTSPStream

GstreamerPipeline

Page 18: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

GstRTSPServer

GstRTSPClientGstRTSPClientGstRTSPMountPoints

GstRTSPMediaFactoryGstRTSPMediaFactory

GstRTSPSdp

GstRTSPThreadPool

GstRTSPMedia

GstRTSPStreamGstRTSPStream

GstreamerPipeline

DESCRIBE

Page 19: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

GstRTSPServer

GstRTSPClientGstRTSPClientGstRTSPMountPoints

GstRTSPMediaFactoryGstRTSPMediaFactory

GstRTSPSdp

GstRTSPThreadPool

GstRTSPMedia

GstRTSPStreamGstRTSPStream

GstreamerPipeline

SETUP

Page 20: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

GstRTSPServer

GstRTSPClientGstRTSPClient

GstRTSPSessionPool

GstRTSPStreamGstRTSPSession

GstRTSPSdp

GstRTSPThreadPool

GstreamerPipeline

SETUPGstRTSPMountPoints

GstRTSPMediaFactoryGstRTSPMediaFactory

GstRTSPMedia

GstRTSPStreamGstRTSPStream

Page 21: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

GstRTSPServer

GstRTSPClientGstRTSPClientGstRTSPMountPoints

GstRTSPMediaFactoryGstRTSPMediaFactory GstRTSPSessionPool

GstRTSPStreamGstRTSPSession

GstRTSPSessionMedia

GstRTSPStreamTransportGstRTSPStreamTransportGstRTSPSdp

GstRTSPThreadPool

GstRTSPMedia

GstRTSPStreamGstRTSPStream

GstreamerPipeline

SETUP

Page 22: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

GstRTSPServer

GstRTSPClientGstRTSPClientGstRTSPMountPoints

GstRTSPMediaFactoryGstRTSPMediaFactory GstRTSPSessionPool

GstRTSPStreamGstRTSPSession

GstRTSPSessionMedia

GstRTSPStreamTransportGstRTSPStreamTransportGstRTSPSdp

GstRTSPThreadPool

GstRTSPMedia

GstRTSPStreamGstRTSPStream

GstreamerPipeline

PLAY

RTP packets

Page 23: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

GstRTSPServer

GstRTSPClientGstRTSPClientGstRTSPMountPoints

GstRTSPMediaFactoryGstRTSPMediaFactory GstRTSPSessionPool

GstRTSPStreamGstRTSPSession

GstRTSPSessionMedia

GstRTSPStreamTransportGstRTSPStreamTransportGstRTSPSdp

GstRTSPThreadPool

GstRTSPMedia

GstRTSPStreamGstRTSPStream

GstreamerPipeline

TEARDOWN

Page 24: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

GstRTSPServer

GstRTSPClientGstRTSPClientGstRTSPMountPoints

GstRTSPMediaFactoryGstRTSPMediaFactory

GstRTSPThreadPool

TEARDOWN

Page 25: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

GstRTSPServer

GstRTSPMountPoints

GstRTSPMediaFactoryGstRTSPMediaFactory

GstRTSPThreadPool

Page 26: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

exampes/test-ogg.c

Code Example

Page 27: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

● UDP unicast● UDP multicast (GstRTSPAddressPool)● TCP● RTSP over HTTP● RTSP over TLS

Transports

Page 28: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

● Factory for gst-launch like pipelines● Sharing of pipeline between receivers● Single/multithreaded via threadpool● Security

Other features

Page 29: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

Hooks call into GstRTSPAuth object

Security

Page 30: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

Authentication of user results in GstRTSPToken

– TLS– Basic auth

Security

Page 31: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

Objects have GstRTSPPermissions– Factory– Media

GstRTSPPermissions has role + properties

Security

Page 32: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

GstRTSPAuth checks if the user token has required permissions to access objects

Security

Page 33: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

Token can also contain other user specific things

– cgroup to use for pipeline– ...

Security

Page 34: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

Examples/test-video.c

Security

Page 35: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

Stabilize

Future

Page 36: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

Do a new release !

Future

Page 37: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

http://cgit.freedesktop.org/gstreamer/gst-rtsp-server/

Future

Page 38: Wim Taymans - GStreamer · 2013-11-15 · Wim Taymans 22 Oct 2013 – GStreamer Conference Edinburgh, UK. A Library to make it easy to develop RTSP servers

?