Creating an RTSP Server | Multimedia Help
Mục lục bài viết
Creating an RTSP Server
Introduction
An RTSP server can deliver several media streams simultaneously and independently of each other. The RTSP server listens for connection requests on a TCP/IP port. An RTSP client (like the LEAD RTSP Source Filter) can connect and issue RTSP commands to the server. The most common commands are:
- DESCRIBE – Gets information about a certain media stream.
- SETUP – Prepares to stream a certain media stream.
- PLAY – Plays a media stream.
- PAUSE – Pauses a media stream. The server does not send any more data, but keeps the stream alive for a certain amount of time (usually 60 seconds).
- TEARDOWN – Frees resources associated with a certain stream. Most servers do this automatically for streams that have not been playing for a certain amount of time (usually 60 seconds).
A server needs to respond to each of these commands.
The term “media stream” is used because the media being streamed can be a file or live stream. A live stream can be from a capture device, an MPEG-2 Transport Stream received over a UDP port, or an RTSP stream from another server. It can also be from a DVD image – anything that can be used to create an output file can also be used as a source media stream for an RTSP folder.
Typically, an RTSP server will stream all the files from a certain folder. However, not all compressions are supported by the RTSP streaming technology, so files with incompatible compressions need to be transcoded on the fly.
Currently, the LEAD RTSP Sink Filter supports both H264 and H265 video compressions, and AAC audio compression. Files with different video or audio compressions need to be transcoded to an RTSP-supported compression.
See the “RFC 2326 – Real Time Streaming Protocol (RTSP)” standard for more information on the RTSP specification.
Security
RTSP servers provide a way to restrict access to content from unauthorized users. RTSP servers can optionally use authentication to identify users and then allow access only to authorized users. There are two authentication modes: Basic and Digest. In either mode, users have to enter a username and password before they can gain access to a media stream. Administrators can use different authentication methods and give different access rights to each media stream or the same access rights can be applied to all media streams.
High-Level Implementation
The LEADTOOLS Multimedia SDK provides high-level objects that make it very easy to implement an RTSP server:
Examples
Suppose you want an RTSP server that streams all the files from “c:\MyFiles”, and you want the server to listen on address 127.0.0.1 at port 554 (the default RTSP port). This RTSP server handles all RTSP URLs with the format, rtsp://127.0.0.1/RelativeURL
, as requests to stream the file c:\MyFiles\RelativeURL
. The C# code for a simple server would look like the following code:
C#
// Error checking is suppressed here for brevity
RTSPServer _server;
void
SetupRTSPServer(){
// create the server instance
_server =
new
RTSPServer();
// specify c:\MyFiles as the source folder
_server.SetSourceFolder(0,
@"c:\MyFiles"
);
// will listen on 127.0.0.1
_server.TargetAddress =
"127.0.0.1"
;
// start listening on port 554
_server.StartServer(554);
}
Here are some examples of using that server to stream files, along with the corresponding URLs:
-
Case 1: Stream a file from the root of the source folders
Connect with the LEAD RTSP Source and stream
c:\MyFiles\file1.mpg
using the following URL:rtsp://127.0.0.1/file1.mpg
When the LEAD RTSP server receives this URL, it will look for file1.mpg in all of the source folders. In this case, there is only one folder, so it will look for
c:\MyFiles\file1.mpg
-
Case 2: Stream a file
It is possible to use the same server to also stream from a live video capture device. All that is necessary is to run a capture from the video and audio capture that you have, and write it to a DVR file in
c:\Myfiles
. The simplest way is to run the DVR demo, setting the output file to be something likec:\MyFiles\LiveCapture2.lbl
. To do this, use the RTSP Source Filter to stream the following URL:rtsp://127.0.0.1/LiveCapture2.lbl
-
Case 3: Re-stream an MPEG2 Transport UDP stream
Run the MPEG-2 Transport Stream and set its DVR settings to use
c:\MyFiles\UDPStream3.lbl
. Then use the following URL in the RTSP Source filter:rtsp://127.0.0.1/UDPStream3.lbl
-
Case 4: Stream a file from a subfolder of one of the source folders
If a subfolder is specified in the RTSP URL, the server will automatically search in subfolders. For example, you might want to keep the DVR files in different subfolders or you may want to reduce the number of files in the root folders.
To stream the file
c:\MyFiles\MySubfolder\file4.avi
, use the following RTSP URL:rtsp://127.0.0.1/MySubfolder/file4.avi
. Note that the backslash that separates the source subfolder and filename is translated into a forward slash in the RTSP URL. -
Case 5: Stream a file that is outside the source folders
Suppose you want to stream a file on another disk (for example,
f:\abc\def.mkv
). In this case, create a link calledc:\MyFiles\MyLink5.lnk
and make it point tof:\abc\def.mkv
. Next, use the following URL:rtsp://127.0.0.1/MySubfolder/MyLink5.lnk
This applies to DVDs as well: you can create a link to
d:\VIDEO_TS\VIDEO_TS.IFO
calledc:\MyFiles\MyDvd5.lnk
. This makes it possible to stream it using the following URL:rtsp://127.0.0.1/MySubfolder/MyDvd5.lnk
. In this case, keep in mind that the DVD will be recompressed on the fly and DVDs take time to start playing. Consequently, a timeout may need to be specified on the RTSP URL to instruct the RTSP filter to wait for the DVD to begin converting. The following URL would tell the RTSP server to wait 10 seconds before giving up:rtsp://127.0.0.1/MySubfolder/MyDvd5.lnk?Timeout=10
Streaming Live DVR
When high-level RTSP objects are streaming a growing DVR file, they will start streaming from the live position. This makes it possible to implement live streaming with the RTSP server. When streaming live DVR, all clients see the same video, regardless of how long ago they connected to the RTSP server.
If you are streaming a DVR file that is not growing anymore, the clients will start playing the video from the beginning of the DVR buffer.
Automatic Recompression in High-Level RTSP Objects
When re-streaming an MPEG-2 Transport UDP stream, it is best to stream it as a DVR file because the LEAD MPEG-2 Transport UDP Source filter uses DVR files to store the data.