GstRtspSink - Dual H264 Video Streaming: Difference between revisions
No edit summary |
(→VLC) |
||
(20 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{GstRtspSink | {{GstRtspSink/Head|previous=Advanced examples|next=Audio+Video_Streaming|metakeywords=}} | ||
This wiki provides a dual H264 streaming example using GstRtspSink. | This wiki provides a dual H264 streaming example using GstRtspSink. | ||
<br> | |||
__TOC__ | <br> | ||
<table> | |||
<tr> | |||
<td><div class="clear; float:right">__TOC__</div></td> | |||
<td valign=top> | |||
{{GStreamer debug}} | |||
</td> | |||
</table> | |||
== GstRtspSink Pipeline == | == GstRtspSink Pipeline == | ||
Line 11: | Line 19: | ||
PORT=12345 | PORT=12345 | ||
MAPPING1=/stream1 | MAPPING1=/stream1 | ||
MAPPING2=/stream2 | |||
gst-launch-1.0 rtspsink name=sink service=$PORT \ | gst-launch-1.0 rtspsink name=sink service=$PORT \ | ||
v4l2src ! x264enc ! capsfilter caps="video/x-h264, mapping=${MAPPING1}" ! sink. | v4l2src ! queue ! videoconvert ! x264enc tune=zerolatency ! h264parse ! capsfilter caps="video/x-h264, mapping=${MAPPING1}" ! sink. \ | ||
videotestsrc ! x264enc ! capsfilter caps="video/x-h264, mapping=${MAPPING2}" ! sink. | videotestsrc ! x264enc tune=zerolatency ! h264parse ! capsfilter caps="video/x-h264, mapping=${MAPPING2}" ! sink. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== RTSP Clients == | == RTSP Clients == | ||
Line 22: | Line 30: | ||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
IP_ADDRESS= | IP_ADDRESS=127.0.0.1 | ||
PORT=12345 | PORT=12345 | ||
MAPPING1= | MAPPING1=stream1 | ||
MAPPING2= | MAPPING2=stream2 | ||
# Stream 1 | # Stream 1 | ||
Line 37: | Line 45: | ||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
IP_ADDRESS= | IP_ADDRESS=127.0.0.1 | ||
PORT=12345 | PORT=12345 | ||
MAPPING1= | MAPPING1=stream1 | ||
MAPPING2= | MAPPING2=stream2 | ||
# Stream 1 | # Stream 1 | ||
gst-launch-1.0 rtspsrc location=rtsp://${IP_ADDRESS}:${PORT}/${MAPPING1} ! rtph264depay ! avdec_h264 ! queue ! autovideosink | gst-launch-1.0 rtspsrc location=rtsp://${IP_ADDRESS}:${PORT}/${MAPPING1} ! rtph264depay ! h264parse ! avdec_h264 ! queue ! autovideosink | ||
# Stream 2 | # Stream 2 | ||
gst-launch-1.0 rtspsrc location=rtsp://${IP_ADDRESS}:${PORT}/${MAPPING2} ! rtph264depay ! avdec_h264 ! queue ! autovideosink | gst-launch-1.0 rtspsrc location=rtsp://${IP_ADDRESS}:${PORT}/${MAPPING2} ! rtph264depay ! h264parse ! avdec_h264 ! queue ! autovideosink | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 52: | Line 60: | ||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
IP_ADDRESS= | IP_ADDRESS=127.0.0.1 | ||
PORT=12345 | PORT=12345 | ||
MAPPING1= | MAPPING1=stream1 | ||
MAPPING2= | MAPPING2=stream2 | ||
# Stream 1 | # Stream 1 | ||
Line 67: | Line 75: | ||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
IP_ADDRESS= | IP_ADDRESS=127.0.0.1 | ||
PORT=12345 | PORT=12345 | ||
MAPPING1= | MAPPING1=stream1 | ||
MAPPING2= | MAPPING2=stream2 | ||
# Stream 1 | # Stream 1 | ||
Line 78: | Line 86: | ||
totem rtsp://${IP_ADDRESS}:${PORT}/${MAPPING2} | totem rtsp://${IP_ADDRESS}:${PORT}/${MAPPING2} | ||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | |||
{{GstRtspSink/Foot|previous=Advanced examples|next=Audio+Video_Streaming}} |
Latest revision as of 21:28, 25 April 2024
This wiki provides a dual H264 streaming example using GstRtspSink.
|
GstRtspSink Pipeline
The following pipeline sends two different H264 streams through two different mappings: stream1 and stream2. Any of them can be accessed independently.
PORT=12345 MAPPING1=/stream1 MAPPING2=/stream2 gst-launch-1.0 rtspsink name=sink service=$PORT \ v4l2src ! queue ! videoconvert ! x264enc tune=zerolatency ! h264parse ! capsfilter caps="video/x-h264, mapping=${MAPPING1}" ! sink. \ videotestsrc ! x264enc tune=zerolatency ! h264parse ! capsfilter caps="video/x-h264, mapping=${MAPPING2}" ! sink.
RTSP Clients
VLC
IP_ADDRESS=127.0.0.1 PORT=12345 MAPPING1=stream1 MAPPING2=stream2 # Stream 1 vlc rtsp://${IP_ADDRESS}:${PORT}/${MAPPING1} # Stream 2 vlc rtsp://${IP_ADDRESS}:${PORT}/${MAPPING2}
GStreamer
IP_ADDRESS=127.0.0.1 PORT=12345 MAPPING1=stream1 MAPPING2=stream2 # Stream 1 gst-launch-1.0 rtspsrc location=rtsp://${IP_ADDRESS}:${PORT}/${MAPPING1} ! rtph264depay ! h264parse ! avdec_h264 ! queue ! autovideosink # Stream 2 gst-launch-1.0 rtspsrc location=rtsp://${IP_ADDRESS}:${PORT}/${MAPPING2} ! rtph264depay ! h264parse ! avdec_h264 ! queue ! autovideosink
MPlayer
IP_ADDRESS=127.0.0.1 PORT=12345 MAPPING1=stream1 MAPPING2=stream2 # Stream 1 mplayer rtsp://${IP_ADDRESS}:${PORT}/${MAPPING1} # Stream 2 mplayer rtsp://${IP_ADDRESS}:${PORT}/${MAPPING2}
Totem
IP_ADDRESS=127.0.0.1 PORT=12345 MAPPING1=stream1 MAPPING2=stream2 # Stream 1 totem rtsp://${IP_ADDRESS}:${PORT}/${MAPPING1} # Stream 2 totem rtsp://${IP_ADDRESS}:${PORT}/${MAPPING2}